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



  • 相关阅读:
    人见人爱a+b,算出两个时间的和
    远程推送原理
    iOS中的定时器
    四大对象
    核心动画类关系图
    无沙盒缓存原理
    应用程序的生命周期
    同样明文同样算法得到不同密码原理
    线程状态
    iOS中的几个重要方法
  • 原文地址:https://www.cnblogs.com/tonghao/p/8506035.html
Copyright © 2011-2022 走看看