File cấu hình trong Struts 2



Ứng dụng Struts gồm hai file cấu hình chính là struts.xml file và struts.properties file. Struts.properties file được sử dụng để ghi đè các giá trị mặc định của default.xml file đã được cung cấp bởi Struts Framwork, vì thế nó là không bắt buộc. Hầu như bạn không phải sử dụng file này. Chúng ta sẽ tìm hiểu về chúng sau. Chương này sẽ trình bày về struts.xml file. Đầu tiên bạn theo dõi ví dụ đơn giản về struts.xml file:

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts
Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">

<action name="product" class="com.vietjack.Product">
<result name="success">welcome.jsp</result>
</action>

</package>
</struts>  

Phần tử package

Chúng ta có thể phân chia ứng dụng struts thành các module con. Phần tử package xác định một module. Bạn có thể có một hoặc nhiều package trong struts.xml file. Phần tử package này có các thuộc tính sau:

  • Thuộc tính name là bắt buộc để định nghĩa bất cứ package nào.

  • Thuộc tính namespace là thuộc tính tùy ý của package. Nếu bạn không cung cấp namespace, thì nó được coi như là namespace mặc định. Trong tình huống này, để triệu hồi action class, bạn cần URI sau:

  • /action name.action  
    

    Nếu bạn xác định bất cứ namespace nào, thì bạn cần URI sau:

    /namespaceName/actionName.action   
    
  • Thuộc tính extends: Nói chung, phần tử package kế thừa struts-default package, tại đây định nghĩa các Interceptor và Result type. Nếu bạn kế thừa struts-default, tất cả action của package này có thể sử dụng các Interceptor và Result type đã được định nghĩa trong struts-default.xml file.

Phần tử action

Phần tử action là phần tử con của package và biểu diễn một action. Phần tử action này có các thuộc tính sau:

  • Thuộc tính name là bắt buộc để định nghĩa bất cứ action nào.

  • Lớp (class) là thuộc tính tùy ý của action. Nếu bạn bỏ qua thuộc tính class, ActionSupport sẽ được xem như là action mặc định. Một action đơn giản có thể là như sau:

  • <action name="product">
    
  • Thuộc tính method là tùy ý. Nếu bạn không xác định thuộc tính method, thì phương thức execute được xem như là phương thức của lớp action. Do đó, code này:

  • <action name="product" class="com.vietjack.Product">
    

    Là giống như:

    <action name="product" class="com.vietjack.Product" method="execute">
    

    Nếu bạn muốn triệu hồi một phương thức nào đó của action, bạn cần sử dụng thuộc tính trong Python.

Phần tử result

Đây là phần tử con của action, nó xác định nơi để chuyển tiếp request cho action này. Thuộc tính result có các thuộc tính sau:

  • Thuộc tính name là thuộc tính tùy ý. Nếu bạn bỏ qua thuộc tính name, thì success được xem là tên mặc định.

  • Thuộc tình type là thuộc tính tùy ý. Nếu bạn bỏ qua thuộc tính type, thì dispatcher được xem là Result Type mặc định.

Các phần tử khác

Cũng có nhiều phần tử khác như global-exception-mappings, global-results, include, … và chúng ta sẽ tìm hiểu chúng sau.