Struts2 结果和结果类型
正如前面提到的,<results>标签在Struts2的MVC框架的视图中所扮演的角色。动作是负责执行业务逻辑。执行业务逻辑后,接下来的步骤是使用<results>标签显示的视图。
经常有一些附带导航规则的结果。例如,如果在操作方法是对用户进行验证,有三种可能的结果。 (一)成功登录;(二)不成功的登录,用户名或密码错误;(三)帐户锁定。
在这种情况下的动作方法将被配置呈现的结果有三种可能的结果字符串和三个不同的看法。我们已经看到在前面的例子。
但是,Struts2 不配合使用JSP作为视图技术。毕竟MVC范例的整个目的是保持独立的层,高度可配置的。例如,对于一个Web2.0的客户端,可能希望返回XML或JSON作为输出。在这种情况下,可以创建一个新的结果类型为XML或JSON和实现这一目标。
Struts的一些预定义的结果类型,无论我们已经看到了,这是默认的结果类型,它是用来调度调度到JSP页面。 Struts 允许使用其它标记语言的技术呈现的结果和流行的选择,包括 Velocity, Freemaker, XSLT 和Tiles.
分发结果类型:
调度程序的结果类型是缺省类型,并使用,如果没有其他的结果类型被指定。它被用来转发到一个servlet,JSP,HTML页面,等等,在服务器上。它使用RequestDispatcher.forward()方法。
在我们前面的例子中,我们看到了“shorthand”的版本,在那里我们提供了身体的结果标签 JSP路径。
<result name="success">
/HelloWorld.jsp
</result>
我们也可以指定JSP文件中使用一个<param name="location">的标签内<result...>的元素如下:
<result name="success" type="dispatcher">
<param name="location">
/HelloWorld.jsp
</param >
</result>
我们还可以提供一个分析参数,默认为true。解析参数位置参数决定是否将被解析为OGNL表达式。
FreeMaker结果类型:
在这个例子中,我们将看到我们如何使用FreeMaker作为视图技术。 freemaker是一种流行的模板引擎,用于使用预定义的模板来生成输出。让我们Freemaker模板创建一个文件称为hello.fm以下内容:
Hello World ${name}
在这里,上述文件是一个模板的名字是从外面使用已定义的动作,将传递一个参数置。会保持这个文件在CLASSPATH中。接下来,让我们修改struts.xml中指定结果如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default"> <action name="hello"
class="com.yiibai.struts2.HelloWorldAction"
method="execute">
<result name="success" type="freemarker">
<param name="location">/hello.fm</param>
</result>
</action> </package> </struts>
让我们使用前面的 HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件。现在右键点击项目名称,并单击Export > WAR File创建一个WAR文件。然后部署这个WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。这会给出以下画面:

输入一个值“Struts2”,并提交页面。应该看到翻页

正如看到,这是完全一样的JSP视图,但我们是不依赖于使用JSP作为视图技术。在这个例子中,我们已经使用Freemaker。
重定向结果类型:
重定向的结果类型,调用的是标准response.sendRedirect() 方法,使浏览器建立一个新的请求发送到给定的位置。
我们可以提供无论是在体内的<result...>元素或作为一个<param name="location">的元素的位置。还支持重定向解析参数。下面是一个例子使用XML配置:
<action name="hello"
class="com.yiibai.struts2.HelloWorldAction"
method="execute">
<result name="success" type="redirect">
<param name="location">
/NewWorld.jsp
</param >
</result>
</action>
因此,只要修改struts.xml文件,定义如上所述重定向类型,并创建一个新的文件,在那里会被重定向 Hello时动作将返回成功到NewWorld.jpg。也可以checkStruts2 重定向操作的例子,为了更好的理解。
Struts2 结果和结果类型的更多相关文章
- struts2支持的结果类型
在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...
- Struts2基础学习(四)—类型转换器和数据校验
一.自定义类型转换器 1.概述 Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...
- struts2 action result type类型
struts2 action result type类型 1.chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony. ...
- Struts2框架的自定义类型转换器
前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...
- struts2文件上传类型的过滤
转自:http://www.2cto.com/kf/201403/282787.html 第一种解决方案: 1.手动实现文件过滤: 判断上传的文件是否在允许的范围内定义该Action允许上传的文件类型 ...
- Struts2之自定义局部类型转换器、全局类型转换器
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用 ...
- struts2 result type的类型
一共十种类型 1.dispatcher 默认的类型,相当于servlet的foward,服务器端跳转.客户端看到的是struts2中配置的地址,而不是真正页面的地址.一般用于跳转到jsp页面 2.re ...
- struts2 谷歌浏览器保存date类型数据时报错
一同事发现一个bug,在chrome上保存一个表单时,后台会报错,而在firefox上则可以正常保存. 奇怪的地方在于,后端的程序是同一个,而在浏览器上查看请求header时,两个浏览器对应的字段内容 ...
- 第八篇——Struts2的处理结果类型
Struts2处理结果类型 1.SUCCESS:表示Action正确的执行完成,返回相应的视图,success是name属性的默认值: 2.ERROR:表示Action执行失败,返回到错误处理视图: ...
- struts2的result的类型配置简介
一.在strut2的action处理完成后,就应该向用户返回结果信息result 根据以下代码作为实例分析: <package name="Hello" extends=&q ...
随机推荐
- leetcode练习之No.7------ 翻转整数reverse_integer
原文地址:http://www.niu12.com/article/48 git地址:git@github.com:ZQCard/leetcode.git 给定一个 32 位有符号整数,将整数中的数字 ...
- C#之鼠标模拟技术
游戏程序的操作不外乎两种——键盘输入控制和鼠标输入控制,几乎所有游戏中都使用鼠标来改变角色的位置和方向,本文主要是讲述如何使用C#调用Windows API函数实现鼠标模拟操作的功能.首先通过结合Fi ...
- PHP测试用例-前言 1
前提知识准备 在学习本课程之前,你需要准备以下知识点: 掌握一般的PHP开发技能,使用面向对象的框架开发过三个月以上 会一些JS知识 了解http协议 拥有以下知识会学得更加顺利: 掌握PHPUnit ...
- Java中的值传递与“引用传递”
首先,Java没有 引用传递 这么一说. Java仅仅有值传递.传递的都是值,基本数据类型传递的是值.引用类型传递的是地址值. 我来理一下这当中宛如米线跟米面绞在一起了,再跟粉丝混在一起的关系. 好的 ...
- Spring boot 数据源未配置异常
问题 在使Springboot自动生成的项目框架时如果选择了数据源,比如选择了mysql,生成项目之后,启动会报一下异常: Description: Cannot determine embedded ...
- Eclipse user library位置
原因: 转自:http://happycoolyp.iteye.com/blog/1853135 user libraries的记录文件%eclipse_workspace%\.metadata\.p ...
- redis学习笔记——Redis过期键的删除策略
Redis过期键的删除策略 对于过期键一般有三种删除策略 定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作: 惰性删除:放任键过期 ...
- C# 鼠标全局钩子
/// <summary> /// 鼠标全局钩子 /// </summary> public class MouseHook { private const int WM_MO ...
- 被动信息收集1——DNS基础 + DNS解析工具 NSLOOKUP使用
被动信息收集 特点: 基于公开渠道 与目标不直接接触 避免留下一切痕迹 标准參考--OSINT: 美国军方 北大西洋公约组织 名词解释 DNS--Domain Name System 域名系统 因特网 ...
- Objective-C之成魔之路【19-归档】
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助.欢迎给作者捐赠.支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 在Obje ...