dispatcher結(jié)果類型是默認(rèn)的類型,如果未指定其他結(jié)果類型,則使用此類型。它用于轉(zhuǎn)發(fā)到服務(wù)器上的servlet,JSP,HTML等頁面。它使用RequestDispatcher.forward()方法。
<result name="success"> /HelloWorld.jsp </result>
我們還可以使用<result ...>元素中的<param name="location">標(biāo)簽來指定JSP文件,如下所示:
<result name="success" type="dispatcher"> <param name="location"> /HelloWorld.jsp </param > </result>
我們還可以使用一個(gè)parse參數(shù),默認(rèn)情況下為true。parse參數(shù)確定是否將為OGNL表達(dá)式解析位置參數(shù)。
在這個(gè)例子中,我們將介紹如何使用FreeMaker作為視圖技術(shù)。Freemaker是一個(gè)流行的模板引擎,使用預(yù)定義的模板生成輸出。讓我們創(chuàng)建一個(gè)包含以下內(nèi)容的名為hello.fm的Freemaker模板文件:
Hello World ${name}
上面的文件是一個(gè)模板,其中name是一個(gè)參數(shù),將使用定義的action從外部傳遞。你可以在CLASSPATH中保留此文件。接下來,讓我們參考下面修改struts.xml以指定結(jié)果:
<?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.w3cschool.struts2.HelloWorldAction" method="execute"> <result name="success" type="freemarker"> <param name="location">/hello.fm</param> </result> </action> </package> </struts>
我們繼續(xù)保留之前在HelloWorld示例一章中創(chuàng)建的HelloWorldAction.java,HelloWorldAction.jsp和index.jsp文件?,F(xiàn)在右鍵單擊項(xiàng)目名稱,然后單擊“Export”>“WAR File”創(chuàng)建WAR文件。然后在Tomcat的webapps目錄中部署這個(gè)WAR文件。最后,啟動(dòng)Tomcat服務(wù)器并嘗試訪問URL http://localhost:8080/HelloWorldStruts2/index.jsp。將顯示如下頁面:
輸入值“Struts2”并提交,你可以看到以下頁面
這個(gè)例子中我們使用了Freemaker,可以看到,這與JSP視圖完全相同,只是我們不綁定使用JSP作為視圖技術(shù)。
redirect結(jié)果類型調(diào)用標(biāo)準(zhǔn)的response.sendRedirect()方法,使得瀏覽器向給定的位置創(chuàng)建一個(gè)新請(qǐng)求。
<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結(jié)果類型,并創(chuàng)建一個(gè)新的文件NewWorld.jpg,那么當(dāng)你的hello action返回“success”時(shí)就會(huì)產(chǎn)生redirect結(jié)果。你可以檢查Struts 2的Redirect Action示例,以便更詳細(xì)地了解。
更多建議: