第05章Struts 2拦截器_第1页
第05章Struts 2拦截器_第2页
第05章Struts 2拦截器_第3页
第05章Struts 2拦截器_第4页
第05章Struts 2拦截器_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章Struts2的拦截器 5 1拦截器概述 5 2拦截器的配置 5 3自定义拦截器类 5 1拦截器概述 Struts2框架内建了大量的拦截器 这些拦截器可以在Struts2的配置文件struts default xml中查看 Struts2框架给出了这么多的拦截器 下面简要介绍它们的作用 alias 实现在不同请求中相似参数别名的转换 autowiring 这是个自动装配Spring 主要用于当Struts2和Spring整合时 Struts2可以使用自动装配的方式来访问Spring容器中的Bean chain 构建一个Action链 使当前Action可以访问前一个Action的属性 一般和一起使用 conversionError 这是一个负责处理类型转换错误的拦截器 它负责将类型转换错误从ActionContext中取出 并转换成Action的FieldError错误 createSession 该拦截器负责创建一个HttpSession对象 主要用于那些需要有HttpSession对象才能正常工作的拦截器 debugging 当使用Struts2的开发模式时 这个拦截器会提供更多的调试信息 5 1拦截器概述 execAndWait 后台执行Action 负责将等待画面发送给用户 exception 这个拦截器负责处理异常 它将异常映射为结果 fileUpload 这个拦截器主要用于文件上传 它负责解析表单中文件域的内容 il8n 这是支持国际化的拦截器 它负责把所选的语言 区域放入用户Session中 logger 这是一个负责日志记录的拦截器 主要是输出Action的名字 model driven 这是一个用于模型驱动的拦截器 当某个Action类实现了ModeiDriven接口时 它负责把getModel 方法的结果堆入ValueStack中 scoped model driven 如果一个Action实现了一个ScopedModeiDriven接口 该拦截器负责从指定生存范围中找出指定的Model 并将通过setModel方法将该Model传给Action实例 params 这是一个最基本的拦截器 它负责解析HTTP请求中的参数 并将参数值设置成Action对应的属性值 prepare 如果action实现了Preparable接口 将会调用该拦截器的prepare 方法 static params 这个拦截器负责将xml中标签下标签中的参数传入action 5 1拦截器概述 scope 这是范围转换拦截器 它可以将Action状态信息保存到HttpSession范围 或者保存到ServletContext范围内 servlet config 如果某个Action需要直接访问ServletAPI 可以通过这个拦截器实现 roles 这是一个JAAS JavaAuthenticationandAuthorizationService Java授权和认证服务 拦截器 只有当浏览者取得合适的授权后 才可以调用被该拦截器拦截的Action timer 这个拦截器负责输出Action的执行时间 在分析该Action的性能瓶颈时比较有用 token 这个拦截器主要用于阻止重复提交 它检查传到Action中的token 防止多次提交 token session 这个拦截器的作用与前一个基本类似 只是它把token保存在HttpSession中 validation 通过执行在xxxAction validation xml中定义的校验器 完成数据校验 workflow 这个拦截器负责调用Action类中的validate方法 如果校验失败 则返回input的逻辑视图 5 2拦截器的配置 拦截器的配置是在struts xml中完成的 定义一个拦截器使用标签 其格式如下 这种情况的应用非常广 有的时候 如果需要在配置拦截器时就为其传入拦截器参数 只要在与之间配置标签即可传入相应的参数 其格式如下 参数值 如果需要传入多个参数 可以一并设置 5 2拦截器的配置 如果在其他的拦截器配置中出现了同名的参数 则前面配置的参数将被覆盖掉 在struts xml中可以配置多个拦截器 它们被包在之间 例如下面的配置 action配置 5 2拦截器的配置 可以看出 拦截器是配置在包下的 在包下配置了一系列的拦截器 但仅仅是配置在该包下 并没有得到应用 如果要应用这些拦截器 就需要在配置中引用这些拦截器 一个需要应用多个拦截器 就不免要有多条引用语句 引用拦截器用标签 所以Struts2给出了拦截器栈的使用 一个拦截器栈中可以包含多个拦截器 配置拦截器栈的格式为 其实 在Struts2框架中也配置有很多拦截器栈 在Struts2的struts default xml中可以发现有如下拦截器栈的配置 在struts default xml文件的最后还有这样一句代码 5 2拦截器的配置 拦截器或拦截器栈配置完成后就可以在中对其引用了 一个action引用拦截器或拦截器栈的格式如下 可以看出 在为action指定拦截器时 配置了 5 3自定义拦截器类 Struts2提供了一些接口或类供程序员自定义拦截器 例如 Struts2提供了com opensymphony xwork2 interceptor Interceptor接口 程序员只要实现该接口就可完成自定义拦截器类的编写 该接口的代码如下 publicinterfaceInterceptorextendsSerializable voidinit Stringintercept ActionInvocationinvocation throwsException voiddestroy 该接口中有如下三种方法 init 该方法在拦截器被实例化之后 拦截器执行之前调用 该方法只被执行一次 主要用于初始化资源 intercept ActionInvocationinvocation 该方法用于实现拦截的动作 该方法有个参数 用该参数调用invoke 方法 将控制权交给下一个拦截器 或者交给Action类的方法 destroy 该方法与init 方法对应 拦截器实例被销毁之前调用 用于销毁在init 方法中打开的资源 5 3自定义拦截器类 除了Interceptor接口之外 Struts2框架还提供了AbstractInterceptor类 该类实现了Interceptor接口 并提供了init 方法和destroy 方法的空实现 在一般的拦截器实现中 都会继承该类 因为一般实现的拦截器是不需要打开资源的 故无须实现这两种方法 继承该类会更简洁 该类的代码实现为 publicinterfaceAbstractInterceptorimplementsInterceptor publicAbstractInterceptor publicvoidinit publicvoiddestroy publicabstractStringintercept ActionInvocationinvocation throwsException 5 3 1实例说明自定义拦截器的应用 首先创建项目 InterceptorTest 加载Struts2类库及修改web xml 创建自定义拦截器类 MyInterceptor java 编写代码如下 packageorg interceptor importcom opensymphony xwork2 ActionInvocation importcom opensymphony xwork2 interceptor AbstractInterceptor publicclassMyInterceptorextendsAbstractInterceptor publicStringintercept ActionInvocationarg0 throwsException System out println 我在Action前执行 Stringresult arg0 invoke System out println 我在Action后执行 returnresult 5 3 1实例说明自定义拦截器的应用 创建Action类 TestAction java 编写代码如下 packageorg action importcom opensymphony xwork2 ActionSupport publicclassTestActionextendsActionSupport publicStringexecute throwsException System out println 我在Action中执行 returnNONE 不做任何跳转 5 3 1实例说明自定义拦截器的应用 在struts xml中配置action配置及拦截器配置 代码如下 5 3 1实例说明自定义拦截器的应用 做这些简单的工作后 部署项目并启动服务器 在浏览器中输入 http localhost 8080 InterceptorTest test action 请求 再查看控制台 出现如图5 1所示的界面 可见 自定义拦截器起了作用 在Action执行前后分别输出了一句话 5 3 2应用拦截器处理重复提交 创建项目 本书将该项目命名为TokenInterceptor 加载Struts2类库 修改web xml文件 修改index jsp作为登录页面 登录界面 5 3 2应用拦截器处理重复提交 Action类LoginAction java为 packageorg action importcom opensymphony xwork2 ActionSupport publicclassLoginActionextendsActionSupport privateStringusername privateStringpassword 省略上述属性的get和set方法publicStringexecute throwsException returnSUCCESS 5 3 2应用拦截器处理重复提交 在struts xml中配置action及拦截器如下 welcome jsp wrong jsp 5 3 2应用拦截器处理重复提交 成功返回界面welcome jsp 欢迎界

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论