在進入下一步前,花了一點時間把 struts.xml 以自己的方式瞭解了一遍,進入文章前先來張執行流程圖吧。
- 這是一個最基本的 struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="helloworld" extends="struts-default">
<action name="Hello" class="com.test.controller.Hello" method="execute">
<result name="abc">
/hello.jsp
</result>
</action>
</struts>
接下來一行一行來解析一下功能吧:
- 引入 dtd :
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
這一行是可以不用背的。在引入的 struts2-core-2.X.jar 中可以找到如下圖的 dtd :
點擊所要引用的 dtd 、其中內容即會有所需的這一行、直接 copy 過來即可:
- package :
<package name="helloworld" extends="struts-default">
</package>
name :只是個辨識名稱,取自己所想要的名字即可。
extends:可寫上要繼承的文件、預設是填 struts-default 。
namespace :這裡沒寫、因為是選填項目。可與 url 有關聯;例如請求 /test/*.action 時可以將 namespace 設為 /test 。
- action :
<action name="Hello" class="com.test.controller.Hello" method="execute">
</action>
這裡就是配合我們所寫程式(class)的部份。
name :寫網頁的進入名稱。如我們進入的頁面是 Hello.action 、這裡就要寫 Hello 。大小寫有差別,如果我要進入的是 hello.action ,在這裡寫 Hello 就會出現 404 頁面。
class :放程式的路徑位置。
method :配合以下 java 部份來看。寫 execute 就進入 return “abc”; 部份、寫 abcdefg 就進入 return “def”; 部份。
public String execute(){
return "abc";
}
public String abcdefg(){
return "def";
}
- result :
<result name="abc">
/hello.jsp
</result>
name :搭配上面的 java 碼;return “abc” 時就導向中間所指定的頁面如:hello.jsp 、return “def” 就可再導向其他指定的頁面囉!