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"])}  

                

时间: 2024-07-31 17:40:41

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

【SharePoint学习笔记】第3章 SharePoint列表新特性以及数据访问

第3章 SharePoint列表新特性以及数据访问   使用CAML查询语言 CAML:协作应用程序标记语言 Collaboration Application Markup Language 使用Microsoft.SharePoint.SPQuery 对象查询列表数据 CAML语法: <Where> <And | Or> <Eq | BeginsWith | Contains | Geq | Gt | IsNotNull | IsNull | Leq | Lt | Neq

c++学习笔记(部分语法及c++11新特性)

前言 c++的语法细节实在过杂,再加上c++11的新特性,看了又忘,忘了再看,故讲学习过程所得以笔记形式记录于此. 1. c++对变量初始化的形式 int a = 0; int a = {0}; int a(0); int a{0};//叫做列表初始化 c++11时,才得以全面应用 long double b = 1.02; int a(b); int a=b; //正确:转换执行,但丢失了部分值 int a{b}; int a={b};//错误:转换未执行,因为存在丢失信息的危险 2. 变量声

SSH框架学习笔记(一)----JSP/servlet相关技术

开发自定义标签步骤: 开发自定义处理类: 继承javax.servlet.jsp.tagext.SimpleTagSupport类 如果有属性,每个属性都必须实现getter,setter方法 重写doTag方法 建立TLD文件: 文件放在WEB-INF目录下 定义<uri>标签 定义<tag>标签 <tag> <name>标签名</name> <tag-class>标签处理类</tag-class> <body-c

Yii框架学习笔记(二)将html前端模板整合到框架中

选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/topics/390807796 更多内容 百度:yii 前端 http://my.oschina.net/u/1472492/blog/221085 摘要 Yii框架学习笔记(二)将html前端模板整合到框架中 原文地址:http://www.ldsun.com/1309.html 上一节成功将Y

angularjs 学习笔记(二) ----- bootstrap框架

1.  下载新的jquery-1.11.1文件. 2.  下载新的bootstrap文件. 3.  选择流式布局的模板填充入index.html文件. 4.  将top.foot转为nginclude文件 nginclude必须使用$scope对象,因此需要设置一个全局的mainctrl来将字符串或全局变量注入$cope中. $rootScope.global =global; 直接将全局变量global赋值给$rootScope,并且之后的子$Scope会获得继承,静态定义与ctrl分开. 5

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

YMP框架学习笔记(三)------处理器、控制器、拦截器

一.处理器 1.事件处理器 添加类WebEventHandler.java并继承IWebEventHandler public class WebEventHandler implements IWebEventHandler { public void onInitialized() { } public void onRequestReceived(IRequestContext context) { } public void onRequestCompleted(IRequestCont

laravel3学习笔记(二)

原作者博客:ieqi.net ==================================================================================================== 路由 对于web框架而言,路由系统无疑是其中最关键的部分,Laravel3为用户提供了丰富的路由机制,极大的提高了编码效率.laravel3中,路由可以像一般框架那样绑定到controller类上,也可以直接在路由注册函数中利用回调函数实现访问逻辑.路由注册和配置代码

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它