Struts2 學習之路(二):2.2 完成簡單的統計使用者線上人數小功能
阿新 • • 發佈:2019-01-07
實時更新使用者線上人數(通過將使用者人數資料放入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>