一、字符编码的过滤器
Servlet过滤器大全_apacheimport javax.servlet.*
Servlet过滤器大全_apache
import java.io.IOException; 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
/** *//** 
Servlet过滤器大全_java_06* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题 
Servlet过滤器大全_apache_07
*/
 
Servlet过滤器大全_apache
public class CharacterEncodingFilter 
Servlet过滤器大全_apache
implements Filter 
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
protected FilterConfig filterConfig = null
Servlet过滤器大全_java_06
protected String encoding = ""
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
if(encoding != null
Servlet过滤器大全_java_06servletRequest.setCharacterEncoding(encoding); 
Servlet过滤器大全_java_06filterChain.doFilter(servletRequest, servletResponse); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void destroy() 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06filterConfig 
= null
Servlet过滤器大全_java_06encoding 
= null
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void init(FilterConfig filterConfig) throws ServletException 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.filterConfig = filterConfig; 
Servlet过滤器大全_java_06
this.encoding = filterConfig.getInitParameter("encoding"); 
Servlet过滤器大全_java_06
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_07}
 
Servlet过滤器大全_apache

二、使浏览器不缓存页面的过滤器
Servlet过滤器大全_apacheimport javax.servlet.*
Servlet过滤器大全_apache
import javax.servlet.http.HttpServletResponse; 
Servlet过滤器大全_apache
import java.io.IOException; 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
/** *//** 
Servlet过滤器大全_java_06* 用于的使 Browser 不缓存页面的过滤器 
Servlet过滤器大全_apache_07
*/
 
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
public class ForceNoCacheFilter implements Filter Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06((HttpServletResponse) response).setHeader(
"Cache-Control","no-cache"); 
Servlet过滤器大全_java_06((HttpServletResponse) response).setHeader(
"Pragma","no-cache"); 
Servlet过滤器大全_java_06((HttpServletResponse) response).setDateHeader (
"Expires"-1); 
Servlet过滤器大全_java_06filterChain.doFilter(request, response); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void destroy() Servlet过滤器大全_重定向_12
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void init(FilterConfig filterConfig) throws ServletException Servlet过滤器大全_重定向_12
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_07}
 

三、检测用户是否登陆的过滤器
Servlet过滤器大全_apacheimport javax.servlet.*
Servlet过滤器大全_apache
import javax.servlet.http.HttpServletRequest; 
Servlet过滤器大全_apache
import javax.servlet.http.HttpServletResponse; 
Servlet过滤器大全_apache
import javax.servlet.http.HttpSession; 
Servlet过滤器大全_apache
import java.util.List; 
Servlet过滤器大全_apache
import java.util.ArrayList; 
Servlet过滤器大全_apache
import java.util.StringTokenizer; 
Servlet过滤器大全_apache
import java.io.IOException; 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
/** *//** 
Servlet过滤器大全_java_06* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06* 配置参数 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06* checkSessionKey 需检查的在 Session 中保存的关键字 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06* notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath 
Servlet过滤器大全_java_06
Servlet过滤器大全_apache_07
*/
 
Servlet过滤器大全_apache
public class CheckLoginFilter 
Servlet过滤器大全_apache
implements Filter 
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
protected FilterConfig filterConfig = null
Servlet过滤器大全_java_06
private String redirectURL = null
Servlet过滤器大全_java_06
private List notCheckURLList = new ArrayList(); 
Servlet过滤器大全_java_06
private String sessionKey = null
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06HttpServletRequest request 
= (HttpServletRequest) servletRequest; 
Servlet过滤器大全_java_06HttpServletResponse response 
= (HttpServletResponse) servletResponse; 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06HttpSession session 
= request.getSession(); 
Servlet过滤器大全_java_06
if(sessionKey == null
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06filterChain.doFilter(request, response); 
Servlet过滤器大全_java_06
return
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06response.sendRedirect(request.getContextPath() 
+ redirectURL); 
Servlet过滤器大全_java_06
return
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06filterChain.doFilter(servletRequest, servletResponse); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void destroy() 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06notCheckURLList.clear(); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
private boolean checkRequestURIIntNotFilterList(HttpServletRequest request) 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06String uri 
= request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo()); 
Servlet过滤器大全_java_06
return notCheckURLList.contains(uri); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
public void init(FilterConfig filterConfig) throws ServletException 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.filterConfig = filterConfig; 
Servlet过滤器大全_java_06redirectURL 
= filterConfig.getInitParameter("redirectURL"); 
Servlet过滤器大全_java_06sessionKey 
= filterConfig.getInitParameter("checkSessionKey"); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06String notCheckURLListStr 
= filterConfig.getInitParameter("notCheckURLList"); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
if(notCheckURLListStr != null
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06StringTokenizer st 
= new StringTokenizer(notCheckURLListStr, ";"); 
Servlet过滤器大全_java_06notCheckURLList.clear(); 
Servlet过滤器大全_java_06
while(st.hasMoreTokens()) 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06notCheckURLList.add(st.nextToken()); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_07}
 
