Struts2的動態方法,及result跳轉方式,全局結果以及默認的action的配置
阿新 • • 發佈:2018-12-02
name屬性 定向 查找 配置 根據 前端 ima 標簽 ces
Action動態方法的調用
首先我們需要在struts.xml中去配置一個常量值如下
那麽去哪找呢?找到Struts-core.jar並打開
method屬性
<action name="login" class="cn.ssh.ch08.UserAction" method="lgoin"> <result name="success">/success.jsp</result> <result name="fail">/fail.jsp</result> </action> <actionname="register" class="cn.ssh.ch08.UserAction" method="register"> <result name="success">/success.jsp</result> <result name="fail">/fail.jsp</result> </action>
可以看到配置文件中分別定義了兩個action元素,每個action的name屬性都不同,但是類的引用卻是相同的也就是說,如果用戶的請求是login.action,
那麽就會調用類中的login()方法,如果是register.action則會調用register()方法.
註意:Struts2在根據action元素的method屬性查找執行方法時有兩種途徑
- 查找與method屬性值完全一致的方法
- 查找與doMethod()形式的方法
如login()方法,找不到此方法時會去找doLogin()方法
action中感嘆號的使用
使用語法:actionName!methodName
因此請求只需要這樣寫即可如下
而配置文件中就不在需要method屬性了
action中通配符的使用
<!-- {1} 相當於占位符,在每個用到{1} 的地方都匹配了前端請求的*User中*號的內容 --> <actionname="*User" class="cn.myweb.action.UserAction" method="{1}"> <result name="{1}" >{1}.jsp</result> </action>
比如我的請求是 loginUser.action那麽login就會被填充到 {1}中,也就是跳轉頁面是login.jsp,方法是login,結果是login
此外有了{1}那麽也是可以有{2}的.這裏就不多講了
result跳轉方式的配置
常用的三種如下:
- dispatcher:Action默認的結果類型,采用轉發的形式請求指定的視圖資源,請求中的數據信息不會丟失.
- redirect:采用重定向的方式請求指定的視圖資源.數據會丟失
- redirectAction:重定向的方式請求一個新的Action,數據會丟失
<action name="register" class="cn.ssh.ch08.UserAction" method="register"> <result name="success" type="redirectAction">success</result> <result name="fail">/fail.jsp</result> </action>
如上成功之後會去中找名為success的action
設置默認action
當出現錯誤請求時則會跳轉到index頁面
設置全局結果
當結果為 error時則跳入錯誤頁面
註意action標簽不能放在global標簽前面
Struts2的動態方法,及result跳轉方式,全局結果以及默認的action的配置