Struts2之Session

以一个简单的例子说明,登录跳转并显示用户信息和当前登录的人数,退出时登陆人数-1 
登录的用户信息保存在Application和Session中,然后在JSP页面中读取信息
Struts2 的Action中若希望访问Session对象,可采用两种方式:   
 1、从ActionContext中获取;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
public class UserAction{
	private String username;
	private String password;
	public void setPassword(String password) {
		this.password = password;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String execute(){
		session.put("username", username);
                //向当前ActionContext对象中存入名值对信息
		session.put("password", password);
		return "login-success";
	}
	private Map<String, Object> session=ActionContext.getContext().getSession;
	public void setSession(Map<String, Object> session) {
		// 获取Session。通过实现SessionAware接口
		this.session=session;
	}
}

2、实现SessionAware接口。
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware;

public class UserAction implements SessionAware,ApplicationAware{
	private String username;
	private String password;
	public void setPassword(String password) {
		this.password = password;
	}
	public void setUsername(String username) {
		this.username = username;
	}
        public String Logout(){
		//1、在线人数-1:获取在线人数,若数量还>0,则-1
		Integer count=(Integer) application.get("count");
		if(count!=null&&count>0){
			count--;
			application.put("count", count);
		}
		//2、session失效:强转为SessionMap,调用invalidate方法
		((SessionMap)session).invalidate();
		return "logout-success";
	}
	public String execute(){
	//  把用户信息存入Session域中
	//  1、获取Session。通过实现SessionAware接口  implements
	 
	//2、获取登录信息。通过在Action中添加setter方法
		
	// 3、把用户信息存入Session域中
		session.put("username", username);
		session.put("password", password);
	//在线人数+1
	//1、获取当前的在线人数,从application中获取  implements
		Integer count=(Integer) application.get("count");
		if(count==null){
			count=0;
		}
	//2、使当前的在线人数+1
		count++;
	
		application.put("count", count);
		return "login-success";
	}
	private Map<String, Object> session;
	public void setSession(Map<String, Object> session) {
		// 1、获取Session。通过实现SessionAware接口
		this.session=session;
	}
	private Map<String, Object> application;
	public void setApplication(Map<String, Object> application) {
		// TODO Auto-generated method stub
		this.application=application;
	}
}

struts.xml
<action name="login-ui">
    	<result>/pages/login.jsp</result>
</action>
<action name="user-Login" class="com.struts2_login.actions.UserAction">
    	<result name="login-success">/pages/login-success.jsp</result>
</action>
<action name="Logout" class="com.struts2_login.actions.UserAction" method="Logout">
    	<result name="logout-success">/pages/login.jsp</result>
</action>

登录界面login.jsp
<body>
   <form action="user-Login" method="post"> 
   		username: <input type="text" name="username"/> <br/>
   		password: <input type="text" name="password">  <br/>
   		<input type="submit" value="Login"/>
   </form>
</body>

登录成功跳转的页面login-success.jsp
<body>
    Welcome:${session.username } <br> 
    Count On Line:${application.count } <br/>
    <a href="Logout">Logout</a>
</body>

你可能感兴趣的:(java,struts2,session)