struts2中常用Result类型的用法

宸瑜 2012-01-30 03:03:13
一、dispatcher

02

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

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

05

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

07 # <result name="success" type="dispatcher">

08 # <param name="location">/maini.jsp</param>

09 # </result>

10

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

12

13 (2)实现方式

14

15 从doExecute方法看出,有三个出口(finalLocation为要跳转的地址):

16

17 pageContext.include(finalLocation);

18

19 dispatcher.forward(request, response); (dispatcher是根据finalLocation创建的)

20

21 dispatcher.include(request, response);

22

23 而我们知道,forward与include都是转发到context内部的资源。

24

25 二、redirect

26

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

28 # <result name="success" type="redirect">aaa.jsp</result>

29 # <result name="success" type="redirect">bbb.action</result>

30 # <result name="success" type="redirect">www.baidu.com</result>

31

32 (2)实现方式:

33

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

35

36 response.sendRedirect(finalLocation);

37

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

39

40 三、chain

41

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

43 # <action name="step1" class="test.Step1Action">

44 # <result name="success" type="chain">step2.action</result>

45 # </action>

46 #

47 # <action name="step2" class="test.Step2Action">

48 # <result name="success">finish.jsp</result>

49 # </action>

50

51 (2)实现方式:

52

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

54

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

56 # proxy = actionProxyFactory.createActionProxy(finalNamespace,

57 # finalActionName, finalMethodName, extraContext);

58 # proxy.execute();

59

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

61

62 主要有两种方式:

63

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

65 # HttpServletRequest request = ServletActionContext.getRequest();

66 # String s=(String)request.getAttribute("propName");

67

68 2。实现ModelDriven接口

69

70 在Step1Action中,加入getModel:

71 # public Object getModel() {

72 # return message;

73 # }

74

75 在Step2Action中,加入setModel:

76 # public void setModel(Object o){

77 # System.out.println("message is:"+o);

78 # }

79

80 注意,setModel的调用先于execute()方法后于构造方法。
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yashucn 2012-02-01
  • 打赏
  • 举报
回复
chain的方式在struts2官方上不太推荐。
艳沐石 2012-02-01
  • 打赏
  • 举报
回复
受益了~哈

LZ,下次把页面整理一下再贴,看着方便些。。
ebonyzhang 2012-02-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/xingfuzhijianxia/article/details/6977992这个也可以看看!
ebonyzhang 2012-02-01
  • 打赏
  • 举报
回复
学习了!
muler1988 2012-01-30
  • 打赏
  • 举报
回复
一、准备工作及实例 3 1.解压struts-2.1.6-all.zip 3 2.六个基本包 3 3.初识struts2配置文件 4 (1).web.xml文件 4 (2).struts.xml文件 4 (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何使用alt+/提示 4 6.实例 4 7.开启struts2自带的开发模式常量 6 8.vo传参模式 7 9.ModerDriven传参模式(不建议采用) 7 10.为什么要使用struts2代替struts1.x 7 二、struts.xml配置及例程 7 1.配置文件的优先级 7 2.配置形式 8 3.package配置相关 8 4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7.Action的method属性 12 8.使用ForwardAction实现页面屏蔽。 13 8.使用default-Action配置统一访问 14 小结Action 14 9.使用通配符 14 10.使用0配置:ZERO Annotation 15 11.Result配置详解 15 探讨type类型: 16 Type类型值 16 作用说明 16 对应类 16 chain 16 用来处理Action链 16 com.opensymphony.xwork2.ActionChainResult 16 dispatcher 16 用来转向页面,通常处理JSP 16 org.apache.struts2.dispatcher.ServletDispatcherResult 16 redirect 16 重定向到一个URL 16 org.apache.struts2.dispatcher.ServletRedirectResult 16 redirectAction 16 重定向到一个Action 16 org.apache.struts2.dispatcher.ServletActionRedirectResult 16 plainText 16 显示源文件内容,如文件源码 16 org.apache.struts2.dispatcher.PlainTextResult 16 freemarker 16 处理FreeMarker模板 16 org.apache.struts2.views.freemarker.FreemarkerResult 16 httpheader 16 控制特殊http行为的结果类型 16 org.apache.struts2.dispatcher.HttpHeaderResult 16 stream 16 向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据。 16 org.apache.struts2.dispatcher.StreamResult 16 velocity 16 处理Velocity模板 16 org.apache.struts2.dispatcher.VelocityResult 16 xslt 16 处理XML/XLST模板 16 org.apache.struts2.views.xslt.XSLTResult 16 全局result: 17 动态Result:了解 18 12.异常处理 18 三、在Action获取Scope对象 19 方式一、与Servlet解耦合的非IOC方式 20 方式二、与Servlet解耦合的IOC方式 21 方式三、与Servlet耦合的非IOC方式 21 方式四、与Servlet耦合的IOC方式 22 四、OGNL与ValueStack(VS) 22 1.值栈入门 22 2.OGNL入门 24 3.普通方法访问 24 4.静态方法访问 24 5.默认类Math的访问 24 6.调用普通类的构造方法 25 7.集合对象初步 25 8.集合对象进阶 25 9.N语法top语法 26 10.获取Stack Context的信息 26 11.总结$ # %的区别 27 12.总结OGNL[重点] 27 五、拦截器 28 1.概述strust2的拦截器 28 2.自定义拦截器 28 方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 32 4.使用默认的execAndWait拦截器 33 5.
文件的国际化字符串使用OGNL,格式为${表达式},例如: validation.required=${getText(fileName)} is required 2. 使用java.text.MessageFormat的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如: validation.between=Date must between {0, date, short} and {1, date, short} 加参数的方法:(已核实) 人心的功能,如将Action输出到FreeMaker模板、Velocity模板、JasperReports和使用XSL转换等。这些都过result里的type(类型)属性(Attribute)定义的。另外,您还可以自定义result类型。 下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: <result type="velocity">/HelloWorld.vmresult> 例3 classes/struts.xmlVMHelloWorld Action的配置 新建HelloWorld.vm,内容如下所示: Velocity

Message rendered in Velocity: $message

struts-dojo-tags

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