1. 程式人生 > >Struts2 學習之路(二):2.2 完成簡單的統計使用者線上人數小功能

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>