1.关于Result我们首先来学习一下结果类型 result type。

先来看struts.xml.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default"> <action name="r1">
<result type="dispatcher">
/r1.jsp
</result>
</action>
<action name="r2">
<result type="redirect">
/r2.jsp
</result>
</action>
<action name="r3">
<result type="chain">
r1
</result>
</action>
<action name="r4">
<result type="redirectAction">
r2
</result>
</action>
</package> </struts>

result的默认类型是dispatch,用于跳转到一个视图。

redirect可以进行跳转到一个新的页面。

这两者的区别可以这么解释一般注册的页面比如说提交到register.action注册完信息以后如果不跳转  用户可能会一直刷新这个页面 如果设计不好的程序 就会一直重复注册,注册完redirect出去 转到别的没有业务处理的页面只给提示一下注册成功。

<result type="chain">用于跳转到其他的action。若要访问其他包的action,可以用如下写法

<result name="r3" type="chain"> 
    <param name="actionName">重定向的Action名</param> 
     <param name="namespace">重定向Action所在的名字空间</param> 
</result>

<result type="redirectAction">用于直接跳转到其他action。

2.接下来通过一个小项目讲义下Global Result 全局结果集。

下图是主页

有四个链接,内容是

传递一个参数type 分别是 1 2 3.在UserAction.java里定义了一个type变量。当type为1返回“success”,为2返回“error”,为其他情况返回“mainpage”。

UserAction.java

package com.tfj.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override public String execute() throws Exception {
if(type==1) return "success";
else if(type==2) return "error";
else return "mainpage";
} }

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="mainpage">
/mainpage.jsp
</result>
</global-results> <action name="user" class="com.tfj.struts2.action.UserAction" > <result name="success">
/success.jsp
</result>
<result name="error">
/error.jsp
</result>
</action> </package>
<package name="admin" namespace="/admin" extends="user">
<action name="admin" class="com.tfj.struts2.action.UserAction" >
<result name="success">
/admin.jsp
</result>
</action>
</package> </struts>

返回的值为success 和error的情况都很好理解,当type为3时返回mainpage,但是在对应的action里并没有一个result叫mainpage。这时候就会去访问global result 。这种方式解决了假如有很多action都要去访问同一个地方这样我们把他们写到同一个Global result 减少配置量。

再看<package name="admin" namespace="/admin" extends="user">
    <action name="admin" class="com.tfj.struts2.action.UserAction" >
    <result name="success">
/admin.jsp
</result>
    </action>
    </package>

这段代码访问admin/admin?type=3时,也会访问到mainpage,这是由于admin包extends user包,这样就可以访问它的global result。

项目文件  Result part1.rar


Struts2 学习笔记 10 Result部分 part1的更多相关文章

  1. struts2学习笔记之七:Result类型

    一:关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法 他们体现了策略模式,具体Result类型参见:struts-default ...

  2. Struts2 学习笔记 11 Result part2

    之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...

  3. Struts2 学习笔记15 Struts标签 part1

    来说一下Struts标签,之前我们也很多地方用到了,还是来总结一下. 首先是property标签. <li>property:<s:property value="user ...

  4. Struts2学习笔记(四)——result结果类型

    当Action类的方法处理请求后,会返回一个字符串(逻辑视图名),框架根据这个结果码选择对应的result,向用户输出,所以需要在struts.xml提供<result>元素定义结果页面, ...

  5. Struts2学习笔记(三):result配置的各项视图转发类型

    Struts 1: <action path="/user" type="org.sunny.user.action.UserAction" ...> ...

  6. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  7. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  8. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  9. SQL反模式学习笔记10 取整错误

    目标:使用小数取代整数 反模式:使用Float类型 根据IEEE754标识,float类型使用二进制格式编码实数数据. 缺点:(1)舍入的必要性: 并不是所有的十进制中描述的信息都能使用二进制存储,处 ...

随机推荐

  1. 2013成都网赛 G(x) (HDU 4733)

    G(x) 思路: 首先搞清楚每个位置上的值有什么意义, 如果第i位的值为1则 第i位与第i+1位不同,反之相同. 然后考虑s1和s2为什么会不一样, 这是由于x+1后比特位进位导致的,于是得出一个性质 ...

  2. webService 客户端接口调用【java】

    最近实际项目中使用到了WebService,简单总结下使用方式: 1.拿到接口:http://*******:8080/osms/services/OrderWebService?wsdl 我们可以将 ...

  3. 使用Open Flash Chart(OFC)制作图表(Struts2处理)

    Java开源项目中制作图表比较出色的就是JFreeChart了,相信大家都听说过,它不仅可以做出非常漂亮的柱状图,饼状图,折线图基本图形之外,还能制作甘特图,仪表盘等图表.在Web应用中可以为项目增色 ...

  4. LR脚本自定义显示Controller虚拟用户状态

    在场景监控的过程中,想知道场景运行时Vusers的运行状态以及每一个Vuser虚拟用户在本次场景运行的过程共迭代了多少次,那么就需要在VuGen脚本中自定义显示虚拟用户状态信息. 代码如下: stat ...

  5. HTML5+CSS3项目总结

      经过一个月的学习,我基本掌握了HTML5的一些标签的用法和特性,以及一些CSS3的属性的特点和用法. 在本周安排的为期四天的第一阶段的课程的项目实训中,我基本能够熟练运用学到的知识,完成页面的速度 ...

  6. json的js和C#操作

    C#端的WebService接口接收json格式数据,处理后以json格式返回result using System; using System.Collections.Generic; using ...

  7. 基础命名空间:反射 using System.Reflection

    反射概念:       .Net的应用程序由几个部分:‘程序集(Assembly)’.‘模块(Module)’.‘类型(class)’组成,程序集包含模块 模块包含类型,类型又包含 成员,而反射提供一 ...

  8. Qt 'void QWidget::show()' is inaccessible

    今天在编写Qt窗体头文件时,尽然碰到了这样的报错,'void QWidget::show()' is inaccessible,'QWidget' is not an accessible base ...

  9. python中json的操作示例

    先上一段示例 # -*- coding: cp936 -*- import json #构造一个示例数据,并打印成易读样式 j = {} j["userName"]="a ...

  10. 轻松实现HTML5时钟(分享下自己对canvas的理解,原来没你想像的那么难哦)

    Hey,guys! 让我们一起用HTML5实现一下简易时钟吧! 接触canvas时, 我突然有一种非常熟悉的感觉------canvas的部分的功能其实和Photoshop中的 钢笔工具 是一样的.所 ...