【学习笔记】Struts2之配置处理结果
Action只是Struts2控制器的一部分,所以它不能直接生成对浏览者的响应。Action只负责生成响应的视图组件,通常是JSP页面,而Action会为JSP页面提供显示数据。
Action处理完用户的请求后,将会返回一个普通字符串(称之为逻辑视图),Struts2框架收到这个逻辑视图后,把请求转发到对应的视图资源,视图资源将结果呈现给用户。必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可以让系统转到实际的视图资源。
一、配置结果
Struts2在struts.xml中使用<result…/>元素来配置结果,根据该元素所在位置的不同,Struts2提供了两个结果。
- 局部结果:将<result…/>作为<action…/>元素的子元素配置。
- 全局结果:将<result…/>作为<global-result…/>元素的子元素配置。
配置<result…/>元素时通常需要指定如下两个属性:
- name:该属性指定所配置的逻辑视图名,缺省值为success。
- type:该属性指定结果类型,缺省值为dispatcher(用于与JSP整合的结果类型),可以通过修改配置文件改变默认的结果类型。
典型的<result…/>配置片段如下:
<action name="abyss" class="abyss.LoginAction" >
<result name="success" type="dispatcher" >
<param name="location">/thank.jsp</param>
</result>
</action>对于不同的结果类型,<param../>元素的name属性的参数是不同的,在此处<param…/>元素的name属性可以为如下两个值:
- location:该参数指定了该逻辑视图对应的实际视图资源。
- parse:该参数指定是否允许在实际视图名称中使用OGNL表达式,该参数默认为true。
通常无须指定parse参数的值,所以常常采用一下简化形式来配置实际视图资源。
<action name="Login" class="abyss.LoginAcion" >
<result name="success" type="dispatcher">/thank.jsp</result>
</action>
二、Struts2支持的结果类型
Struts2支持使用多种视图技术,例如JSP、Velocity和FreeMarker等。
结果类型决定了Action处理结束后,下一步将调用哪种视图资源来呈现处理结果。
Struts2的结果类型要求实现com.opensymphony.xwork2.Result,这是所有结果类型的通用接口,如果我们要自定义结果类型就需要实现该类。
Struts2默认提供了一些结果类型,位于struts-core-2.2.1.jar中的struts-default.xml中,下面是配置片段:
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>从上面可以看出如果指定了default="true"属性,表示该类型是默认结果类型。
三、Action属性配置视图资源
配置<result…/>元素时,可以使用${属性名}的方式来指定视图资源。${属性名}里的属性名就是对应Action实例里的属性,并且还可以使用完全的OGNL表达式,即${属性名.属性名.属性名}。例如:
<action name="login" class="org.crazyit.app.action.LoginAction">
<result name="success">/${result}.jsp</result>
</action>其中视图资源由LoginAction类中的result属性决定的,如果LoginAction类中没有result属性,则值为null。
四、使用preResultListener
PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。(可以理解为,定义一个函数beforeResult(),在页面转到视图资源之前,系统会自动调用该函数)。
PreResultListener监听器可由Action和拦截器添加。一旦为Action添加PreResultListenr监听器,该监听器会自动调用beforeResult()方法;一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的所有Action起作用。
在Action中添加示例如下:
ActionContext.getContext().getActionInvocation().addPreResultListener(
new PreResultListener(){ @Override
public void beforeResult(ActionInvocation invocation, String resultCode) {
invocation.getInvocationContext().put("extra", new Date()+"由"+resultCode+
"逻辑视图名转入");
} });
【学习笔记】Struts2之配置处理结果的更多相关文章
- 学习笔记_J2EE_SpringMVC_03_注解配置_@RequestMapping用法
@RequestMappingde的用法 摘要: 主要介绍注解@RequestMapping的用法 一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMappi ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])
目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...
- Qt5学习笔记(1)-环境配置(win+64bit+VS2013)
Qt5学习笔记(1)-环境配置 工欲善其事必先-不装-所以装软件 久不露面,赶紧打下酱油. 下载 地址:http://download.qt.io/ 这个小网页就可以下载到跟Qt有关的几乎所有大部分东 ...
- MVC缓存OutPutCache学习笔记 (一) 参数配置
OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...
- 树莓派学习笔记——USB wifi配置指南
0 前言 树莓派既能够使用有线网络又能够无线网络,假设使用有线网络不方便的话能够借助USB wifi无线网卡让树莓派也插上无线"翅膀". 可是和使用有线网络即插即用的方式不 ...
- 驱动开发学习笔记. 0.01 配置arm-linux-gcc 交叉编译器
驱动开发读书笔记. 0.01 配置arm-linux-gcc 交叉编译器 什么是gcc: 就像windows上的VS 工具,用来编译代码,具体请自己搜索相关资料 怎么用PC机的gcc 和 arm-li ...
- struts2框架学习笔记2:配置详解
核心配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC ...
- Struts2学习笔记(三):result配置的各项视图转发类型
Struts 1: <action path="/user" type="org.sunny.user.action.UserAction" ...> ...
- 深度学习笔记------linux下配置安装caffe-cpu only模式
本文适合初学者学习配置caffe的最简单方法.这是我在看了网上各种大神的方法后总结的最傻瓜式的配置方法了. 本人也是在不断地配置caffe过程中受打击与成长@.@ 第一步.配置caffe所需的依赖环境 ...
随机推荐
- shell 脚本之 shell 练习题汇总
整理了一些 shell 相关的练习题,记录到这里. 1. 请按照这样的日期格式 xxxx-xx-xx 每日生成一个文件,例如:今天生成的文件为 2013-09-23.log, 并且把磁盘的使用情况写到 ...
- 用ORM的思想操作XML文档,一个对象就搞定不要太简单。滚蛋吧!XmlDocument、XmlNode、Xml***……
大家有没有这样的感受,一涉及XML文档操作就得百度一遍.是不是非!常!烦!.各种类型,各种方法,更别提为了找到一个节点多费劲.本来想写个XML操作的工具方法,写了两行一想既然XML文档是有规律的,如果 ...
- mac 键盘映射 karabiner
mac 键盘映射 karabiner 今天在vim编辑的时候觉得用mac的方向键有点麻烦 需要移动我的小右手,然后就搜个映射方案. 百度出来了 karabiner. 官网 安装什么的就不说了, 安完了 ...
- everything + autohotkey的配合使用
一,everything是文件搜索神奇,瞬间定位到文件,在众多的文件中找到你需要的文件.(百度下载就好,分32位和64位) 二,autohotkey是热键启动设置,方便的打开常用的应用. 直接使用 ...
- 【python之路1】python安装与环境变量配置
直接搜索 Python,进入官网,找到下载,根据个人电脑操作系统下载相应的软件.小编的是windows os .下载python-2.7.9.msi 安装包 双击安装程序,进入安装步骤.在安装过程中 ...
- AC日记——丑数 codevs 1246
1246 丑数 USACO 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 对于一给定的素 ...
- cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:annotation-driven'.
spring 配置文件报错报错信息:cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be ...
- Docker初体验
## Docker初体验 安装 因为我用的是mac,所以安装很简单,下载dmg下来之后拖拽安装即可完成. 需要注意的就是由于之前的docker是基于linux开发,不支持mac,所以就出现了docke ...
- Linus:C++是一种糟糕的语言
本文内容摘自http://blog.csdn.net/turingbook/article/details/1775488 C++是一种糟糕的(horrible)语言.而且因为有大量不够标准的程序员在 ...
- openwrt下部署adbyby去广告大师 免luci 带自启动,自动开启透明代理
最近朋友送了个360老路由器 C301,于是乎就掉进了智能路由器的坑, 玩智能路由器第一件事一定是去广告, 要么怎么对得起智能路由器- -! 路由器去广告当然首推广告屏蔽大师 www.adbyby.c ...