过滤器

csdn  过滤器篇:https://blog.csdn.net/u011024652/article/details/52186200

 

过滤器的使用:
 *         作用:
 *             对服务器接收的请求资源和响应浏览器的资源进行管理
 *             保护servlet
 *     使用:
 *         创建一个实现了Filter 接口的普通java类
 *         覆写接口方法:
 *              init(),    服务器启动即执行,资源初始化。
 *             doFilter()    ,拦截请求的方法,在此方法中可以实现对资源的管理
 *                     注意:需要手动进行放行,.chain.doFilter(request,response);
 *             destroy()    ,服务器关闭时执行,
 *     在Web.xml 文件中 配置 过滤器:
 *     <filter>
          <filter-name>MyFilter</filter-name>
          <filter-class>com.wxh.filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
          <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>
 *             注意:url-pattern : /*  拦截所有的请求;
 *                   url-pattern : *.do  拦截所有以 .do  结尾的请求,一般是用来进行模块拦截处理;
 *                     url-pattern : /ts     表示拦截指定url 的请求,针对某个 servlet 的请求,保护 servlet;
 *
 *     过滤器的生命周期:    服务器启动 到 服务器关闭;
 *
 *     总结:
 *         过滤器 程序员声明和配置,服务器根据请求中的 uri 信息调用;
 *     执行:
 *         浏览器发起请求到服务器,服务器收到请求后,根据 URI 信息在web.xml中找到对应的
 *         过滤器 执行 doFilter 方法,该方法对此次请求进行处理后如果符合要求则放行,放行
 *         后如果还有符合要求的过滤则继续过滤,找到执行对应的servlet  进行请求处理,servlet
 *         对请求处理完毕后,也就是service 方法结束了,还需继续返回相应的doFilter 方法继续执行。
 *     
 *     案例:
 *         统一编码格式设置。
 *         session 管理
 *         权限管理
 *         资源管理(统一水印,和谐词汇 等)

过滤器:

public class MyFilter implements Filter {

	public void destroy() {
		System.out.println("MyFilter.destroy(我被销毁了)");
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("MyFilter.doFilter(我被执行了,开始过滤)");
		//设置响应编码:
		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/login.jsp");
			}else{
				//放行
				chain.doFilter(request, response);
			}
		 
		System.out.println("MyFilter.doFilter(我被执行了2,过滤结束)");
		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("MyFilter.init(我被初始化了)");
	}

}
package com.wxh.filter;

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;

public class MyFilter2 implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		System.out.println("MyFilter2.doFilter(我是第二个拦截器)");
		//放行
		chain.doFilter(request, response);
		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}

servlet:

package com.wxh.servlet;


import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servletTest extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		 //设置请求格式
		//设置响应格式
		//获取请求信息
		//处理请求信息
		System.out.println("servletTest.service(我是servlet)");
		//响应请求信息
	}
}

配置web.xml

 <filter>
  	<filter-name>MyFilter</filter-name>
  	<filter-class>com.wxh.filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>MyFilter</filter-name>
	<url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 配置第二个拦截器 -->
  <filter>
  	<filter-name>MyFilter2</filter-name>
  	<filter-class>com.wxh.filter.MyFilter2</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>MyFilter2</filter-name>
	<url-pattern>*.do</url-pattern>
  </filter-mapping>
  <!-- 配置第三个拦截器 -->
  <filter>
  	<filter-name>MyFilter3</filter-name>
  	<filter-class>com.wxh.filter.MyFilter3</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>MyFilter3</filter-name>
	<url-pattern>/st.do</url-pattern>
  </filter-mapping>

 

转载于:https://my.oschina.net/u/3788977/blog/2231174

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值