SSH框架学习笔记(二)----Filter,Listener以及JSP的新特性

Fileter:对用户请求进行预处理,接着讲请求交给Servlet进行处理并生成响应,最后在对服务器响应进行后处理.

  1. 用处:
    • 在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest
    • 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据
    • 在HttpServletResponse到达客户端之前,拦截HttpServletResponse
    • 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据
  2. 种类:
    • 用户授权的Filter:负责检查用户请求,根据请求过滤用户非法请求
    • 日志Filter:详细记录某些特殊的用户请求
    • 负责解码的Filter:包括对非标准编码的请求解码
    • 能改变XML内容的XSLT Filter
    • Filter可负责拦截多个请求或响应,一个请求或响应也可以被多个Filter拦截
  3. 创建Filter的步骤:
    1. 创建Filter类:
      • 实现javax.servlet.Filter接口
      • 实现init(),destroy(),doFilter()方法
    2. 配置Filter:
      • 注解方法:
        @WebFilter(filterName="Filter的名字",urlPatterns={"/*"},initParams={@WebInitParam(name="key",value="value"),..})

         

      • web.xml配置:
        <filter>
            <filter-name>Filter的名字</filter-name>
            <filter-class>类名</filter-class>
          <init-param>
          <param-name>name</param-name>
          <param-value>value</param-value>
          </init-param> </filter> <filter-mapping> <filter-name>Filter的名字</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

         

Listener:监听web应用内部事件

  1. 创建Listener的步骤:

    1. 实现Listener类:
      • 实现的监听器接口:
        • ServletContextListener:用于监听应用的启动和关闭
        • ServletContextAttributeListener:用于监听ServletContext范围(application)内属性的改变
        • ServletRequestListener:监听用户请求
        • ServletRequestAttributeListener:监听request内属性的改变
        • HttpSessionListener:监听session的开始和结束
        • HttpSessionAttributeListener:用于监听session内属性的改变
      • 以ServletContextListener为例实现方法:
        • 实现contextInitialized()方法:应用启动时触发
        • 实现contextDestroyed()方法:应用关闭时触发
    2. 配置Listener:
      1. 注解配置:使用@WebListener修饰Listener实现类
      2. web.xml配置:
        <listener>
            <listener-class>类名</listener-class>
        </listener>

JSP2的新特性

  1. 使用jsp2语法web.xml需要使用servlet2.4以上版本的配置,注意<web-app>标签的版本号要对
  2. 可配置JSP属性:
    <jsp-config>
        <jsp-property-group>
            <url-pattern>/noscript/*(作用范围)</url-pattern>
            <el-ignored>true(忽略表达式语言)</el-ignored>
            <page-encoding>页面编码字符集</page-encoding>
            <scripting-invalid>true(不允许使用脚本)</scriptin-invalid>
            <include-prelude>隐式导入页面头</include-prelude>
            <include-coda>隐式导入页面尾</include-coda>
        </jsp-property-group>
    </jsp-config>

     

  3. 表达式语言:
    1. 语法格式:${expression}
    2. 表达式语言的11个内置对象:
      1. pageContext:代表页面的pageContext对象
      2. pageScope:用于获取page范围的属性值
      3. requestScope:用于获取request的属性值
      4. sessionScope:用于获取sessionde属性值
      5. application:用户获取application的属性值
      6. param:用于获取请求的参数值
      7. paramValues:用于获取请求参数值,返回的是数组
      8. header:用于获取请求头的属性值
      9. headerValues:用于获取请求头的属性值,返回数组
      10. initParam:用于获取请求Web应用的初始化参数
      11. cookie:用于获取cookie值
    3. 表达式语言自定义函数步骤:
      1. 开发函数处理类:就是普通类,包含若干个静态方法,每个方法都可定义为一个函数
      2. 使用标签库定义函数:与定于标签类似:在<taglib/>元素下定于<function/>每个function指定以下三个要素就行了:
        1. name:指定自定义函数名
        2. 指定自定义函数处理类
        3. 指定自定义函数对应的方法
    4. 使用函数:${crazyit:reverse(param["name"])}  

                

 

posted @ 2017-04-18 13:19  XD-Thinker  阅读(477)  评论(0编辑  收藏  举报