Struts 2 - Tệp cấu hình

Chương này sẽ đưa bạn đến cấu hình cơ bản cần thiết cho một Struts 2ứng dụng. Ở đây chúng ta sẽ thấy những gì có thể được định cấu hình với sự trợ giúp của một số tệp cấu hình quan trọng nhưweb.xml, struts.xml, strutsconfig.xmlstruts.properties

Thành thật mà nói, bạn có thể bắt đầu làm việc bằng cách sử dụng web.xmlstruts.xmltệp cấu hình (như bạn đã chứng kiến ​​trong chương trước của chúng tôi, nơi ví dụ của chúng tôi hoạt động bằng cách sử dụng hai tệp này). Tuy nhiên, đối với kiến ​​thức của bạn, chúng tôi cũng sẽ giải thích về các tệp khác.

Tệp web.xml

Tệp cấu hình web.xml là tệp cấu hình J2EE xác định cách các phần tử của yêu cầu HTTP được xử lý bởi vùng chứa servlet. Nó không hoàn toàn là một tệp cấu hình Struts2, nhưng nó là một tệp cần được cấu hình để Struts2 hoạt động.

Như đã thảo luận trước đó, tệp này cung cấp một điểm nhập cho bất kỳ ứng dụng web nào. Điểm vào của ứng dụng Struts2 sẽ là một bộ lọc được xác định trong bộ mô tả triển khai (web.xml). Do đó, chúng tôi sẽ xác định một mục nhập của lớp FilterDispatcher trong web.xml. Tệp web.xml cần được tạo trong thư mụcWebContent/WEB-INF.

Đây là tệp cấu hình đầu tiên bạn cần cấu hình nếu bạn đang khởi động mà không có sự hỗ trợ của mẫu hoặc công cụ tạo ra nó (chẳng hạn như Eclipse hoặc Maven2).

Sau đây là nội dung của tệp web.xml mà chúng tôi đã sử dụng trong ví dụ trước.

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee" 
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

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

</web-app>

