UserAction
package action;
import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
public class UserAction implements Action{
private String username;
private String password;
public UserAction() {
super();
}
private UserAction(String username, String password) {
super();
this.username = username;
this.password = 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;
}
@Override
public String execute() throws Exception {
System.out.println("初始化成功!");
return "success";
}
public String checkLogin(){
ActionContext ac = ActionContext.getContext();
Map<String,Object> session = ac.getSession();
ValueStack vs = ac.getValueStack();
System.out.println(vs.size()); //但是为什么vs.size()打印的是2 ???
ac.put("aaa", "bbb"); //目的是到页面上根据取回bbb
return "success";
}
}
页面上面取出的方法是(记得先导入标签):
<s:property value="#aaa" />
登陆的判断:
login.jsp
<body>
<font color="red" size="6"><s:property value="#request.errorMsg" /></font><br/>
<form action="demo!checkLogin" method="post"><!--这里所指的demo是UserAction-->
用户名:<input name="username"/><br />
密码:<input name="password"/><br />
<input type="submit" value="登陆" />
</form>
</body>
UserAcion
public String checkLogin(){
ActionContext ac = ActionContext.getContext();
Map<String,Object> session = ac.getSession();
ValueStack vs = ac.getValueStack();
System.out.println(vs.size()); //为什么总是打印2 哥相当费解!
ac.put("aaa", "bbb"); //目的是到页面上根据取回bbb
if("xiaogao".equals(username)){
session.put("username",username);
return "welcome";
}else{
Map<String,Object> request = (Map<String, Object>)ac.get("request");//这句话不太了解,有待研究
request.put("errorMsg", "对不起,你输入的用户名或者密码错误!");
return "login";
}
}
welcome.jsp
<body>
welcome<br/>
<s:property value="#attr.username" /><br /><!-- 因为attr包含session,所以可以取 -->
<s:property value="#session.username" /><br />
<hr />
${sessionScope.username }<br/>
${session.username }<br/>
${attr.username }<br/>
</body>
<!--
1. 获取 action中的属性
el: ${username}
ongl: <s:property value="username" />
2. 三个作用域
el: ${sessionScope.name} pageScope requestScope sessionScope applicationScope
ongl: <s:property value="#request.username" />
3. 表单参数:parameters
el: ${param.username} ${paramValues.ids}
ongl: <s:property value="#parameters.username" />
4. ac容器自定义的 key
el: ${ccc}
ongl: <s:property value="#ccc" />
-->
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>
<constant name="struts.i18n.encoding" value="gbk" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results><!--据说这个东西是先查找action后查找的,需要考证。-->
<result name="login">/login.jsp</result>
<result name="welcome">/welcome.jsp</result>
</global-results>
<action name="index" class="action.UserAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>