`
a68091555
  • 浏览: 25991 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2常用result类型用法

阅读更多

一、dispatcher

(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:
Xml代码  收藏代码

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

以上写法使用了两个默认,其完整的写法为:


<result name="success" type="dispatcher"> 
        <param name="location">/maini.jsp</param> 
</result> 

第一个默认:type="dispatcher";第二个默认:设置的为location参数,location只能是页面,不能是另一个action(可用type="chain"解决)。

(2)实现方式

从doExecute方法看出,有三个出口(finalLocation为要跳转的地址):
          pageContext.include(finalLocation);
          dispatcher.forward(request, response); (dispatcher是根据finalLocation创建的)
          dispatcher.include(request, response);
而我们知道,forward与include都是转发到context内部的资源。



二、redirect

(1)可以重定向到一个页面,另一个action或一个网址。

<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>

(2)实现方式:

查看doExecute方法,只有一个出口:

response.sendRedirect(finalLocation);

sendRedirect是重定向,是重新产生一个HTTP请求到服务器,故重定向后其原来所在的action上下文就不可用了。





三、chain

(1)主要用于把相关的几个action连接起来,共同完成一个功能。

<action name="step1" class="test.Step1Action">
        <result name="success" type="chain">step2.action</result>
</action>

<action name="step2" class="test.Step2Action">
        <result name="success">finish.jsp</result>
</action>

(2)实现方式:

查看execute()方法,主要思想如下:

// 根据Action名称finalActionName及要调用的方法finalMethodName来new一个代理对象proxy,并执行之

proxy = actionProxyFactory.createActionProxy(finalNamespace,
                  finalActionName, finalMethodName, extraContext);
proxy.execute();

(3)多个action间数据的传递

主要有两种方式:

1。由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用。手动获取的方法如下:

HttpServletRequest request = ServletActionContext.getRequest();
String s=(String)request.getAttribute("propName");

2。实现ModelDriven接口

在Step1Action中,加入getModel:
public Object getModel() {
        return message;
}

在Step2Action中,加入setModel:


public void setModel(Object o){
        System.out.println("message is:"+o);
}

注意,setModel的调用先于execute()方法后于构造方法。
分享到:
评论

相关推荐

    struts2中常用Result类型(type)的用法和出现的问题

    struts2 常用Result类型(type)的用法 Invalid result location value/parameter错误的解决办法

    Struts2入门教程(全新完整版)

    10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7....

    Struts2 in action中文版

    8.1.1 页面上:如何使用自定义结果组件构建Struts 2 Ajax应用程序 171 8.1.2 实现JSON结果类型 173 8.2 常用的结果类型 180 8.2.1 RequestDispatcher,也叫做dispatcher 180 8.2.2 ServletRedirectResult,也叫做...

    Struts2 国际化字符串 拦截器

    下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: &lt;result type="velocity"&gt;/HelloWorld.vm&lt;/result&gt; 例3 ...

    struts2 详解文档

    介绍Struts 2及Struts 2开发环境的搭建 第一个Struts 2应用开发 解决Struts 2配置文件无提示问题 ...Struts 2常用标签解说 使用标签防止表单重复提交 Struts 2+Spring 2.5+Hibernate 3.3整合开发

    Struts2学习笔记(8)-Result常用类型

    主要介绍Struts2中Result四种常用的类型的用法,希望能给大家做一个参考。

    低清版 大型门户网站是这样炼成的.pdf

    2.1.6 struts 2的处理结果result 45 2.1.7 功能强大的表达式语言ognl 47 2.1.8 struts 2的运行流程分析—helloworld 48 2.1.9 struts 2的异常处理 52 2.2 struts 2配置精要 54 2.2.1 web.xml中struts 2的配置...

    拦截器和控制器的区别

    3、starts2的使用思路 1、jar 2、配置文件 3、常用类 servletActionContext 4、访问流程 url -&gt; filter -&gt; struts.xml -&gt; package -&gt; action -&gt; name="userAction_*" -&gt; class -&gt; method="{1}" 5、核心struts.xml...

    Java学习笔记-个人整理的

    {8.1}线程的常用属性与方法}{121}{section.8.1} {8.2}后台线程}{123}{section.8.2} {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section....

    Java面试宝典2020修订版V1.0.1.doc

    11、struts.xml中result的type有哪些类型? 91 12、什么时候用JDBC什么时候用Hibernete; 91 13、hibernate 数据的三个状态 91 14、Hibernate中load和get的区别? 92 15、Hibernate的工作原理? 92 16、hibernate优...

Global site tag (gtag.js) - Google Analytics