Servlet过滤器大全_apache

四、资源保护过滤器
Servlet过滤器大全_apachepackage catalog.view.util; 
Servlet过滤器大全_apache
Servlet过滤器大全_apache
import javax.servlet.Filter; 
Servlet过滤器大全_apache
import javax.servlet.FilterConfig; 
Servlet过滤器大全_apache
import javax.servlet.ServletRequest; 
Servlet过滤器大全_apache
import javax.servlet.ServletResponse; 
Servlet过滤器大全_apache
import javax.servlet.FilterChain; 
Servlet过滤器大全_apache
import javax.servlet.ServletException; 
Servlet过滤器大全_apache
import javax.servlet.http.HttpServletRequest; 
Servlet过滤器大全_apache
import java.io.IOException; 
Servlet过滤器大全_apache
import java.util.Iterator; 
Servlet过滤器大全_apache
import java.util.Set; 
Servlet过滤器大全_apache
import java.util.HashSet; 
Servlet过滤器大全_apache
// 
Servlet过滤器大全_apache
import org.apache.commons.logging.Log; 
Servlet过滤器大全_apache
import org.apache.commons.logging.LogFactory; 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
/** *//** 
Servlet过滤器大全_java_06* This Filter class handle the security of the application. 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06* It should be configured inside the web.xml. 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
@author Derek Y. Shen 
Servlet过滤器大全_apache_07
*/
 
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
public class SecurityFilter implements Filter Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
//the login page uri 
Servlet过滤器大全_java_06
private static final String LOGIN_PAGE_URI = "login.jsf"
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
//the logger object 
Servlet过滤器大全_java_06
private Log logger = LogFactory.getLog(this.getClass()); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
//a set of restricted resources 
Servlet过滤器大全_java_06
private Set restrictedResources; 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
/** *//** 
Servlet过滤器大全_java_06* Initializes the Filter. 
Servlet过滤器大全_apache_23
*/
 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void init(FilterConfig filterConfig) throws ServletException Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.restrictedResources = new HashSet(); 
Servlet过滤器大全_java_06
this.restrictedResources.add("/createProduct.jsf"); 
Servlet过滤器大全_java_06
this.restrictedResources.add("/editProduct.jsf"); 
Servlet过滤器大全_java_06
this.restrictedResources.add("/productList.jsf"); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
/** *//** 
Servlet过滤器大全_java_06* Standard doFilter object. 
Servlet过滤器大全_apache_23
*/
 
