userinfo:hreadLocal使用 --用于保存每个登录用户的信息-userInfo

有时我们需要知道每个用户登录信息般我们是将登录用户信息是保存在session范围内而我们在DAO中要是使用用户某些信息比哪录录ID单位ID的类信息进行过滤时需要从从control 层传到

sevice层再传到DAO层比较麻烦所以我们利用threadLocal 类来解决这方案做到在任何类中可以直接得到session中类型具体实现思路是:用threadLocal 来保存userInfo信息在需要使用类中只需要 LocalThreadBean().getUserInfo就可以得到用户登录信息了

首先建立个bean:

/**
*〖文件名〗: LocalThreadBean .java<br>
*〖功能模块〗:XXX系统<br>
*〖目〗: <br>
*〖开发者〗: <br>
*〖创建日期〗: 2009-7-28<br>
*〖版本〗: 1.00<br>
*〖版权信息〗:XXXX<br>
*〖更改记录〗: 更改时间、更改人、更改原因、更改内容<br>
*/
package com.ygsoft.util;

import java.io.Serializable;

import javax.servlet.http.HttpServletRequest;

import com.jframe.mf.model.UserInfo;

public LocalThreadBean implements Serializable{
private ThreadLocal<Object> threadLocal = ThreadLocal<Object>;

public HttpServletRequest getContext{
(HttpServletRequest)threadLocal.get;
}
public void Context(HttpServletRequest request){
threadLocal.(request);
}

public void cleanContext{
threadLocal.(null);
}
public UserInfo getUserInfo
{
(UserInfo)this.getContext.getSession.getAttribute("UserData");
}
}
然后在系统过滤器中配置下:

package com.jframe.http;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ygsoft.basic.dao.HibernateDaoSupport;
import com.ygsoft.util.LocalThreadBean;

public EncodingFilter
implements Filter
{

private FilterConfig config;
private String targetEncoding;
private LocalThreadBean localThreadBean;
public EncodingFilter
{
config = null;
targetEncoding = "GB18030";
localThreadBean = LocalThreadBean;

}

public void init(FilterConfig config)
throws ServletException
{
this.config = config;
try
{
String temp = config.getInitParameter("encoding");
(temp != null)
targetEncoding = temp;
}
catch(Exception exception) { }
}

public void destroy
{
config = null;
targetEncoding = null;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest hreq = (HttpServletRequest)request;
HttpServletResponse hres = (HttpServletResponse)response;
request.CharacterEncoding(targetEncoding);
chain.doFilter(request, response);
LocalThreadBean.Context((HttpServletRequest)request);

// 关闭遗漏 Session
HibernateDaoSupport.closeSessionList;
}
}
当然还需要在web.xml中加上此过滤bean了

Tags:  如何保存登录状态 如何保存登录名 userinfo.exe userinfo

延伸阅读

最新评论

发表评论