zoukankan      html  css  js  c++  java
  • java过滤器 Fliter

    定义:过滤器是一个服务器端组件,他可以截取用户端请求信息与响应信息,并对信息进行过滤

    例:当进入csdn要进行文章编辑时,检测用户是否登录,若未登录,跳转到登录界面。

    过滤器操作方法:

    init() : 初始化过滤器,创建过滤器实例后调用这个方法,可以读取web.xml过滤器中的参数

    doFilter() : 完成过滤操作,过滤器的核心方法,当用户请求访问预过滤出其关联的url
    * 时调用这个方法 FilterChain参数可以调用chain.doFilter方法,将请求传给下一个
    * 过滤器,或利用转发、重定向将请求转发到其他资源

    destroy() : 销毁过滤器 释放资源


    工作原理:

       用户请求----->过滤器----->web资源

        web资源----->过滤器----->用户

    生命周期:

        实例化----->初始化------>过滤----->销毁

    web.xml--->init()---->dofilter()--->destory()

    过滤器链:指一个网页需要经过多个过滤器的过滤才能对web资源进行请求 

    用户请求--->过滤器1--->过滤器2--->过滤器3---->.......------>web资源

    经过多个过滤器的步骤为dofilter1(start)------>dofilter2(start)----->dofilter2(end)----->dofilter1(end) 即多个过滤器嵌套实现功能

    例子:

    首先先在web.xml中配置过滤器(也可以在代码中直接配置)

    <filter>    <!-- 指定一个过滤器 -->
      	<filter-name>JavaFilter</filter-name>     <!-- 给过滤器指定名字 -->
      	<filter-class>com.th.JavaFilter</filter-class>  <!-- 指定过滤器的完整路径名 -->
      </filter>
      <filter-mapping>               <!-- 设置一个Filter所负责拦截的资源 -->
      	<filter-name>JavaFilter</filter-name>
      	<url-pattern>/index.jsp</url-pattern>   <!-- 设置Filter所拦截的请求路径 ,即过滤index.jsp页面的请求-->
      </filter-mapping>
    设置一个编码过滤器

    //@WebFilter(
    //	urlPatterns={"*"},
    //    initParams={@WebInitParam(name="encoding",value="utf-8")})
    public class JavaFilter implements Filter{
    	private String defaultEncoding="utf-8";
    	
    	/**
    	 * 销毁方法。  当web应用移除或服务器停止时才销毁
    	 */
    	@Override
    	public void destroy() {
    		
    		
    	}
    	/**
    	 * 这个事过滤器的核心方法,完成实际操作,FilterChain方法用于访问Filter中的后续过滤器
    	 */
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		request.setCharacterEncoding(defaultEncoding);
    		response.setCharacterEncoding(defaultEncoding);
    		chain.doFilter(request, response);
    		
    	}
    
    
    	/**
    	 * Filter的创建和销毁由web服务器负责,web应用启动时,创建Filter对象,调用init方法,读取web.xml配置
    	 * Filter对象只会创建一次,init方法也执行一次,
    	 */
    	@Override
    	public void init(FilterConfig config) throws ServletException {
    		String encoding = config.getInitParameter("encoding");  
    		if(encoding!=null){
    			defaultEncoding=encoding;
    		}
    		
    	}
    	
    }
    
    https://www.cnblogs.com/coderland/p/5902878.html



  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/tonghao/p/8506035.html
Copyright © 2011-2022 走看看