过滤器

过滤器是和servlet一个层级的,是web开发的组件.
过滤器的特点是更具url的不同然后执行对应的放行和跳转,常用的就是登陆操作,当然,struts中的拦截器也是有过滤器写的,他的功能会更多.比如格式编码,参数手机,连接池管理,执行时间,日志等等,这个后边会说.

连接器的运行过程:

  • 服务器启动(tomcat)启动,初始化所有的filter类,并且调用他们的init()方法.这里需要说明的是,很多的方法不是通过执行他来实现什么功能,而是执行过程会顺道调用它,那么这个就是程序设计者给编程人员来用的,你可以在调用的时候执行什么功能,而不是说不执行你这个方法,程序就无法继续进行.比如说,system.gc();这里的init();
  • 请求从客户端发送,到达服务器的web.xml,web.xml是请求道服务器走的第一个组件.
  • 在web.xml中,会更具filter-mapping的的url-pattern找到对应的filter-name.
  • 通过这个name会匹配到filter中的name,并且找到相应的filter-class文件,进入这个类中执行.
  • 在对应的过滤类中主要执行的是dofilter方法,这个方法的参数实际上就是request/response/chain,那么执行的放行的是chain.dofilter(),然后执行下一个过滤器或者是servlet.
  • 之后按照过滤器的顺序反相执行,并且调用destory方法.
  • 当web的生命结束之后,过滤器也会随之结束.

实例:

//web.xml的配置
  <filter>
         <filter-name>login</filter-name>         
         <filterclass>路径</filter-class>
  </filter>  
  <filter-mapping>
        <filter-name>login</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>

//代码
// 控制用户访问权限 
public class SecurityFilter implements Filter { 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    HttpServletRequest req = (HttpServletRequest) request; 
    HttpServletResponse res = (HttpServletResponse) response; 
    HttpSession session = req.getSession(); 
    if (session.getAttribute("username") != null) {
    // 登录后才能访问 
    chain.doFilter(request, response); 
    } else { 
    res.sendRedirect("../failure.jsp"); 
} } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值