正如前面提到的,<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 结果和结果类型的更多相关文章

  1. struts2支持的结果类型

    在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...

  2. Struts2基础学习(四)—类型转换器和数据校验

    一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...

  3. struts2 action result type类型

    struts2 action result type类型 1.chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony. ...

  4. Struts2框架的自定义类型转换器

    前言:对于java的基本数据类型及一些系统类(如Date类.集合类),Struts2提供了内置类型转换功能,但是也有一定的限制.所以就演示出自定义类型转换器 一.应用于局部类型转换器 eg.用户登录出 ...

  5. struts2文件上传类型的过滤

    转自:http://www.2cto.com/kf/201403/282787.html 第一种解决方案: 1.手动实现文件过滤: 判断上传的文件是否在允许的范围内定义该Action允许上传的文件类型 ...

  6. Struts2之自定义局部类型转换器、全局类型转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器  如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用 ...

  7. struts2 result type的类型

    一共十种类型 1.dispatcher 默认的类型,相当于servlet的foward,服务器端跳转.客户端看到的是struts2中配置的地址,而不是真正页面的地址.一般用于跳转到jsp页面 2.re ...

  8. struts2 谷歌浏览器保存date类型数据时报错

    一同事发现一个bug,在chrome上保存一个表单时,后台会报错,而在firefox上则可以正常保存. 奇怪的地方在于,后端的程序是同一个,而在浏览器上查看请求header时,两个浏览器对应的字段内容 ...

  9. 第八篇——Struts2的处理结果类型

    Struts2处理结果类型 1.SUCCESS:表示Action正确的执行完成,返回相应的视图,success是name属性的默认值: 2.ERROR:表示Action执行失败,返回到错误处理视图: ...

  10. struts2的result的类型配置简介

    一.在strut2的action处理完成后,就应该向用户返回结果信息result 根据以下代码作为实例分析: <package name="Hello" extends=&q ...

随机推荐

  1. mongodb_profier

    http://docs.mongodb.org/manual/reference/database-profiler/ 一.获取.设置profile(profile用collection存储数据) d ...

  2. python函数getopt用法

    python内建模块,用来处理命令行参数 格式:getopt(args, shortopts, longopts = []) 参数args一般是sys.argv[1:]sys.argv[0]表示执行文 ...

  3. fedora25 采用二进制包安装mysql5.5.49

    #添加用户和组 groupadd mysql useradd -s /sbin/nologin -g mysql -M mysql /etc/passwd id mysql #安装依赖包 [root@ ...

  4. 简单工厂模式 SimpleFactory

     简单工厂模式 SimpleFactory 1.1什么是简单工厂设计模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模 ...

  5. 基于Spark Mllib,SparkSQL的电影推荐系统

    本文测试的Spark版本是1.3.1 本文将在Spark集群上搭建一个简单的小型的电影推荐系统,以为之后的完整项目做铺垫和知识积累 整个系统的工作流程描述如下: 1.某电影网站拥有可观的电影资源和用户 ...

  6. 基础普及-Jar、War、Ear

    名词解释 Jar文件(扩展名为. Jar) 包括Java类的普通库.资源(resources).辅助文件 (auxiliary files)等 War文件(扩展名为.War) 包括所有Web应用程序. ...

  7. 自己亲自写的两本linux资料,免费下载,pdf文档

    第一本是我写的韩顺平老师解说的linux视频的笔记,该视频原本有21讲.可是我始终没有找到当中的17.18讲.可是其它部分我感觉及记录的还是蛮认真的.该套视频解说的非常基础,因此我的这本笔记也非常基础 ...

  8. 初识FASTBuild 一个大幅提升C/C++项目编译速度的分布式编译工具

    FASTBuild 是一款高性能.开源的构建系统,支持高度可扩展的编译,缓存和网络分发. 以上是FASTBuild官网对其产品的一句话介绍. FASTBuild 的开源地址:https://githu ...

  9. css - margin-padding

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. SQLCMD Mode: give it one more chance

    From : http://sqlblog.com/blogs/maria_zakourdaev/archive/2012/05/11/sqlcmd-mode-give-it-one-more-cha ...