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;
	
		//获取登录URI
		String 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

@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		//设置编码
		request.setCharacterEncoding(encoding);
		chain.doFilter(request, response);
		
	}

	@Override
	public 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>


你可能感兴趣的:(filter)