zoukankan      html  css  js  c++  java
  • Filter学习

    在这之前一直对filter感到陌生,有点细思极恐的感觉~~终于下定决心来学习一下,欢迎拍砖~~

    Filter的主要作用是实现对HttpServletRequest的预处理,也可以对HttpServletResponse的后期处理。二者的分界线就是chain.doFilter()。

    web.xml中元素执行的顺序listener->filter->struts拦截器->servlet。

     过滤器的作用描述 

    • 在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。 
    • 根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。 
    • 在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。 
    • 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。

     【创建Filter】  

      创建Filter类实现Filter接口;在web.xml中注册filter。两步走……

      在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中

    • init()  Init 方法在 Filter 生命周期中仅执行一次,web 容器在调用 init 方法时
    • destory()  在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源。
    • doFilter() Filter 链的执行 。

      在配置文件中的配置等同servlet的配置。

    【参考】http://www.oschina.net/question/565065_86538

    【ServletContext】

       WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

       ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

      由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

      ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。

     【作用】  

      由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

     1. 实现数据的共享 。通过setAttribute()/getAttribute

     2.    获取WEB应用的初始化参数。获取在web.xml中的初始化参数  

    1 <context-param>   
    2 
    3 <param-name>url</param-name>   
    4 
    5 <param-value>jdbc:mysql://localhost:3306/4g</param-value>   
    6 
    7  </context-param>   

     3. 获取相关资源  

     1 /*获取ServletContext对象*/  
     2 
     3 ServletContext context = this.getServletContext();     
     4 
     5 //第一种方式    
     6 
     7 URL url = context.getResource("WEB-INF/classes/db.properties");   
     8 
     9 InputStream is =  url.openStream();   
    10 
    11 //第二种方式   
    12 
    13  /*读取db.properties文件*/  
    14 
    15 String path =context.getRealPath("WEB-INF/classes/db.properties");   
    16 
    17  /*根据文件的路径 构建文件对象*/  
    18 
    19 File file = new File(path);   
    20 
    21  /*根据file文件对象 创建输入流*/  
    22 
    23 InputStream is = new FileInputStream(file);  

    【参考】http://blog.csdn.net/qiqiongran_luck/article/details/6889037

     【ServeletConfig】

      将配置信息封装为ServletConfig~它对应着web.xml文件中的标签。调用Servlet的init方法时,该对象作为参数一并传入。调用Init()方法的时候获取该对象,然后使用其中的getInitParameter()方法来获取配置文件中的参数配置。

  • 相关阅读:
    团队冲刺第三天
    NoSQL数据库基础概述
    团队开发冲刺第九天
    团队开发冲刺第八天
    团队开发冲刺第七天
    团队开发冲刺第六天
    团队开发冲刺第五天
    团队开发冲刺第四天
    团队开发冲刺第三天
    第九周总结
  • 原文地址:https://www.cnblogs.com/plxx/p/5330957.html
Copyright © 2011-2022 走看看