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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值