dispatcher结果类型是默认的类型,如果未指定其他结果类型,则使用此类型。它用于转发到服务器上的servlet,JSP,HTML等页面。它使用RequestDispatcher.forward()方法。
<result name="success"> /HelloWorld.jsp </result>
我们还可以使用<result ...>元素中的<param name="location">标签来指定JSP文件,如下所示:
<result name="success" type="dispatcher"> <param name="location"> /HelloWorld.jsp </param > </result>
我们还可以使用一个parse参数,默认情况下为true。parse参数确定是否将为OGNL表达式解析位置参数。
在这个例子中,我们将介绍如何使用FreeMaker作为视图技术。Freemaker是一个流行的模板引擎,使用预定义的模板生成输出。让我们创建一个包含以下内容的名为hello.fm的Freemaker模板文件:
Hello World ${name}
上面的文件是一个模板,其中name是一个参数,将使用定义的action从外部传递。你可以在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="cn.Vue5教程.struts2.HelloWorldAction" method="execute"> <result name="success" type="freemarker"> <param name="location">/hello.fm</param> </result> </action> </package> </struts>
我们继续保留之前在HelloWorld示例一章中创建的HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件。现在右键单击项目名称,然后单击“Export”>“WAR File”创建WAR文件。然后在Tomcat的webapps目录中部署这个WAR文件。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。将显示如下页面:
输入值“Struts2”并提交,你可以看到以下页面
这个例子中我们使用了Freemaker,可以看到,这与JSP视图完全相同,只是我们不绑定使用JSP作为视图技术。
redirect结果类型调用标准的response.sendRedirect()方法,使得浏览器向给定的位置创建一个新请求。
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute"> <result name="success" type="redirect"> <param name="location"> /NewWorld.jsp </param > </result> </action>
所以只需修改你的struts.xml文件来定义上面提到的redirect结果类型,并创建一个新的文件NewWorld.jpg,那么当你的hello action返回“success”时就会产生redirect结果。你可以检查Struts 2的Redirect Action示例,以便更详细地了解。