DRP中用到的几个filter
1、利用filter对一些不变的数据进行简单缓存,例如图片
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest)request;HttpServletResponse res = (HttpServletResponse)response; //时间可以也可以配到初始化参数中res.setHeader("Cache-control", "max-age=5000");chain.doFilter(request, response);}配置文件
<filter> <filter-name>WebCacheFilter</filter-name> <filter-class>com.jialin.drp.util.WebCacheFilter</filter-class> </filter>
<filter-mapping> <filter-name>WebCacheFilter</filter-name> <url-pattern>*.gif</url-pattern> </filter-mapping>
<filter-mapping> <filter-name>WebCacheFilter</filter-name> <url-pattern>*.jpg</url-pattern> </filter-mapping>
<filter-mapping> <filter-name>WebCacheFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping>
<filter-mapping> <filter-name>WebCacheFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping>
2、判断用户是否已登录(除去登录界面和登录界面验证码的servlet)
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest)request;HttpServletResponse res = (HttpServletResponse)response;//获取登录URIString requestURI = req.getRequestURI().substring(req.getRequestURI().indexOf("/", 1), req.getRequestURI().length());//登录界面和登录界面用到的验证码servlet不验证if (!"/login.jsp".equals(requestURI) && !"/servlet/AuthImageServlet".equals(requestURI)) {HttpSession session = req.getSession(false);if (session == null || session.getAttribute("user_info") == null) {res.sendRedirect(req.getContextPath() + "/login.jsp");return;}}//继续访问其他资源chain.doFilter(req, res);}
配置文件
<filter><filter-name>AuthFilter</filter-name><filter-class>com.jialin.drp.util.AuthFilter</filter-class></filter><filter-mapping><filter-name>AuthFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>AuthFilter</filter-name><url-pattern>/servlet/*</url-pattern></filter-mapping>
3、控制编码的filter
@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {//设置编码request.setCharacterEncoding(encoding);chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//获取filter初始化参数信息this.encoding=filterConfig.getInitParameter("encoding");}
配置文件
<filter><filter-name>CharsetEncodingFilter</filter-name><filter-class>com.jialin.drp.util.filter.CharsetEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>CharsetEncodingFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>CharsetEncodingFilter</filter-name><url-pattern>/servlet/*</url-pattern></filter-mapping>