1. 程式人生 > >struts2學習筆記(二)—— 獲取登入資訊及計算線上人數

struts2學習筆記(二)—— 獲取登入資訊及計算線上人數

package com.lewa.action;

import java.util.Map;

import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware;

public class LoginAction implements SessionAware,ApplicationAware{
	
	private static final String SUCCESS = "success";
	
	private static final String LOGOUT="logout";
	//與表單域中的屬性相對應
	private String username;
	//JavaBean-style 
	public void setUsername(String username){
		this.username=username;
	}
	
	public String execute(){
		//將使用者資訊儲存到Session中
		//1.獲取Session,通過SessionAware介面實現
		
		//2.獲取登入資訊
		
		//3.把登入資訊儲存到Session中
		session.put("username", username);
		
		//線上人數 +1
		//1.獲取當前線上人數,從Application中獲取
		Integer count=(Integer) application.get("count");
		if(count==null){
			count=0;
		}
		
		//使當前線上人數 +1
		count++;
		application.put("count", count);
		return SUCCESS;
	}
	
	public String Logout(){
		//線上人數 -1
		//1.獲取線上人數
		Integer count=(Integer) application.get("count");
		
		//2.在線上人數>0的情況下 -1
		if(count!=null && count!=0){
			count--;
			application.put("count", count);
		}
		
		//使Session失效
		((SessionMap)session).invalidate();
		
		return LOGOUT;
	}
	private Map<String,Object> session;
	@Override
	public void setSession(Map<String, Object> session) {
		// TODO Auto-generated method stub
		this.session = session;
	}
	
	private Map<String,Object> application;
	@Override
	public void setApplication(Map<String, Object> application) {
		// TODO Auto-generated method stub
		this.application = application;
	}
}

      4.在struts.xml中配置Action