zoukankan      html  css  js  c++  java
  • filter的使用

    (1)什么是filter

    过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改,判断等,把不符合规则的请求在中途拦截或者修改。或者对响应进行过滤、拦截或者修改。

    xml中的配置:

    此处<url—pattern>/*</url-pattern>。则客户端请求访问任意资源文件时都要经过过滤器过滤,通过则访问文件,否则拦截。

    当然你可以只作用于某个文件夹下的所有文件::<url—pattern>/dir/*</url-pattern>

    作用于某一种类型的文件:<url—pattern>*.扩展名</url-pattern>。比如<url—pattern>*.jsp</url-pattern>过滤所有对jsp文件的访问请求。

    作用于某一文件夹下某一类型文件:<url—pattern>/dir/*.扩展名</url-pattern>

    跟servlet类似,如果一个过滤器需要过滤多种文件,则可以配置多个<filter-mapping>,一个mapping定义一个url-pattern来定义过滤规则。

    详情参考此图

    重点!!!在web.xml中配置过滤器。这里要谨记一条原则:在web.xml中,监听器>过滤器>servlet。也就是说web.xml中监听器配置在过滤器之前,过滤器配置在servlet之前,否则会出错。

    当未加过滤器时,页面显示乱码

    加了过滤器

    代码:

    xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
      <display-name>myTest1</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      <servlet>
        <servlet-name>MyServlet1</servlet-name>
        <servlet-class>cn.swpu.pang.MyServlet1</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>MyServlet1</servlet-name>
        <url-pattern>/login</url-pattern>
      </servlet-mapping>
      
      <filter>
         <filter-name>MyFilter1</filter-name>
         <filter-class>cn.swpu.pang.MyFilter1</filter-class>
       </filter>
       
       <filter-mapping>
            <filter-name>MyFilter1</filter-name>
            <url-pattern>/*</url-pattern>
       </filter-mapping>
      
    </web-app>
    View Code

    myFilter1

    package cn.swpu.pang;
    
    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.annotation.WebFilter;
    
    /**
     * Servlet Filter implementation class MyFilter1
     */
    @WebFilter("/MyFilter1")
    public class MyFilter1 implements Filter {
    
        /**
         * Default constructor. 
         */
        public MyFilter1() {
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see Filter#destroy()
         */
        public void destroy() {
            // TODO Auto-generated method stub
        }
    
        /**
         * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
         */
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            System.out.println("我的filter");
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            chain.doFilter(request, response);
        }
    
        /**
         * @see Filter#init(FilterConfig)
         */
        public void init(FilterConfig fConfig) throws ServletException {
            // TODO Auto-generated method stub
        }
    
    }
    View Code

    在中间遇到了一个问题,就是如果,用

    HttpServletRequest request=(HttpServletRequest) arg0;//获取request对象
    HttpServletResponse response=(HttpServletResponse) arg1;//获取response对象
    进行类型转换,在再设置编码格式时,仍然会显示乱码,不知道问题所在

  • 相关阅读:
    查看表中bytea类型的字段内容
    Js中生成32位随机id
    VS Code操作指南
    记录一次非常简单的Win10安装
    Typora中下载并安装主题
    Win 10下隐藏任务栏图标B & O Play Audio Control
    IDEA基本使用
    Eclipse中安装反编译器(中文版)
    Eclipse设置控制台不自动弹出
    解决Eclipse控制台中文乱码的情况
  • 原文地址:https://www.cnblogs.com/funnn24/p/10660863.html
Copyright © 2011-2022 走看看