今天做了一个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中变量的情况
代码:
结果: