<filter>
<filter-name>InterceptorFilter</filter-name>
<filter-class>com.fx.anniversary.core.filter.InterceptorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>InterceptorFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
public class InterceptorFilter implements Filter{
publicvoiddestroy(){
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{
HttpServletRequesthttpRequest=(HttpServletRequest)request;
HttpServletResponsehttpResponse=(HttpServletResponse)response;
InterceptorContext.setRequest(httpRequest);
InterceptorContext.setResponse(httpResponse);
try{
chain.doFilter(request,
response);
}finally{
//不管有木有出現異常,finally塊中代碼都會執行;在這裏,相當於只服務於當前請求。
InterceptorContext.removeRequest();
InterceptorContext.removeResponse();
}
}
public void init(FilterConfigfilterConfig)throwsServletException{
}
}
public class InterceptorContext{
private static ThreadLocal<httpservletrequest> _request = newThreadLocal<httpservletrequest>();
private static ThreadLocal<httpservletresponse> _response = newThreadLocal<httpservletresponse>();
publicstaticvoidsetRequest(HttpServletRequestrequest){
_request.set(request);
}
public static HttpServletRequestgetRequest(){
HttpServletRequestrequest=_request.get();returnrequest;
}
public static void removeRequest(){
_request.remove();
}
public static void setResponse(HttpServletResponseresponse){
_response.set(response);
}
public static HttpServletResponsegetResponse(){
HttpServletResponseresponse=_response.get();
return response;
}
public static void removeResponse(){
_response.remove();
}
}
public String getAttribute(Stringkey){
HttpServletRequestrequest = InterceptorContext.getRequest();
Cookie[]cookies=request.getCookies();
if(cookies!=null){
for(Cookie cookie: cookies){
if(cookie.getName().equals(key)){
return cookie.getValue();
}
}
}
return"";
}
@Override
public void setAttribute(String key,String value){
HttpServletResponse response=InterceptorContext.getResponse();
Cookiecookie=newCookie(key,value);
response.addCookie(cookie);
}