一个result代表了一个可能的输出,当Action类的方法执行完成时,它返回一个字符串的结果码,框架根据这个结果码选择对应的result,向用户输出。
result元素有两个属性
name:指定result的逻辑名
type:指定result的类型,不同类型的result代表了不同类型的结果输出
在result元素中,可以使用param子元素来指定这个结果对应的实际资源的位置。param元素有一个必须的属性name,用于指定参数名,param元素的内容给出参数值。如果要指定资源的位置,name属性的值需要设置location,例如:

<packeage name="default" extends = "struts-default"><action name="login" class="org.struts.action.LoginAction"><result name="success" type="dispatcher"><!-- param 元素作为result的子元素,用于为该类型的result设置参数 --><param name="location">/success.jsp</param></result><result name="error" type="dispatcher"><param name="location">/error.jsp</param></result><action>
</package>

结果类型
chain:用于Action链式处理
dispatcher:用于Web资源的集成,包括JSP的集成
freemarker:用于FreeMarker的集成
httpheader:用于控制特殊的HTTP行为
redirect:用于重定向到另外的URL
redirectAction:用于重定向到另外的action映射
stream:用于向浏览器返回一个InputStream(通常用于文件下载)
velocity:用于Velocity集成
xslt:用于XML/XSLT集成
plainText:用于显示某特定页面(JSP、HTML)的原始内容(页面代码)
dispatcher
struts2的默认结果类型是dispatcher,也是最常用的结果类型。
dispatcher有两个属性:location和parse,这两个属性都可以通过Struts.xml配置文件中的result元素的param子元素来设置。param元素的name属性指定的结果类型实现类的属性名,param元素的内容给出属性的值,例如:

<result name="success" type="dispatcher"><param name="location">/success.jsp?id={id}</param><param name="parse">true</param>
</result>

location参数用于指定action执行完毕后要转向的目标资源,parse属性是一个布尔类型,如果为true,则解析location参数中的OGNL表达式;如果为false,则不解析。默认为true。由于Dispatcher是默认类型,可以配置为:

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

redirect
在使用redirect结果类型的场景中,用户要完成一次与服务器之间的交互,浏览器需要发出两次请求:

例如:在用户登录程序中,用户登录成功后,我们使用redirect结果类型将其重定向到欢迎页面,在欢迎页面中需要显示用户名,那么在配置结果映射时,可以使用OGNL表达式

<action name="login" class="org.struts.action.LoginAction"><result type="redirect">welcome.jsp?username={username}</result><result name="error">/error.jsp</result>
<action>

redirectAction
redirectAction和redirect的区别是前者主要是用于重定向到action
例如:

<package name="public" extends="struts-default"><action name="login" class="..."><result type="redirectAction"><param name="actionName">dashboard</param><param name="namespace">/secure</param></result></action>
</package>
<package name="secure" extends="struts-default" namespace="/secure"><action name="dashboard" class="..."><result type="redirectAction">dashboard.jsp</result><result name="error" type="redirectAction">error</result></action><action name="error" class="..."><result>error.jsp</result></action>
</package>

全局结果
在某些场景中,可能有多个action需要访问同一个结果,例如在论坛系统中,用户在发帖、回帖、搜索帖子时都需要先登录,那么我们就可以配置一个全局的login结果,这样action就不需要一 一配置login结果了。
例如:

<package name="default" extends="struts-default" namespace="/bbs"><global-results><result name="error">/error.jsp</result><result name="login" type="redirectAction">login!input</result></global-results><action name="addAriticle" class="..."><result>list.jsp</result></action><action name="login" class="..."><result>index.jsp</result></action>
</package>

动态结果
所谓动态结果就是在配置时不知道要执行哪一个结果,在运行时在能确定,例如,一个公司的内部办公系统,它根据用户登录身份来决定可浏览的资源。雇员可访问EmployeeAction,经理可以访问ManagerAction,代码如下:

public class LoginAction extends ActionSupport{private User user;// 用于保存请求重定向到action的名字private String nextAction;// 提供getter方法,在result映射中使用表达式访问nextActionpublic String getNextAction(){return nextAction;}@Overridepublic String execute throws Exception{if(...)// 验证用户名、密码{if(user.isManager()){nextAction = "manager";}elsenextAction = "employee";return SUCCESS;}elsereturn ERROR;}
}

