`
CoderDream
  • 浏览: 478385 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【张冰Struts2学习笔记】0403.struts.xml配置详解之三 拦截器配置

阅读更多

struts.xml 配置详解之三 拦截器配置

 

1.      拦截器( Interceptor )配置

拦截器能在action 被调用之前和被调用之后执行一些“代码”。Struts2 框架的大部分核心功能都是通过拦截器来实现的,如防止重复提交、类型转换、对象封装、校验、文件上传、页面预装载等等,都是在拦截器的帮助下实现的。

每一个拦截器都是独立装载的(pluggable) ,我们可以根据实际的需要为每一个action 配置它所需要的拦截器,例如,一个action 需要用来类型装换、文件上传,那么我们可以给它设置相应的两个拦截器。

1.1 、拦截器配置

代码清单 1 struts.xml 片段

< package name = "loginTest" extends = "struts-default">    

      < interceptors >

           <!-- 定义名为 timer 的拦截器 -->

           < interceptor name = "timer"

           class = "com.opensymphony.xwork2.interceptor.TimerInterceptor" />

           <!-- 定义名为 params 的拦截器 -->

           < interceptor name = "params"

class = "com.opensymphony.xwork2.interceptor.ParametersInterceptor" />

      </ interceptors >

 

      < action name = "login" class = "com.coderdream.action.LoginAction">

           < result name = "success"> /msg/loginSuc.jsp </ result >

          <!-- login action 指定拦截器引用,当 login action 被调用时,

                timer params 拦截器也会被调用 -->      

           < interceptor-ref name = "timer" />

           < interceptor-ref name = "params" />

      </ action >

</ package >

1.2 、拦截器栈配置

拦截器栈注意点:

1、 拦截器栈即引用其他拦截器,也可以引用其他拦截器栈;

2、 引用其他拦截器栈必须是当前包中 的栈,或者是“父”包中 的栈,如某包继承在默认包,则可以引用默认包中的栈;

代码清单 2 struts.xml 片段

< package name = "loginTest" extends = "struts-default">

      < interceptors >

           <!-- 定义名为 loginStack 的拦截器栈,拦截器栈可以包含其他拦截器栈,

           同时,该栈必须在本包或者 包中,如此处的 “struts-default” 包中 -->

           < interceptor-stack name = "loginStack">

                 < interceptor-ref name = "timer" />

                 < interceptor-ref name = "params" />

                 < interceptor-ref name = "basicStack" />

           </ interceptor-stack >

      </ interceptors >

 

      < action name = "login" class = "com.coderdream.action.LoginAction">

           < result name = "success"> /msg /loginSuc.jsp

          </ result >

           < result name = "input"> /msg /loginFail.jsp

          </ result >

           <!-- login actin 指定拦截器引用,引用名既可以是拦截器名,

                也可以是拦截器栈名 -->

           < interceptor-ref name = "loginStack" />

      </ action >

</ package >

1.3 、默认拦截器栈引用

代码清单 3 struts.xml 片段

< package name = "loginTest" extends = "struts-default">

      < interceptors >

           <!-- 定义名为 loginStack 的拦截器栈 -->

           < interceptor-stack name = "loginStack">

                 < interceptor-ref name = "timer" />

                 < interceptor-ref name = "params" />

                 < interceptor-ref name = "basicStack" />

           </ interceptor-stack >

      </ interceptors >

     

      <!-- 定义默认拦截器栈的引用 -->

      < default-interceptor-ref name = "loginStack" />

 

      <!-- 包中的所有 action 都将使用默认的拦截器栈引用 -->

      < action name = "login" class = "com.coderdream.action.LoginAction">

           < result name = "success"> /msg/loginSuc.jsp </ result >

      </ action >

      < action name = "user" class = "com.coderdream.action.UserAction">

           < result name = "success"> /msg/userSuc.jsp </ result >

      </ action >

</ package >

struts 的默认配置文件的默认包中,定义了默认拦截器栈的引用:

代码清单 4 struts-default.xml 片段

< package name = "struts-default" abstract = "true">

      < default-interceptor-ref name = "defaultStack"/>

</ package >

所以,如果在action 中定义了其他的拦截器引用,那么这个action 将不再使用默认的拦截器引用。

代码清单 5 struts.xml 片段

< package name = "loginTest" extends = "struts-default">    

      < action name = "login" class = "com.coderdream.action.LoginAction">

           < result name = "success"> /msg/loginSuc.jsp </ result >

          <!-- login action 指定拦截器引用,默认的拦截器不再起作用 -->      

           < interceptor-ref name = "timer" />

      </ action >

</ package >

 

我的联系方式: 85337464

我的博客: http://coderdream.iteye.com

 

0
0
分享到:
评论

相关推荐

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...

    【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法

    在"【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法"中,我们主要探讨的是如何在Struts2中有效地获取并处理用户提交的数据。以下是对这三种方法的详细解析: ### 1. 使用Action属性 Struts2的核心是...

    【张冰Struts2学习笔记】0201_Action接口与ActionSupport类

    同时,Struts2的配置文件(struts.xml或struts.properties)也需要定义Action的相关配置,如Action的名称、结果页面等。 在开发过程中,了解并熟练掌握`Action`接口和`ActionSupport`类的用法,能有效提高开发效率...

    【张冰Struts2学习笔记】0103_Path与绝对路径

    标题中的“【张冰Struts2学习笔记】0103_Path与绝对路径”表明了这篇笔记主要讨论的是Struts2框架中关于Path和绝对路径的概念及其应用。Struts2是一个流行的Java Web开发框架,它提供了强大的MVC(模型-视图-控制器...

    struts2 PPT 张冰

    在`详细的配置文件描述`中,可能会讲解struts.xml的结构和重要元素,例如Action配置、拦截器配置、全局结果和常量设置。此外,还可能涉及包配置,它是Struts2配置的模块化方式,允许组织和重用配置。 总的来说,...

    张冰主讲的struts2 ppt

    Struts2是一个强大的Java ...通过张冰主讲的Struts2 PPT,开发者不仅能学习到上述基础知识,还能了解到实际项目中的最佳实践和常见问题解决方案。这份PPT对于想要深入了解和掌握Struts2框架的人来说是一份宝贵的资源。

    张冰struts原代码(全部1-6)之五

    两者在设计和实现上有较大差异,例如Struts 2更倾向于使用拦截器(Interceptor)而非ActionServlet来处理请求。 "张冰struts原代码(全部1-6)"这个系列可能涵盖了上述所有知识点,通过实际代码示例帮助学习者深入...

    张冰struts原代码(全部1-6)之三

    2. **test-interceptor.rar**:拦截器是Struts 2的核心特性之一,用于在Action执行前后插入自定义逻辑。这部分可能涵盖了拦截器的定义、配置、自定义拦截器的编写,以及在实际应用中的使用场景,如日志记录、权限...

    Struts2_张冰_视频教程课件_PPT

    这个“Struts2_张冰_视频教程课件_PPT”资源是专门针对Struts2框架的学习资料,由知名讲师张冰制作,旨在帮助学习者深入理解并掌握Struts2的核心概念和技术。 首先,我们来探讨一下Struts2框架的基础知识。Struts2...

    张冰struts原代码(全部1-6)之二

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    张冰struts原代码(全部1-6)之六

    ActionForm对象负责收集和验证用户输入,而配置文件struts-config.xml定义了请求如何映射到Action。 2. **Action与ActionForm**:Action是处理业务逻辑的类,它接收来自控制器的请求,处理后返回结果。ActionForm则...

    张冰struts原代码(全部1-6)之一

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    张冰struts原代码(全部1-6)之四

    张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)张冰struts原代码(全部1-6)

    struts2.ppt完整包

    3. **配置文件**:Struts2的配置文件(如struts.xml)定义了Action的配置、拦截器栈、全局结果等,是控制应用程序行为的重要部分。 4. **拦截器(Interceptors)**:拦截器是Struts2的一个强大特性,它们在Action...

    张冰主讲的Struts2的PPT

    Struts2的配置方式也更加灵活,支持XML配置和注解配置,甚至可以通过Convention插件实现零配置开发。 登录功能的实现是许多web应用的基础,Struts2提供了一套完整的机制来处理用户登录请求,包括Action的定义、结果...

    Struts2 ppt

    3. **配置文件**:Struts2的配置主要在struts.xml文件中进行,用于定义Action的映射、结果类型、拦截器等。通过XML配置,可以灵活控制应用的行为。 4. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,...

    张冰老师的SSH2整合心得

    8. **Struts2配置**:在Struts2的配置文件(如`struts.xml`)中,定义Action、结果类型和拦截器栈。这将指定用户请求如何映射到Action,以及Action执行后如何返回结果。 9. **整合测试**:完成配置后,启动服务器,...

    C面向对象程序设计张冰PPT学习教案.pptx

    ### C面向对象程序设计——基于张冰PPT学习教案的关键知识点 #### 一、面向对象程序设计概述 在《C面向对象程序设计张冰PPT学习教案》中,作者通过具体的例子介绍了面向对象编程的基本思想及其与传统的结构化程序...

    传智播客Struts2的PPT

    传智播客Struts2的PPT,是传智播客黎活明老师的东西,和视频是配套的东西还不错

    C++面向对象程序设计 张冰 课件、源代码

    张冰教授的课件和源代码很可能是为了辅助学习这些概念而设计的,通过实际编程例子和练习,帮助学生加深理解和应用这些知识。源代码可能涵盖了各种面向对象的设计模式,如工厂模式、单例模式、观察者模式等,这些都是...

Global site tag (gtag.js) - Google Analytics