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

struts2中常用Result类型的用法

阅读更多
一、dispatcher

(1)为缺省的result类型,一般情况下我们在struts.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 in action中文版

    6.7.2 Struts 2中常用的表达式语言特性 131 6.7.3 表达式语言的高级特性 135 6.8 小结 137 第7章 UI组件标签 139 7.1 为什么需要UI组件标签 139 7.2 标签、模板和主题 144 7.2.1 标签 146 7.2.2 模板 146 7.2.3 ...

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

    1.概述strust2中的拦截器 28 2.自定义拦截器 28 方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 ...

    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.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的国际化 87 2.4.3 struts 2国际化语言的动态切换 89 2.5 struts 2的校验框架 90 2.5.1 在...

    拦截器和控制器的区别

    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