码迷,mamicode.com
首页 > 其他好文 > 详细

过滤器

时间:2020-05-09 23:46:12      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:rect   ppi   except   throw   一个   system   求和   with   port   

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>

 

过滤器

标签:rect   ppi   except   throw   一个   system   求和   with   port   

原文地址:https://www.cnblogs.com/lemonzhang/p/12860534.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!