Filter学习总结

Filter接口

FilterChain接口


Filter的三个方法 

  init(FilterConfig config)  

doFilter(ServletRequest request,ServletResponse response,FilterChain chain) ; chain为过滤链  

destory();


在web.xml中的配置

<filter>
<filter-name>myfilter</filter-name> 
<filter-class>com.bai.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
<filter-mapping>

此处的url表示过滤所有的资源

  <filter>
  <filter-name>sf</filter-name>
  <filter-class>com.bai.filter.SessionFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>sf</filter-name>
  <url-pattern>/pages/*</url-pattern>
  </filter-mapping>

此处的url表示过滤pages下面的资源


使用filter,只需要建一个java类,使其实现flilter接口,重写dofilter方法,并在web.xml中配置

filter是自动执行,不用调用,当你访问url-pattern下的资源时,filter将起作用


在一个项目中,我们可以设置一个Filter来设置编码,减少了每个页面或者servlet的编码设置

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

req.setCharacterEncoding("utf-8");

res.setCharacterEncoding("utf-8");

chain.doFilter(req, res);

}


还可以使用Filter来验证用户是否登录


使用filter之后,在dofilter方法内必须写上chain.doFilter(requset,response);

该语句的作用是使代码继续执行下去


如果使用Httpservlet,那么在dofilter方法中,需要对request和response进行强制类型转换

如: HttpServletRequest req = (HttpServletRequest)request;


public void doFilter(ServletRequest arg0, ServletResponse arg1,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) arg0;

HttpServletResponse response = (HttpServletResponse) arg1;

HttpSession session = request.getSession();

String name = (String) session.getAttribute("1");

if(name!=null&&!name.equals("")){

System.out.println("in firlter if lanuage");

chain.doFilter(request, response);

}else{

System.out.println("in firlter esle lanuage");

request.setAttribute("msg", "你还没有登录!!");

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

}






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值