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 ...
随机推荐
- 分布式架构高可用架构篇_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试
原文:http://www.iteye.com/topic/1145651 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...
- 【JVM】调优笔记1-----堆栈概念的对碰
关于JVM的工作原理以及调优是一个向往已久的模块,终于有幸接触到:http://pengjiaheng.iteye.com/blog/518623 那就顺着这个思路,来梳理一下自己看到后的结论和感想. ...
- saltstack之salt event事件用法
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- 我使用过的Linux命令之swig - 把C/C++的代码嵌入Java等语言的开发工具
用途说明 SWIG是Simplified Wrapper and Interface Generator的缩写,其官方站点是http://www.swig.org/.SWIG是个帮助使用C或者C++编 ...
- apache ProxyPass proxypassreverse
ProxyPass与ProxyPassReverse及ProxyPassMatch的概述 分类: LINUX及服务器维护2011-09-21 10:25 7491人阅读 评论(0) 收藏 举报 red ...
- hadoop2.2.0集群安装和配置
hadoop2.0已经发布了稳定版本了,增加了很多特性,比如HDFS HA.YARN等. 注意:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C+ ...
- css水平竖直居中方式
CSS水平和垂直居中的几种实现方法: 1.单行垂直居中 文字在层中垂直居中vertical-align 属性是做不到的.我们这里有个比较巧妙的方法就是:设置height的高度与line-height的 ...
- 文档对象模型-DOM(二)
从NodeList中选择元素 方法一:item()方法,用于返回其中的单一节点,需要在方法的参数中指定所需元素的索引编号. 当其中没有任何元素时,执行代码是对资源的浪费.因此程序员会在执行代码之前,先 ...
- ant-design 实现 添加页面
1.逻辑代码 /** * 添加用户 */ import React,{PureComponent} from 'react' import {Card,Form,Input,Select,Button ...
- redis源代码分析(5)——aof
前面几篇基本介绍了redis的主要功能.流程.接下来是一些相对独立的部分,首先看一下持久化. redis持久化支持两种方式:RDB和AOF,我们首先看一下AOF的实现. AOF(Append only ...