zoukankan      html  css  js  c++  java
  • 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"])}  

                    

  • 相关阅读:
    idea中导入jquery无法生效解决办法
    如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?
    spring的ioc依赖注入的三种方法(xml方式)
    向存在外键的表中插入数据时出错的原因以及插入外键为空的方法
    mysql一条语句添加多条数据
    SQL中distinct的用法
    Java实体对象为什么要实现Serializable接口?
    servlet中使用request.getHeader("referer")获取页面从哪跳转过来的
    java动态拼接sql语句并且执行时给sql语句的参数赋值
    正则表达式
  • 原文地址:https://www.cnblogs.com/XD-thinker/p/6726791.html
Copyright © 2011-2022 走看看