Struts2之保存登录信息

开发网站时,经常有这样的问题,登陆成功页面需要知道登陆页面登陆的用户信息,才能根据不同的用户不同的权限控制他们可以访问哪些页面。

为了解决这个问题,就需要把登陆信息保存在服务器的内存中,供多个页面共享。这片服务器的内存在JSP和Servlet里就是Session对象。我们只要在用户登陆成功后把用户信息保存在Session对象中就可以了。那么怎么在Action中访问Session对象呢?

在Struts1.x中,Action中execute的方法的参数包含代表当前请求的Request对象,可以从Requset对象中取得Session对象。

在Struts2中,Action已经不包含Request等信息,Action完全可以不继承任何类,虽然说这样做肯定有它的好处,但确实给我们带来了麻烦,怎么办呢?

其实很简单,查找一下Struts2的帮助我们就可以找到答案(struts-2.0.6\docs\docs\how-do-we-get-access-to-the-session.html)。

有两种方法,我们才用比较简单的,通过ActionContext类的静态方法getContext().getSession();取得Session对象。

和ActionSupport一样,我们需要先导入com.opensymphony.xwork2包下的ActionContext类:
在Login.java的import com.opensymphony.xwork2.ActionSupport;上面添加:
import com.opensymphony.xwork2.ActionContext;导入包。

然后在execute()方法的return SUCCESS;代码前加入如下代码:

Map attibutes = ActionContext.getContext().getSession(); attibutes.put("username", username); attibutes.put("password", password);



这样我们就把登陆的用户名和密码保存在了Session对象中。

为了测试,可以在Success.jsp中添加如下代码:

<br>登陆用户名:<s:property value="#session.username"/> <br>登陆密 码:<s:property value="#session.password"/>


或者

${sessionScope.username }

${sessionScope.对象.username}


部署项目,启动Tomcat,然后在浏览器中输入:

http://localhost:8080/xxx/Login!input.action
分别输入用户名和密码为scott和tiger,单击Submit提交网页,如果在Success.jsp中显示如下信息:

登录成功.....................
登陆用户名:scott
登陆密 码:tiger

则说明成功了^_^

下面详细介绍

Struts2中访问request,session,和application对象

--


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值