ActionContext

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>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值