Struts2基於註解的Action配置

來源:互聯網
上載者:User

標籤:struts2   maven   

1· 既然我們開發的是web項目所以web.xml檔案時必不可少的

在web.xml 中配置攔截使用者請求的 filter攔截使用者的所有的請求並且初始化 struts.xml檔案

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>

</filter-mapping>


2·使用註解的方式配置struts就需要引入一個jar包

雖然說是零配置但是struts.xml還是少不了的配置如下:

    <!-- 指定由spring負責action對象的建立 -->
    <constant name="struts.objectFactory" value="spring" />
    <!-- 所有匹配*.action的請求都由struts2處理,可以擴充 -->
    <constant name="struts.action.extension" value="action" />
    <!-- 是否啟用開發模式,上線時一般不需要開啟,開發時擷取更多的日誌資訊 -->
    <constant name="struts.devMode" value="true" />
    <!-- struts設定檔改動後,是否重新載入 -->
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 設定瀏覽器是否緩衝靜態內容 -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 請求參數的編碼方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 每次HTTP請求系統都重新載入資源檔,有助於開發 -->
    <constant name="struts.i18n.reload" value="true" />
    <!-- 檔案上傳最大值 -->
    <constant name="struts.multipart.maxSize" value="104857600" />
    <!-- 讓struts2支援動態方法引動過程,在調用時使用userAction !login .action方式進行調用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />

    <!-- Action名稱中是否還是用斜線 -->
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    <!-- 允許標籤中使用運算式文法 -->
    <constant name="struts.tag.altSyntax" value="true" />
    <!-- 對於WebLogic,Orion,OC4J此屬性應該設定成true -->
    <constant name="struts.dispatcher.parametersWorkaround" value="false" />


3·action類的註解:

@ParentPackage("basePackage")  //指定父包
@Namespace("/user")   //指定命名空間

//   @Results( { @Result(name = "success", location = "/main.jsp"), @Result(name = "error", location = "/error.jsp") })   全域的實現跳轉的頁面

@Action("userAction")  //指定action的訪問url                                       ①
public class UserAction extends BaseAction implements ModelDriven<User> {

     ②

     private User user = new User();

    @Override
    public User getModel() {
        return user;
    }

    private UserServiceI service;
    
    public UserServiceI getService() {
        return service;
    }
    @Autowired    // spring註解
    public void setService(UserServiceI service) {
        this.service = service;
    }
             // @Action(value = "reg", results = { @Result(name = "success", location = "/index.jsp") })  另一種方式localhost:8080/struts_demo/user/userAction/reg
    public void reg(){
        JSON j = new JSON();
        try {
            service.addUser(user);
            j.setSuccess(true);
            j.setMessage("註冊成功");
        } catch (Exception e) {
            j.setMessage("註冊失敗");
            e.printStackTrace();
        }
        super.writeJson(j);
    }


}

上面的1.2使用的是實現ModalDriven<User>(模型驅動的方式)方便接收頁面傳遞過來的值

以前我們是把頁面上所有的傳值寫一個類級變數然後定義其getter / setter方法

這樣的話如果變數過多會很麻煩,所以我們實現模型驅動實現其getModal方法即可,在modal層建立執行個體寫入getter/setter方法

總結:

Namespace:指定命名空間。

ParentPackage:指定父包。

Result:提供了Action結果的映射。(一個結果的映射)

Results:“Result”註解列表

ResultPath:指定結果頁面的基路徑。

Action:指定Action的訪問URL。

Actions:“Action”註解列表。

ExceptionMapping:指定異常映射。(映射一個聲明異常)

ExceptionMappings:一級聲明異常的數組。

InterceptorRef:攔截器引用。

InterceptorRefs:攔截器引用組。


4.  調用:localhost:8080/struts_demo/user/userAction!reg .action  即可

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.