四个有用的Java过滤器(转)
一、使浏览器不缓存页面的过滤器
import
javax.servlet.*;
import
javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ForceNoCacheFilter implements Filter
{
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain filterChain) throws IOException,
ServletException
{
((HttpServletResponse)
response).setHeader("Cache-Control","no-cache");
((HttpServletResponse)
response).setHeader("Pragma","no-cache");
((HttpServletResponse)
response).setDateHeader ("Expires",
-1);
filterChain.doFilter(request,
response);
}
public void destroy()
{
}
public
void init(FilterConfig filterConfig) throws
ServletException
{
}
}
二、检测用户是否登陆的过滤器
import
javax.servlet.*;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.io.IOException;
public class
CheckLoginFilter
implements Filter
{
protected
FilterConfig filterConfig =
null;
private
String redirectURL =
null;
private
List notCheckURLList = new
ArrayList();
private
String sessionKey =
null;
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain) throws
IOException,
ServletException
{
HttpServletRequest
request = (HttpServletRequest)
servletRequest;
HttpServletResponse
response = (HttpServletResponse)
servletResponse;
HttpSession
session =
request.getSession();
if(sessionKey ==
null)
{
filterChain.doFilter(request,
response);
return;
}
if((!checkRequestURIIntNotFilterList(request))
&& session.getAttribute(sessionKey)
== null)
{
response.sendRedirect(request.getContextPath()
+ redirectURL);
return;
}
filterChain.doFilter(servletRequest,
servletResponse);
}
public void destroy()
{
notCheckURLList.clear();
}
private boolean
checkRequestURIIntNotFilterList(HttpServletRequest
request)
{
String uri =
request.getServletPath() + (request.getPathInfo() == null ? "" :
request.getPathInfo());
return
notCheckURLList.contains(uri);
}
public void init(FilterConfig filterConfig) throws
ServletException
{
this.filterConfig =
filterConfig;
redirectURL =
filterConfig.getInitParameter("redirectURL");
sessionKey =
filterConfig.getInitParameter("checkSessionKey");
String
notCheckURLListStr =
filterConfig.getInitParameter("notCheckURLList");
if(notCheckURLListStr
!= null)
{
StringTokenizer
st = new StringTokenizer(notCheckURLListStr,
";");
notCheckURLList.clear();
while(st.hasMoreTokens())
{
notCheckURLList.add(st.nextToken());
}
}
java源动力,java开源社区,http://www.web-java.com
}
}
三、字符编码的过滤器
import
javax.servlet.*;
import java.io.IOException;
public class
CharacterEncodingFilter
implements Filter
{
protected FilterConfig filterConfig =
null;
protected String encoding =
"";
public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain) throws IOException,
ServletException
{
if(encoding
!= null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest,
servletResponse);
}
public void destroy()
{
filterConfig =
null;
encoding =
null;
}
public
void init(FilterConfig filterConfig) throws
ServletException
{
this.filterConfig
= filterConfig;
this.encoding
=
filterConfig.getInitParameter("encoding");
}
}
四、资源保护过滤器
package
catalog.view.util;
import
javax.servlet.Filter;
import
javax.servlet.FilterConfig;
import
javax.servlet.ServletRequest;
import
javax.servlet.ServletResponse;
import
javax.servlet.FilterChain;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
//
import
org.apache.commons.logging.Log;
import
org.apache.commons.logging.LogFactory;
public class SecurityFilter implements Filter
{
//the login page uri
private static final String LOGIN_PAGE_URI =
"login.jsf";
//the logger object
private Log logger =
LogFactory.getLog(this.getClass());
//a set of restricted
resources
private Set
restrictedResources;
public void init(FilterConfig filterConfig) throws ServletException
{
this.restrictedResources = new
HashSet();
this.restrictedResources.add("/createProduct.jsf");
this.restrictedResources.add("/editProduct.jsf");
this.restrictedResources.add("/productList.jsf");
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain)
throws IOException,
ServletException {
this.logger.debug("doFilter");
String contextPath =
((HttpServletRequest)req).getContextPath();
String requestUri =
((HttpServletRequest)req).getRequestURI();
this.logger.debug("contextPath = "
+ contextPath);
this.logger.debug("requestUri = " +
requestUri);
if (this.contains(requestUri,
contextPath) &&
!this.authorize((HttpServletRequest)req))
{
this.logger.debug("authorization
failed");
((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req,
res);
}
else
{
this.logger.debug("authorization
succeeded");
浙公网安备 33010602011771号