Lưu ý rằng chúng tôi ánh xạ bộ lọc Struts 2 tới /*, và không /*.actioncó nghĩa là tất cả các url sẽ được phân tích cú pháp bởi bộ lọc thanh chống. Chúng tôi sẽ đề cập đến vấn đề này khi xem qua chương Chú thích.

Tệp Struts.xml

Các struts.xmltệp chứa thông tin cấu hình mà bạn sẽ sửa đổi khi các hành động được phát triển. Tệp này có thể được sử dụng để ghi đè cài đặt mặc định cho một ứng dụng, ví dụ: struts.devMode = false và các cài đặt khác được xác định trong tệp thuộc tính. Tệp này có thể được tạo trong thư mụcWEB-INF/classes.

Chúng ta hãy xem tệp struts.xml mà chúng ta đã tạo trong ví dụ Hello World được giải thích trong chương trước.

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <constant name = "struts.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">
     
      <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction" 
         method = "execute">
         <result name = "success">/HelloWorld.jsp</result>
      </action>
      
      <-- more actions can be listed here -->

   </package>
   <-- more packages can be listed here -->

</struts>

Điều đầu tiên cần lưu ý là DOCTYPE. Tất cả tệp cấu hình thanh chống cần có loại tài liệu chính xác như được hiển thị trong ví dụ nhỏ của chúng tôi. <struts> là phần tử thẻ gốc, theo đó chúng tôi khai báo các gói khác nhau bằng cách sử dụng thẻ <package>. Ở đây <package> cho phép phân tách và mô-đun hóa cấu hình. Điều này rất hữu ích khi bạn có một dự án lớn và dự án được chia thành các mô-đun khác nhau.

Ví dụ: nếu dự án của bạn có ba miền - business_application, customer_application và staff_application, thì bạn có thể tạo ba gói và lưu trữ các hành động liên quan trong gói thích hợp.

Thẻ gói có các thuộc tính sau:

Sr.No Thuộc tính & Mô tả
1

name (required)

Số nhận dạng duy nhất cho gói

2

extends

Gói này gia hạn từ gói nào? Theo mặc định, chúng tôi sử dụng struts-default làm gói cơ sở.

3

abstract

Nếu được đánh dấu là true, gói này không có sẵn cho người dùng cuối.

4

namespace

Không gian tên duy nhất cho các hành động

Các constant cùng với các thuộc tính tên và giá trị nên được sử dụng để ghi đè bất kỳ thuộc tính nào sau đây được xác định trong default.properties, giống như chúng tôi vừa thiết lập struts.devModebất động sản. Cài đặtstruts.devMode thuộc tính cho phép chúng tôi xem thêm thông báo gỡ lỗi trong tệp nhật ký.

Chúng tôi xác định action các thẻ tương ứng với mọi URL mà chúng tôi muốn truy cập và chúng tôi xác định một lớp với phương thức execute () sẽ được truy cập bất cứ khi nào chúng tôi truy cập URL tương ứng.

Kết quả xác định những gì được trả về trình duyệt sau khi một hành động được thực thi. Chuỗi được trả về từ hành động phải là tên của một kết quả. Kết quả được định cấu hình cho mỗi hành động như trên hoặc dưới dạng kết quả "chung", có sẵn cho mọi hành động trong một gói. Kết quả có tùy chọnnametypethuộc tính. Giá trị tên mặc định là "thành công".

Tệp struts.xml có thể phát triển lớn theo thời gian và vì vậy việc chia nhỏ nó theo từng gói là một cách để mô-đun hóa nó, nhưng Strutscung cấp một cách khác để mô-đun hóa tệp struts.xml. Bạn có thể chia tệp thành nhiều tệp xml và nhập chúng theo cách sau.

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <include file="my-struts1.xml"/>
   <include file="my-struts2.xml"/>
</struts>

Tệp cấu hình khác mà chúng tôi chưa đề cập là struts-default.xml. Tệp này chứa các cài đặt cấu hình tiêu chuẩn cho Struts và bạn sẽ không phải chạm vào các cài đặt này cho 99,99% dự án của mình. Vì lý do này, chúng tôi sẽ không đi vào quá nhiều chi tiết về tệp này. Nếu bạn quan tâm, hãy xem quadefault.properties tệp có sẵn trong tệp struts2-core-2.2.3.jar.

Tệp Struts-config.xml

Tệp cấu hình struts-config.xml là liên kết giữa các thành phần Chế độ xem và Mô hình trong Máy khách web nhưng bạn sẽ không phải chạm vào các cài đặt này cho 99,99% dự án của mình.

Tệp cấu hình về cơ bản chứa các phần tử chính sau:

Sr.No Đánh chặn & Mô tả
1

struts-config

Đây là nút gốc của tệp cấu hình.

2

form-beans

Đây là nơi bạn ánh xạ lớp con ActionForm của mình thành một tên. Bạn sử dụng tên này làm bí danh cho ActionForm của mình trong suốt phần còn lại của tệp strutsconfig.xml và thậm chí trên các trang JSP của bạn.

3

global forwards

Phần này ánh xạ một trang trên ứng dụng web của bạn với một tên. Bạn có thể sử dụng tên này để tham khảo trang thực tế. Điều này giúp tránh mã hóa cứng các URL trên các trang web của bạn.

4

action-mappings

Đây là nơi bạn khai báo các trình xử lý biểu mẫu và chúng còn được gọi là ánh xạ hành động.

5

controller

Phần này cấu hình nội bộ Struts và hiếm khi được sử dụng trong các tình huống thực tế.

6

plug-in

Phần này cho Struts biết nơi tìm các tệp thuộc tính của bạn, chứa các lời nhắc và thông báo lỗi

Sau đây là tệp struts-config.xml mẫu:

<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
   "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

   <!-- ========== Form Bean Definitions ============ -->
   <form-beans>
      <form-bean name = "login" type = "test.struts.LoginForm" />
   </form-beans>

   <!-- ========== Global Forward Definitions ========= -->
   <global-forwards>
   </global-forwards>

   <!-- ========== Action Mapping Definitions ======== -->
   <action-mappings>
      <action
         path = "/login"
         type = "test.struts.LoginAction" >

         <forward name = "valid" path = "/jsp/MainMenu.jsp" />
         <forward name = "invalid" path = "/jsp/LoginView.jsp" />
      </action>
   </action-mappings>

   <!-- ========== Controller Definitions ======== -->
   <controller contentType = "text/html;charset = UTF-8"
      debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>

</struts-config>

Để biết thêm chi tiết về tệp struts-config.xml, vui lòng kiểm tra tài liệu về struts của bạn.

Tệp Struts.properties

Tệp cấu hình này cung cấp một cơ chế để thay đổi hành vi mặc định của khung. Trên thực tế, tất cả các thuộc tính có trongstruts.properties tệp cấu hình cũng có thể được định cấu hình trong web.xml sử dụng init-param, cũng như sử dụng thẻ không đổi trong struts.xmltập tin cấu hình. Tuy nhiên, nếu bạn muốn giữ mọi thứ riêng biệt và các thanh chống cụ thể hơn, thì bạn có thể tạo tệp này trong thư mụcWEB-INF/classes.

Các giá trị được định cấu hình trong tệp này sẽ ghi đè các giá trị mặc định được định cấu hình trong default.propertiesđược chứa trong phân phối struts2-core-xyzjar. Có một số thuộc tính mà bạn có thể cân nhắc thay đổi bằng cách sử dụngstruts.properties tập tin -

### When set to true, Struts will act much more friendly for developers
struts.devMode = true

### Enables reloading of internationalization files
struts.i18n.reload = true

### Enables reloading of XML configuration files
struts.configuration.xml.reload = true

### Sets the port that the server is run on
struts.url.http.port = 8080

Đây bất kỳ dòng nào bắt đầu bằng hash (#) sẽ được coi là một nhận xét và nó sẽ bị bỏ qua bởi Struts 2.