com.hotel.filter.EncodeFilter:
/** * */ package com.hotel.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; /** * @author Administrator * */ public class EncodeFilter implements Filter { // 定义编码格式的属性 private String encode; /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ @Override public void destroy() { System.out.println("过滤器销毁"); } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { System.out.println("执行过滤器"); req.setCharacterEncoding(encode); resp.setContentType("text/html;charset="+encode); // 让过滤器转发请求 chain.doFilter(req, resp); } /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ @Override public void init(FilterConfig config) throws ServletException { System.out.println("过滤器初始化"); // 读取过滤器中初始化的编码格式 String encode = config.getInitParameter("encode"); this.encode = encode; } }
com.hotel.filter.PermissionFilter:
package com.hotel.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet Filter implementation class PermissionFilter */ public class PermissionFilter implements Filter { /** * Default constructor. */ public PermissionFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { // 定义非检查列表 String[] noCheckList= { "loginServlet", "addRoomInfoServlet", "login.jsp" }; // 把servlet请求和响应对象强制转换为HTTP的请求响应对象 HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)resp; // 获取当前用户请求地址 String uri = request.getRequestURI(); // 通过得到的uri路径获取当前访问资源的名称 String resource = uri.substring(uri.lastIndexOf("/")+1); // 判断访问资源是否在非检查列表中 for(String urlName : noCheckList) { if(resource.equals(urlName)) { chain.doFilter(request, response); return; } } // 判断用户是否登录[判断session对象中是否存在值] Object object = request.getSession().getAttribute("userName"); if(object == null) { response.sendRedirect("login.jsp"); } else { chain.doFilter(request, response); } } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub } }
配置文件:
<filter> <filter-name>encode</filter-name> <filter-class>com.hotel.filter.EncodeFilter</filter-class> <init-param> <param-name>encode</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encode</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <display-name>PermissionFilter</display-name> <filter-name>PermissionFilter</filter-name> <filter-class>com.hotel.filter.PermissionFilter</filter-class> </filter> <filter-mapping> <filter-name>PermissionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
原文:http://lhmjava.blog.51cto.com/9668287/1623344