您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页JavaWeb之过滤器

JavaWeb之过滤器

来源:爱go旅游网

javaEE中的过滤器

什么是过滤器

  • 在请求资源前对请求的数据进行处理,也就是说在servlet之前对数据进行过滤及其处理(对servlet请求时)。而且过滤器可以有多个,只需要创建多个过滤器类及其在配置过滤器要处理请求的路径

过滤器Filter的工作原理

过滤器的作用:

过滤器Filter的实现和部署

  1. 必须实现接口javax.serclet.Filter,并且实现该接口的3个方法

  2. void init(…):用于初始化过滤器。

  3. void destroy():用于销毁过滤器。

  4. void doFilter(…):用于执行过滤操作。

中文乱码请求案例

  1. 创建过滤器
public class MyFilter implements Filter {
    /**
     * 服务器已启动就启动,随时等待过滤对象出现
     * @param filterConfig
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init" );
    }

    /**
     * 1、过滤器中的代码在过滤器执行时都会被执行。
     * 2、FilterChain对象是决定是否让过滤器继续向下执行的关键,
     * 我们一般都让向下执行,如果不向下执行那么请求就不会到servlet中
     * @param servletRequest
     * @param servletResponse
     * @param filterChain
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("MyFilter.doFilter");
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setCharacterEncoding("UTF-8");
        servletResponse.setContentType("text/html;charset=UTF-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("MyFilter.destroy");
    }
}

  1. 配置将要过滤的路径
    /*代表所有请求都经过这个路径
    /xx /
    *代表XX路径下的所有文件
 <filter>
        <filter-name>charset</filter-name>
        <filter-class>com.taxing.Filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>charset</filter-name>
        <url-pattern>/servlet/*</url-pattern>
    </filter-mapping>
  1. 创建测试的servlet
	public class Myservlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.getWriter().println("你好啊");
    }
}
  1. 配置servlet请求路径
    这里我们对一个servlet进行两个路径请求,notfilter路径的不需要过滤器,/servlet/filter的经过过滤器
  <servlet>
        <servlet-name>not_filter</servlet-name>
        <servlet-class>com.taxing.servlet.Myservlet</servlet-class>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>not_filter</servlet-name>
        <url-pattern>/notfilter</url-pattern>
    </servlet-mapping>    
     <servlet-mapping>
    	<servlet-name>not_filter</servlet-name>
    	<url-pattern>/servlet/filter</url-pattern>
    </servlet-mapping>
  1. 测试

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务