Servlet过滤器大全_java_06
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
throws IOException, ServletException Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.logger.debug("doFilter"); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06String contextPath 
= ((HttpServletRequest)req).getContextPath(); 
Servlet过滤器大全_java_06String requestUri 
= ((HttpServletRequest)req).getRequestURI(); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
this.logger.debug("contextPath = " + contextPath); 
Servlet过滤器大全_java_06
this.logger.debug("requestUri = " + requestUri); 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.logger.debug("authorization failed"); 
Servlet过滤器大全_java_06((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
else Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
this.logger.debug("authorization succeeded"); 
Servlet过滤器大全_java_06chain.doFilter(req, res); 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void destroy() Servlet过滤器大全_重定向_12{} 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
private boolean contains(String value, String contextPath) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06Iterator ite 
= this.restrictedResources.iterator(); 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
while (ite.hasNext()) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06String restrictedResource 
= (String)ite.next(); 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
if ((contextPath + restrictedResource).equalsIgnoreCase(value)) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
return true
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
return false
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
private boolean authorize(HttpServletRequest req) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06
//处理用户登录 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
/**//* UserBean user = (UserBean)req.getSession().getAttribute(BeanNames.USER_BEAN); 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06if (user != null && user.getLoggedIn()) { 
Servlet过滤器大全_java_06//user logged in 
Servlet过滤器大全_java_06return true; 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06else { 
Servlet过滤器大全_java_06return false; 
Servlet过滤器大全_apache_23}
*/
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_07}
 
Servlet过滤器大全_apache

五 利用Filter限制用户浏览权限

在一个系统中通常有多个权限的用户。不同权限用户的可以浏览不同的页面。使用Filter进行判断不仅省下了代码量,而且如果要更改的话只需要在Filter文件里动下就可以。
以下是Filter文件代码:

Servlet过滤器大全_apacheimport java.io.IOException; 
Servlet过滤器大全_apache
Servlet过滤器大全_apache
Servlet过滤器大全_apache
import javax.servlet.Filter; 
Servlet过滤器大全_apache
import javax.servlet.FilterChain; 
Servlet过滤器大全_apache
import javax.servlet.FilterConfig; 
Servlet过滤器大全_apache
import javax.servlet.ServletException; 
Servlet过滤器大全_apache
import javax.servlet.ServletRequest; 
Servlet过滤器大全_apache
import javax.servlet.ServletResponse; 
Servlet过滤器大全_apache
import javax.servlet.http.HttpServletRequest; 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
public class RightFilter implements Filter Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void destroy() Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain arg2) throws IOException, ServletException Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
// 获取uri地址 
Servlet过滤器大全_java_06
HttpServletRequest request=(HttpServletRequest)sreq; 
Servlet过滤器大全_java_06String uri 
= request.getRequestURI(); 
Servlet过滤器大全_java_06String ctx
=request.getContextPath(); 
Servlet过滤器大全_java_06uri 
= uri.substring(ctx.length()); 
Servlet过滤器大全_java_06
//判断admin级别网页的浏览权限 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
if(uri.startsWith("/admin")) Servlet过滤器大全_重定向_12
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
if(request.getSession().getAttribute("admin")==nullServlet过滤器大全_重定向_12
Servlet过滤器大全_java_06request.setAttribute(
"message","您没有这个权限"); 
Servlet过滤器大全_java_06request.getRequestDispatcher(
"/login.jsp").forward(sreq,sres); 
Servlet过滤器大全_java_06
return
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
//判断manage级别网页的浏览权限 
Servlet过滤器大全_字符编码_17Servlet过滤器大全_java_18
if(uri.startsWith("/manage")) Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
//这里省去 
Servlet过滤器大全_apache_23
}
 
Servlet过滤器大全_apache_23}
 
Servlet过滤器大全_java_06
//下面还可以添加其他的用户权限,省去。 
Servlet过滤器大全_java_06

Servlet过滤器大全_apache_07}
 
Servlet过滤器大全_apache
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
public void init(FilterConfig arg0) throws ServletException Servlet过滤器大全_重定向_12
Servlet过滤器大全_java_06
Servlet过滤器大全_apache_07}
 
Servlet过滤器大全_apache
Servlet过滤器大全_apache
Servlet过滤器大全_apache
Servlet过滤器大全_apache
<!-- 判断页面的访问权限 --> 
Servlet过滤器大全_apache
<filter> 
Servlet过滤器大全_apache
<filter-name>RightFilter</filter-name> 
Servlet过滤器大全_apache
<filter-class>cn.itkui.filter.RightFilter</filter-class> 
Servlet过滤器大全_apache
</filter> 
Servlet过滤器大全_apache
<filter-mapping> 
Servlet过滤器大全_apache
<filter-name>RightFilter</filter-name> 
Servlet过滤器大全_xml_04Servlet过滤器大全_重定向_05
<url-pattern>/admin/**//*</url-pattern> 
Servlet过滤器大全_java_06</filter-mapping> 
Servlet过滤器大全_java_06<filter-mapping> 
Servlet过滤器大全_java_06<filter-name>RightFilter</filter-name> 
Servlet过滤器大全_java_06<url-pattern>/manage/*</url-pattern> 
Servlet过滤器大全_java_06</filter-mapping> 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06在web.xml中加入Filter的配置,如下: 
Servlet过滤器大全_java_06<filter> 
Servlet过滤器大全_java_06
Servlet过滤器大全_java_06<filter-name>EncodingAndCacheflush</filter-name> 
Servlet过滤器大全_java_06<filter-class>EncodingAndCacheflush</filter-class> 
Servlet过滤器大全_java_06<init-param> 
Servlet过滤器大全_java_06<param-name>encoding</param-name> 
Servlet过滤器大全_java_06<param-value>UTF-8</param-value> 
Servlet过滤器大全_java_06</init-param> 
Servlet过滤器大全_java_06</filter> 
Servlet过滤器大全_java_06<filter-mapping> 
Servlet过滤器大全_java_06<filter-name>EncodingAndCacheflush</filter-name> 
Servlet过滤器大全_java_06<url-pattern>/*</url-pattern> 
Servlet过滤器大全_java_06</filter-mapping> 
Servlet过滤器大全_java_06