过滤器
Posted lemonzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤器相关的知识,希望对你有一定的参考价值。
1、过滤器
1) 对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息。WEB资源可能包括Servlet、JSP、html页面等
2) 当服务器收到特定的请求后,会先将请求交给过滤器,程序员可以在过滤器中对请求信息进行读取修改等操作,然后将请求信息再发送给目标资源。目标资源作出响应后,服务器会再次将响应转交给过滤器,在过滤器中同样可以对响应信息做一些操作,然后再将响应发送给服务器。
3) 也就是说过滤器可以在WEB资源收到请求之前,浏览器收到响应之前,对请求和响应信息做一些相应的操作。
4) 在一个WEB应用中可以部署多个过滤器,多个过滤器就组成了一个过滤器链,请求和响应必须在经过多个过滤器后才能到达目标
2、过滤器的使用
1) 通过实现Filter接口完成过滤器的开发
package com.atguigu.login.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginFilter implements Filter { /** * 初始化方法 */ @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("LoginFilter 初始化完成了......."); } /** * 真正的过滤处理 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //当前的请求是谁 HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response ; System.out.println("URI:" + req.getRequestURI()); System.out.println("URL:" + req.getRequestURL()); String url = req.getRequestURL().toString(); //判断要过滤的请求 if(url.endsWith("/main.jsp")) { //过滤 引导去往登录页面 resp.sendRedirect("login.jsp"); }else { //放行 继续执行后续的处理。 //FilterChain: 过滤器链对象 chain.doFilter(req, resp); } } /** * 销毁方法 * */ @Override public void destroy() { System.out.println("LoginFilter 销毁了......." ); } }
2)Filter在web.xml中的配置
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.atguigu.login.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
以上是关于过滤器的主要内容,如果未能解决你的问题,请参考以下文章