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);
}