Java的Struts框架中<results>标签的使用方法

作者:goldensun 时间:2022-04-16 16:08:22 

<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。这会给出以下画面:

Java的Struts框架中<results>标签的使用方法

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

Java的Struts框架中<results>标签的使用方法

正如看到,这是完全一样的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 重定向操作的例子,为了更好的理解。

标签:Java,Struts
0
投稿

猜你喜欢

  • C语言二叉树的非递归遍历实例分析

    2022-02-08 02:41:15
  • Spring五大类注解读取存储Bean对象的方法

    2023-11-09 22:07:07
  • JAVA实现基于Tcp协议的简单Socket通信实例

    2022-07-07 21:44:36
  • Android应用程序(APK)的编译打包过程

    2021-10-29 14:37:07
  • Flutter倒计时/计时器的实现代码

    2023-07-01 03:50:50
  • AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法

    2021-06-01 21:09:57
  • Unity的IPostprocessBuildWithReport实用案例深入解析

    2022-07-29 23:30:15
  • Java反射之类的实例对象的三种表示方式总结

    2023-10-03 09:51:35
  • ListView滑动隐藏显示ToolBar的实例

    2022-09-15 23:15:52
  • java 实现发短信功能---腾讯云短信

    2023-11-29 11:03:49
  • C#类的访问修饰符用法分析

    2021-12-22 22:23:01
  • Java继承的问题引导和测试代码

    2023-03-13 18:50:34
  • java ReentrantLock条件锁实现原理示例详解

    2023-12-12 02:36:13
  • 使用IDEA开发配置Java Web的初始化过程

    2022-09-25 16:33:38
  • 亲手教你SpringBoot中的多数据源集成问题

    2023-08-19 02:57:20
  • C# 复制与删除文件的实现方法

    2022-01-23 02:36:06
  • Java Spring中Quartz调度器详解及实例

    2022-09-30 03:31:13
  • SpringBoot常用注解详细整理

    2022-12-15 18:53:01
  • C#中后台post请求常用的两种方式总结

    2023-04-21 17:29:40
  • Java Swing中JTable渲染器与编辑器用法示例

    2022-11-02 09:23:13
  • asp之家 软件编程 m.aspxhome.com