歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Struts2開發 --- Action及異常處理

Struts2開發 --- Action及異常處理

日期:2017/3/1 10:36:02   编辑:Linux編程

一、Action介紹

在Struts2中,Action是最重要的,因為struts2是由多個Action組成的;比如要對業務進行分發都需要使用Action;

而定義Action通常需要遵循幾個規范:

1.盡量繼承ActionSupport,因為他為你實現了很多規范;

2.重寫public String execute()throws Exception 方法,此方法是訪問Action默認調用的方法(當然可以自己設定調用任意方法,此配置需要在struts.xml進行);

3.Action類中的屬性是用於封裝HTTP請求、頁面結果數據的在訪問Action時,如果帶有請求參數,則會自動調用setter方法對屬性進行賦值

了解Action接口和ActionSupport類:ActionSupport可以說是在Struts開發中最常用的類;

二、配置Action

我們在struts.xml中配置Action;

模板:

[html]
  1. <struts>
  2. <constant name="struts.devMode" value="true"></constant>
  3. <package name="" extends="struts-default" namespace="" >
  4. <action name="" class="">
  5. <result>1.jsp</result>
  6. </action>
  7. </package>
  8. </struts>

配置Action規范:<action>元素必須在<package>中;

下面開始介紹struts.xml常用的元素;

1.<package>

package能夠用幾個屬性:

(1)name:表示包名稱,通過隨意指定即可;

(2)extends:繼承哪個父包,如果繼承了某個父包,則會繼承父包的action;通常我們需要繼承 struts-default ;

(3)namespace:定義命名空間,如果不指定,則為默認的命名空間;如果為"/",則表示根命名空間;

(4)abstract:不常用,如果為true,則不能定義action;

舉例:

[html]
  1. <package name="myPackage" namespace="/" extends="struts-default">
  2. </package>

默認命名空間和根命名空間:

默認命名空間是一個很特殊的命名空間,如果要訪問一個action,最後都會在默認命名空間中尋找;

比如/aaa/bbb.action,首先先去命名空間為"/aaa"中去找,如果找不到,則去默認命名空間中尋找bbb.action;

而根命名空間只是一個普通的命名空間;

2.<action>

<action>的屬性有:

(1)name:指定了Action的名字,也是對外的URL;

(2)class:訪問此Action的處理類,默認為ActionSupport,ActionSupport的返回值為SUCCESS,注意:必須要寫出類的全名;

(3)method:如果不指定,則默認調用execute方法,如果指定,則調用此方法;

3.<result>

定義了Action的返回結果所對應的JSP(當然可以是任意的視圖頁面);

<result>的常用屬性為

(1)name:Action方法返回的字符串,默認為success;

(2)type:結果類型,默認為dispatcher,此問題在下面會詳細講解;

代碼示例:

[html]
  1. <package name="MyPackage" extends="struts-default" namespace="/" >
  2. <action name="loginAction" class="org.login.action.LoginAction" >
  3. <result name="success" type="redirect">
  4. <param name="location">/result.jsp</param>
  5. </result>
  6. <result name="error" type="redirect">/result.jsp</result>
  7. </action>
  8. </package>

邏輯Action和物理Action的區別:

邏輯Action是在struts.xml中配置的action元素,物理Action是實際的Action類;

如果某個Action類存在fun1() 和fun2()方法,則可以定義兩個邏輯Action,雖然處理類都是一樣的;

Copyright © Linux教程網 All Rights Reserved