preparesessioninterceptor.java

来自「一个成熟的论坛」· Java 代码 · 共 71 行

JAVA
71
字号
package com.singnet.interpetor;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.ActionInvocation;
import com.opensymphony.xwork.interceptor.Interceptor;
import com.singnet.bean.NsUser;
import com.singnet.data.Constants;
import com.singnet.data.OnlineBean;
import com.singnet.dwr.INsUserProxy;
import com.singnet.util.CookieUtil;
import com.singnet.util.TimeComputeUtils;

public class PrepareSessionInterceptor implements Interceptor
{
	private INsUserProxy  				nsUserProxy;

	public void destroy()
	{
		// TODO Auto-generated method stub

	}

	public void init()
	{
		// TODO Auto-generated method stub

	}

	@SuppressWarnings("unchecked")
	public String intercept(ActionInvocation invocation) throws Exception
	{
		// TODO Auto-generated method stub
		Map session = invocation.getInvocationContext().getSession();
		if(session.get(Constants.SESSION_UID) == null){
			HttpServletRequest req = ServletActionContext.getRequest();		
			String uid = CookieUtil.getCookieValue(req, "userID");
			
			if(uid != null) {
				System.out.println("User ID: " + uid);
				
				session.put(Constants.SESSION_UID, uid);
				NsUser user = nsUserProxy.loadUser(uid);
				session.put(Constants.SESSION_UNAME, user.getUserName());				
				nsUserProxy.initUserInfo(user);
				if(!TimeComputeUtils.isAlreadyOnline(uid)) {
					OnlineBean olb = new OnlineBean();
					olb.setUserID(uid);
					olb.setStartTime(System.currentTimeMillis());
					TimeComputeUtils.ONLINE_LIST.add(olb);
					System.out.println("用户ID为" + uid + "已经处于在线状态");
				}
			}
			else {
				System.out.println("无法识别的错误!");
			}
		}
		return invocation.invoke();
	}

	public void setNsUserProxy(INsUserProxy nsUserProxy)
	{
		this.nsUserProxy = nsUserProxy;
	}

	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?