Java_servlet_ 过滤器

Java_servlet_ 过滤器

过滤器:

原理:

​ 在用户的浏览器和服务器之间添加一个过滤器,用户请求经过相对应的过滤器。

作用:

​ 可以对浏览器的请求进行统一编码,以及获取session中的数据,或者对请求数据进行过滤。

过滤器配置:

<!--第一种过滤器配置:可以拦截所有的浏览器请求("/*")-->
	  <filter>
  		<filter-name>Myfilter</filter-name>
  		<filter-class>MyFilter.Myfilter</filter-class>
  	</filter>
  	<filter-mapping>
  			<filter-name>Myfilter</filter-name>
  			<url-pattern>/*</url-pattern>
  	</filter-mapping>
<!--第二种过滤器配置:可以拦截部分的以("*.do")浏览器请求("*.do")-->
 	<filter>
  		<filter-name>Myfilter</filter-name>
  		<filter-class>MyFilter.Myfilter</filter-class>
  	</filter>
  	<filter-mapping>
  		<filter-name>Myfilter</filter-name>
  		<url-pattern>*.do</url-pattern>
  	</filter-mapping>
<!--第三种过滤器配置:可以拦截指定浏览器请求("/test.do")-->
 	<filter>
  		<filter-name>Myfilter</filter-name>
  		<filter-class>MyFilter.Myfilter</filter-class>
 	 </filter>
  	<filter-mapping>
  		<filter-name>Myfilter</filter-name>
  		<url-pattern>/test.do</url-pattern>
  	</filter-mapping>

注意:

​ 当同时配置三种过滤器的时候,三种过滤器都要进行工作,顺序为:第一种 —>第二种 —>第三种

过滤器的方法复写和生成:

public class Myfilter implements Filter{
    //过滤器的销毁
	public void destroy() {
		System.out.println("我被销毁了!");
	}
    //过滤器的执行
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("我被执行了!");
		//设置编码格式
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		//判断session
		HttpSession hs=((HttpServletRequest)request).getSession();
		if(hs.getAttribute("user")==null)
			((HttpServletResponse)response).sendRedirect("a.jsp");//重定向到 a.jsp 文件
		else
            //处理完后,过滤器放行,浏览器的请求放行给服务器
		chain.doFilter(request,response);
		System.out.println("我被执行了2!");	
	}
    //过滤器的生成
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("我被初始化了!");
	}

}

过滤器的运行轨迹:

在这里插入图片描述

过滤器生命周期:

​ 服务器开启到服务器结束,当服务器关闭后,过滤器才会执行销毁方法。

注意:

​ 当过滤器放行后,还会接着往下执行

 //过滤器的执行
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("我被执行了!");
		//设置编码格式
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
        
		chain.doFilter(request,response); //这里是放行给服务器,我的Servlet里写的是(System.out.println("我是Servlet!*****************************");)
        
		System.out.println("我被执行了2!");	
	}

程序截图:
在这里插入图片描述

第一次写博客,可能写的有错的地方,希望大家可以谅解,欢迎大家来指错和纠正!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值