Filter就是过滤器,对httpRequest预处理后交给Servlet,对Servlet的httpResponse处理后返回给用户。
创建一个Filter只需两个步骤:1.创建filter处理类;2.web.xml中配置Filter 或 采用注解形式。
@WebFilter
上面的例子负责拦截所有用户请求,并将请求的信息记录在日志中。如果需要检查权限,可以在Filter类中对用户的Session进行判断,如果没有登录,跳转到登陆页面,否则正常放行即可。
web.xml配置
一个例子见下:
<filter> <filter-name>WebServiceFilter</filter-name> <filter-class>com.likeyichu.webservice.filter.WebServiceFilter</filter-class> </filter> <filter-mapping> <filter-name>WebServiceFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
例子
最简单的,维护一个访问控制列表,不在其中就返回403 Forbidden。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { if(!acl.contains(request.getRemoteHost())){ HttpServletResponse resp = (HttpServletResponse) response; //403返回 哈哈哈 resp.sendError(HttpServletResponse.SC_FORBIDDEN); return; } chain.doFilter(request, response); }