DRP中用到的几个filter

来源:互联网 发布:佐治亚理工本科知乎 编辑:程序博客网 时间:2024/05/17 18:17

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>