下面在看看Struts.xml配置

<package name="default" extends="struts-default" namespace="/bbs"><action name="login" class="..."><result type="redirectAction">${nextAction}</result><result name="error">/error.jsp</result></action><action name="employee" class="...."></action><action name="manager" class="...."></action>
</package>

深入详解Struts2——struts.xml配置之Result配置详解相关推荐

  1. struts2——struts.xml配置文件详解

    文章目录 介绍 一.struts.xml 文件结构 二.常量配置 三.包配置 四.包含配置 介绍 struts.xml 是 Struts2 框架的核心配置文件,该文件主要用于配置 Action 和请求 ...

  2. Struts2-关于struts.xml文件的action配置的说明

    一.Action的说明: Struts2的核心功能就是action,对于开发者,使用Struct2框架的主要工作就是编写Action类来实现业务.action类可以不用继承任何父类和实现任何接口,但是 ...

  3. struts.xml配置文件中result的语法

    struts.xml配置文件中result的语法:xxxxx Struts2支持的不同类型的返回结果为: Chain Result-->type="chain" 用来处理Ac ...

  4. struts2配置详解(struts.xml配置详解)

    本文转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Stru ...

  5. Struts2-关于struts.xml文件的package配置的说明

    一个较为完整的action定义: <struts><package name="default" extends="struts-default&quo ...

  6. struts2 struts.xml 配置(转载)

    he URL extension to use to determine if the request is meant for a Struts action             用URL扩展名 ...

  7. 上struts2的xml在lt;result type=quot;redirectquot;gt;参数问题

    今天做项目,我遇到了一个精彩的问题. 我需要在struts的xml中的<action>的<result>中配置type="redirect".同一时候须要传 ...

  8. Struts2的配置 struts.xml Action详解

    在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...

  9. struts2.1.6教程二、struts.xml配置及例程

    1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts. ...

最新文章

  1. 包子和饺子之扫地机器人_扫地机器人和体重秤在一起,能生出什么宝宝? | 爆笑囧图...
  2. 一文深度解析线性表的前世今生!!!
  3. 配置token_Nginx常用的配置
  4. fiddler自动保存mysql_Fiddler模拟自动响应数据
  5. 【SA 认证课】来啦 这次陪你过双 11
  6. vb6 方法‘ ’作用于对象 失败_JS基础入门-对象的使用
  7. 如果再出恶性安全事件,滴滴会有人被追究刑责吗?
  8. 【恋上数据结构】快速排序
  9. 将数所有奇数移到数组前java_全国2014年4月自考Java语言程序设计(一)真题
  10. 2.PHP7内核剖析 --- SAPI
  11. 怎样对计算机窗口进行截图,Windows10:如何对计算机屏幕上的内容进行屏幕截图...
  12. Oracle数据库的【安装包选择、下载】、安装与卸载
  13. 最新版Ubuntu新建文档
  14. 给图片添加文字(换行)水印
  15. 自动与Internet时间服务器同步
  16. 无盘服务器要开ahci,开启硬盘的ahci模式提升磁盘性能教程
  17. linux带密码解压密码,linux 下文件加密压缩和解压的方法
  18. 基于Springboot的电商系统开题报告
  19. Java 验证日期/时间的有效性
  20. Volocopter将在新加坡推出空中的士服务;铂金资本72亿美元收购海航旗下英迈 | 美通企业日报...

热门文章

  1. vue 动态路由的实现(后台数据,前台拿到数据生成侧边栏)
  2. php语言流行吗,为什么PHP会成为目前最流行的语言
  3. 压力袜和针织品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. Nature Microbiology | 陈云/白洋/虞云龙等鉴定高效抗小麦赤霉病菌株及其作用机制...
  5. mysql显示错误Access_关于mysql的access denied 错误解决方案
  6. Windows电脑点击开始菜单无反应
  7. 初中生计算机网络试题,中学生2020年信息考试考试题库120份试卷汇编(含答案)(50页)-原创力文档...
  8. mysql executereader_ExecuteReader()对象不能被转换
  9. 02 HTML标签学习1
  10. pom文件parent标签报错解决办法(不同的方法)