今天做了一个web工程小实验,用来帮助理解OGNL,EL,值栈的相关概念,以及struts2标签中value属性的对象查找范围等等。
web工程很简单,只有一个类:
package org.action; public class LoginAction { private String username; private String password; public String getUsername(){ return username; } public void setUsername(String username){ this.username=username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } public String execute(){ return "success"; } }
web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
struts.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="default" extends="struts-default"> <action name="login" class="org.action.LoginAction"> <result name="success">/welcome.jsp</result> </action> </package> </struts>
Login.jsp如下:
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登录页面</title> </head> <body> <form action="login.action" method="post"> <table align="center" border=1 width="300" bgcolor=#F5FFE1> <tr><td colspan="2" align="center" width="250" bgcolor="#CCCCFF">用户登录界面</td></tr> <tr><td width="50">姓名:</td><td><input type="text" name="username"/></td></tr> <tr><td width="50">密码:</td><td><input type="password" name="password" size=22/></td></tr> <tr><td align="center" colspan=2><input type="submit" value="登录" /> <input type="reset" value="重置" /></td></tr> </table> </form> </body> </html>
welcome.jsp如下:
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>欢迎界面</title> </head> <body bgcolor=#F5FFE1> <s:set name="var1" value="username" scope="session"/> 欢迎您! ${var1}<br /> 哈哈 %{var1}<br /> 哈哈 #var1<br /> 哈哈 <s:property value="var1" /><br /> 哈哈 <s:property value="%{var1}" /><br /> 哈哈 <s:property value="#var1" /><br /> 哈哈 <s:property value="%{#var1}" /><br /> 哈哈 <s:property value="%{#session.var1}" /><br /> 哈哈 <s:property value="#root.var1" /><br /> </body> </html>
最后不要忘了在工程中添加struts2所需的5个jar包
下面测试中会变换welcome.jsp中body部分的代码,用户名输入bbb。
测试取值栈中的变量username的值
代码:
结果:
测试<s:set>标签的默认赋值范围
代码:
结果:
测试取session中变量的情况
代码:
结果: