Struts2 学习之路(二):2.2 完成简单的统计用户在线人数小功能

实时更新用户在线人数(通过将用户人数数据放入application的域属性里实现)
  • 用户登录后,显示用户名和当前在线人数+1
  • 用户注销后,当前在线人数-1
  • 代码
    1.前台请求页面
    <a href="testServletAware.action">test servetAware</a>
    <br><br>
    <a href="user-loginUI.do">user loginUI</a>

2.struts.xml

<!-- 使用struts2自带的默认Action类处理 -->
        <action name="user-loginUI">
            <result>/login.jsp</result>
        </action>
        <action name="login" class="cn.zc.cris.user.login.UserLogin" method="login">
            <result name="login-success">/login-success.jsp</result>
        </action>
        <action name="logout" class="cn.zc.cris.user.login.UserLogin" method="logout">
            <result name="logout-success">/index.jsp</result>
        </action>

3.后台处理action

public class UserLogin implements SessionAware,ApplicationAware{
    //需要注入的属性,都是通过set方法进行注入,由struts2框架自动注入,我们需要定义属性手工接收
    private Map<String, Object> application;
    private Map<String, Object> session;
    private String name;

    //用户登录成功
    public String login() {
        //1.将登录用户名字放入session中,需要在页面进行显示
        this.session.put("name", this.name);

        //2.需要对application中的用户数量属性+1
        Integer count = (Integer) this.application.get("count");
        if(count == null || count <0) {
            count = 0;
        }
        count++;
        application.put("count", count);
        return "login-success";
    }

    //用户登出
    public String logout() {
        //1. 将application中的count数量-1
        Integer count = (Integer) this.application.get("count");
        if(count > 0) {
            count--;
            this.application.put("count", count);
        }
        //2. 将当前session失效
        ((SessionMap<String, Object>) session).invalidate();

        return "logout-success";
    }

    @Override
    public void setApplication(Map<String, Object> application) {
        this.application = application;
    }
    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
    public void setName(String name) {
        this.name = name;
    }
}

4.用户登录成功并显示当前在线人数页面

    Welcome:${sessionScope.name }!
    <br><br>
    Count on Line:${applicationScope.count }
    <br><br>
    <a href="logout.do">logout</a>
获取源代码请点击我
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值