第四章 Adding workflow with interceptor(下)
16. 拦截器只能通过XML文件来配置,不支持Java annotations方式。
17. 在struts.xml类型的文件声明中,interceptors包含一个package中所有的拦截器和拦截器栈
例如struts-default.xml文件中:
<interceptors>
……
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
<interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
……
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
……
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*</param>
</interceptor-ref>
……
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="defaultStack"/>
interceptor用于描述一个拦截器,仅仅是将拦截器名同class对应起来,并不和任何action相结合
interceptor-stack和interceptorref用于定义拦截器栈
default-interceptor-ref用于指定一个package默认的拦截器(栈)
18. 通常情况下,自己定义的actions所在的package通常继承自struts-default.xml,因此也会默认继承defaultStack拦截器栈
可以根据自己的需要修改action的参数,加入需要的拦截器如下所示:
<action name="MyAction" class="org.actions.myactions.MyAction">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="defaultStack"/>
<result>Success.jsp</result>
</action>
当然timer和logger拦截器并没有做什么工作,一般需要在最后加上defaultStack拦截器栈或者自己定义的其他拦截器栈,例如缺少了params拦截器,request中的数据都无法保存到action中,更不要说其他工作了
19. 设置拦截器的参数,例如defaultStack拦截器栈中的workflow拦截器
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
覆盖拦截器的参数,例如覆盖defaultStack拦截器栈中的workflow拦截器的参数
<action name="YourAction" class="org.actions.youractions.YourAction">
<interceptor-ref name="defaultStack">
<param name="workflow.excludeMethods">doSomething</param>
</interceptor-ref>
<result>Success.jsp</result>
</action>
20. 实现自己的拦截器通常需要继承AbstractInterceptor或者实现Interceptor
21. SessionAware接口
Actions that want access to the user's HTTP session should implement this interface.
接口包含的方法
/**
* Sets the Map of session attributes in the implementing class.
* @param session a Map of HTTP session attribute name/value pairs.
*/
public void setSession(Map session);
22. ActionInvocation的一个重要方法
Map session = actionInvocation.getInvocationContext().getSession();
分享到:
相关推荐
### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...
- **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...
本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...
笔记中可能详细讲解了Struts2的配置文件,如struts.xml,它是整个应用的配置中心,定义了Action的映射、结果类型、拦截器栈等。在Action配置中,我们可以指定Action类、方法以及对应的URL路径,实现请求与业务的关联...
13. ** strut2四天笔记**:这份学习笔记可能涵盖了以上所有知识点,包括如何创建Action,配置struts.xml,使用OGNL表达式,处理异常,以及实践中的各种技巧和最佳实践。 在四天的学习过程中,你应该通过实践和理解...
本课程笔记主要涵盖了Struts2的基础概念、核心功能及其工作流程。 首先,Struts2的处理流程是通过一系列的组件协作完成的,包括Filter Dispatcher(过滤器调度器)、Action、Interceptor(拦截器)和Result。当用户...
### 魔乐科技Struts2.x框架笔记详解 #### 一、框架开发基础与特性 **框架开发来源**:框架开发的核心在于反射机制的应用,它使得开发者能够以更为灵活的方式构建应用程序。在Struts2.x框架中,这一点体现得尤为...
这篇读书笔记主要涵盖了Struts2的核心概念和配置细节,对于初学者来说,是理解Struts2工作原理和配置的宝贵资料。 1. Package配置: 在Struts2中,`<package>`元素用来组织和配置相关的Action。`name`属性定义了包...
本笔记主要涵盖了Struts2的基础知识,包括但不限于配置、Action、拦截器、结果类型以及异常处理等内容。 1. **Struts2框架简介** Struts2是Apache软件基金会的一个开源项目,它是Struts1的升级版,弥补了Struts1在...
根据给定的文件信息,以下是对Struts2学习笔记中涉及的关键知识点的详细解析: ### Struts2框架概览 #### MVC模式的理解与演进 Struts2是基于MVC(Model-View-Controller)模式设计的一种Java Web开发框架。在MVC...
### Struts2 技术内幕读书笔记(1) #### WEB开发浅谈 ##### 面向对象浅谈 面向对象编程(Object-Oriented Programming,OOP)是一种软件开发范式,它通过模拟现实世界中的对象及其交互来构建程序结构。这种编程...
本文将深入探讨Struts2的核心概念,包括Namespace、标签、Action以及它们在实际开发中的应用。 一、Namespace Namespace在Struts2中主要用于组织和隔离Action,它决定了Action的访问路径。默认情况下,Namespace为...
Struts2是一个强大的MVC(Model-...Struts2的核心配置文件是`struts.xml`,它负责定义Action、拦截器栈、结果类型、包配置等。在这个文件中,你可以声明你的Action类,定义它们对应的方法以及结果页面。例如: ```xml ...
### Struts2 综合知识点解析 #### 一、Struts2 概述与历史背景 **Struts2** 是一款流行的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发过程。Struts2 提供了一...
### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...
2. **Package**:包是Struts2中的一个关键概念,用于组织相关的Action和结果(Result)。包可以继承其他包,从而实现配置的复用和分层。`package`标签的属性包括name、extends、namespace等,其中,namespace用于...
本篇超详细学习笔记将带你逐步深入理解Struts2的核心概念和运作机制。 首先,让我们了解Struts2的基本特性。Struts2是一个基于Servlet的框架,它通过将JSP作为视图(View),Servlet作为控制器(Controller),并将...
2. **struts.xml文件**: 此文件是Struts2的主要配置文件,用于定义应用程序的业务逻辑,如Action映射、拦截器栈等。 - **配置示例**: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD ...
本笔记将深入探讨Struts2的核心概念、执行流程、类型转换、输入验证和国际化等方面。 **一、Struts2框架基础** Struts2是Apache软件基金会的一个开源项目,它是基于拦截器的MVC框架,继承了WebWork框架的优点。...
4. **Struts2_2.1.6版本的中文问题** 在某些版本的Struts2中,可能出现处理中文字符集的问题。这可能需要配置应用服务器或web.xml以指定正确的字符编码,如设置`<filter>`和`<filter-mapping>`元素以使用UTF-8编码...