struts2学习:配置篇 值请求处理元素

对请求进行处理的元素主要有interceptors、Action以及Result。下面分别对其进行讲述。

1.拦截器配置(interceptors)

通过使用拦截器,我们可以在action中的方法执行之前先执行一些我们事先定义好了的方法,也可以在action中的方法执行之后立即执行一些我们事先定义好了的方法。在开发的过程中,拦截器将是一个强有力的工具。拦截器有很多很多的功能,如校验、属性封装、安全、日志等等,如下表所示:

表1:拦截器功能表

校验(validation)

检查输入是否正确

属性封装(property population)

将输入传输和转化为对象的属性

日志(logging)

记录关于每个action的详细信息

切面(profiling)

记录action的吞吐量,寻找性能瓶颈(不是很懂)

我们可以将多个拦截器链接在一起形成一个拦截器栈。比方说一个action不仅要对客户端的资格进行审查,还要记录它自己的行为,那么我们可以将实现这两个功能的拦截器放在一起,形成一个拦截器栈(interceptor stack)。拦截器是以java类的形式实现的,因此每一个拦截器都有一个唯一的类名。为了让对拦截器的参考更加容易,我们可以在框架中为每个拦截器注册一个更简单的名字。下面给出了一个注册拦截器的例子:

<interceptors>
<interceptor name="security" class="com.company.security.SecurityInterceptor"/>
<interceptor-stack name="secureStack">
<interceptor-ref name="security"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>

在定义一个拦截器栈的时候,单个的拦截器和拦截器栈可以以任意的顺序混合在一起,struts框架将会按照拦截器在栈里面的顺序调用它们。大多说应用程序都会定义一个默认的拦截器栈,如:<default-interceptor-ref name="defaultStack"/>,默认的拦截器栈会作用于package中的每个action上。当然action还可以定义它自己的本地(局部)栈,如下面例子所示:

<action name="VelocityCounter" class="org.apache.struts2.example.counter.SimpleCounter">
<result name="success">...</result>
<interceptor-ref name="defaultComponentStack"/>
</action>

时间: 2024-11-01 10:56:09

struts2学习:配置篇 值请求处理元素的相关文章

Emit学习-答疑篇-值类型和引用类型在使用时的区别

今天下午兴冲冲的写完一段IL代码,用Reflector转成C#代码看了下,没有问 题,于是引用持久化到硬盘上的动态程序集,想要试一下其中的方法,但是运行 后却出现了System.AccessViolationException,提示信息为:"尝试读取或写入 受保护的内存.这通常指示其他内存已损坏.".看着错误提示一阵头大,新配 的电脑内存损坏是不太可能了,只好从自己的程序中找原因. 经过一阵调试,终于找到了引发异常的地方,是在构造函数中用 DateTime.Now.Millisecon

struts2基本配置

 Struts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西).Struts2实际上是在Webwork基础上构建起来的MVC框架.我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包. 1.web.xml的作用 web.xml核心代码: <filter> <filter-name>struts2</

Struts2学习之------&amp;gt;Struts2的详细的复习讲解

Struts2的复习 开发struts2所需要的包 Struts2的启动配置 Struts2的配置文件是放在src的目录下,但是struts1的配置文件是放在WEB-INF的目录下 Struts2的struts.xml文件 <struts> <!-- 这是 package里面有一个属性abstract如果设置为true,那么它下面不允许再写action--> <!--name是为每个action取一个唯一的名字(因为可能下面有action需要继承它),千万记得namespac

Duwamish深入剖析-配置篇

Duwamish深入剖析-配置篇 摘要: 本文详细介绍了Duwamish网上电子书店的Web.config配置文件的结构处理方式以及用途,阐述了配置文件的各功能模块中的作用. 目录: 引言 配置节处理程序声明 自定义配置节 配置节处理程序 总结 参考资料 作者 引言: 几乎在每本介绍Asp.Net编程的书里,在谈到如何管理数据库连接字符串的时候,都是采用将数据库连接字符串以如下形式放在Web.Config文件中: ppSettings> dd key="ConnectionString&q

java hibernate-hibernate和struts2学习中的问题

问题描述 hibernate和struts2学习中的问题 解决方案 404找不到资源,检查下你的配置action和struts.xml的映射请求路径是否符合xml的配置规则 解决方案二: 把action贴出来看看 解决方案三: 404路径错误,看看你struct.xml里面的action的配置路径,和你页面跳转的路径是否一致 解决方案四: action 无法完成映射, 注意下你的action 和 struct.xml的配置是否一致, 还有就是检查一下action本身是否有问题

SSH——Struts2引入配置

                         MVC架构与传统的WebForm从代码上感觉,主要还是请求被服务器收后怎么个处理流程的问题.对于传统WebForm,客户端访问时候,输入的是页面的地址,请求通过处理管道,然后请求对象被交给页面的后台代码生成类处理(.NET),处理的结果以标签形式被绑定到页面上:或者是访问页面之后,在页面加载中加入AJAX代码,异步获取数据,将数据绑定到页面:这两种方式都是以页面为中心的:出现MVC之后,服务端代码的关注点就不在页面上了.客户端请求的时候,请求的是

Home Lab家庭实验室搭建之网络配置篇

本文讲的是Home Lab家庭实验室搭建之网络配置篇,在本文中,我将介绍构建网络的基本设置,这是一个简单的平面化网络,处于作为防火墙,NAT,DHCP和VPN的路由器的后面. 第一个操作是创建一个虚拟交换机,该平面网络中的所有虚拟机都将连接到该虚拟交换机. 几乎所有的虚拟解决方案都支持在一个名称或另一个名称下配置虚拟交换机.由于我为我的家庭实验室选择了ESXi,下文中所显示的命令都是用于此平台的命令,但一般来说,你可以使用Hyper-V或XenServer完成相同的操作. 我通过命令行显示所有步

Spark学习之键值对(pair RDD)操作(3)

Spark学习之键值对(pair RDD)操作(3) 1. 我们通常从一个RDD中提取某些字段(如代表事件时间.用户ID或者其他标识符的字段),并使用这些字段为pair RDD操作中的键. 2. 创建pair RDD 1)读取本身就是键值对的数据 2)一个普通的RDD通过map()转为pair RDD,传递的函数需要返回键值对. Python中使用第一个单词作为键创建出一个pair RDD pairs = lines.amp(lambda x: (x.split(" ")[0],x))

JavaScript 学习 - 提高篇_javascript技巧

JavaScript 学习 - 提高篇 一. JavaScript中的对象. JavaScript中的Object是一组数据的key-value的集合, 有点类似于Java中的HashMap, 所有这些数据都是Object里的property. 通常情况下, JavaScript中建立一个对象用"new"加上constructor function来实现. 如new Date(), new Object()等. var book = new Object();book.name = &