📅  最后修改于: 2020-11-11 04:57:55             🧑  作者: Mango
如前所述,
通常,结果中会附带一些导航规则。例如,如果操作方法是对用户进行身份验证,则有三种可能的结果。
在这种情况下,将为action方法配置三个可能的结果字符串和三个不同的视图以呈现结果。在前面的示例中,我们已经看到了这一点。
但是,Struts2不会使您将JSP作为视图技术使用。毕竟,MVC范式的整个目的是使各层保持独立且高度可配置。例如,对于Web2.0客户端,您可能希望返回XML或JSON作为输出。在这种情况下,您可以为XML或JSON创建一个新的结果类型并实现这一点。
Struts带有许多预定义的结果类型,并且我们已经看到的是默认的结果类型dispatcher ,用于分配到JSP页面。 Struts允许您将其他标记语言用于视图技术来呈现结果,并且流行的选择包括Velocity,Freemaker,XSLT和Tiles 。
调度程序结果类型是默认类型,如果未指定其他结果类型,则使用该类型。它用于转发到服务器上的servlet,JSP,HTML页面等。它使用RequestDispatcher.forward()方法。
我们在前面的示例中看到了“简写”版本,其中我们提供了一个JSP路径作为结果标签的主体。
/HelloWorld.jsp
我们还可以使用
/HelloWorld.jsp
我们还可以提供一个parse参数,默认情况下为true。 parse参数确定是否为OGNL表达式解析location参数。
在此示例中,我们将了解如何将FreeMaker用作视图技术。 Freemaker是一种流行的模板引擎,用于使用预定义的模板生成输出。现在让我们创建一个名为hello.fm的Freemaker模板文件,其内容如下:
Hello World ${name}
上面的文件是一个模板,其中name是将使用定义的操作从外部传递的参数。您将将此文件保留在CLASSPATH中。
接下来,让我们修改struts.xml以指定结果,如下所示:
/hello.fm
让我们保留我们在示例章节中创建的HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件。
现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件。
然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕。
输入值“ Struts2”并提交页面。您应该看到下一页。
如您所见,这与JSP视图完全相同,除了我们不限于使用JSP作为视图技术。在此示例中,我们使用了Freemaker。
重定向结果类型调用标准的response.sendRedirect()方法,使浏览器向给定位置创建一个新请求。
我们可以在
/NewWorld.jsp
因此,只需修改您的struts.xml文件以定义上述重定向类型,然后创建一个新文件NewWorld.jpg,只要hello操作返回成功,便会在其中重定向您。您可以查看Struts 2 Redirect Action示例以获得更好的理解。