java-过滤器的介绍及简单使用
概述:
java过滤器能够对目标资源的请求和响应进行截取。
概念图:
过滤器的使用
1.创建一个过滤器:
public class Myfilter implements Filter {
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("我是过滤器被初始化。。init");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("我是过滤器被执行了。。doFilter");
//设置请求编码格式和响应编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("text/html;charset=utf-8");
chain.doFilter(request, response);//放行
}
@Override
public void destroy() {
System.out.println("我是过滤器被销毁了。。destroy");
}
}
2.web.xml文件中配置:
<!-- 过滤器 -->
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.yang.filter.Myfilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注:也可以用注解版在过滤器类上面使用@WebFilter("/*"),就不需要再web.xml中配置了
3.测试serlvet:
@WebServlet("/login")
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
System.out.println("登录");
}
}
如果想要实现登录验证可以在过滤器中检测域中是否有该用户的信息如果没有就重定向到登陆页面,这样在未登录的情况下就无法直接访问登陆后的主页面。