Struts 2 - ไฟล์คอนฟิกูเรชัน
บทนี้จะนำคุณไปสู่การกำหนดค่าพื้นฐานซึ่งจำเป็นสำหรับไฟล์ Struts 2ใบสมัคร ที่นี่เราจะเห็นสิ่งที่สามารถกำหนดค่าได้ด้วยความช่วยเหลือของไฟล์กำหนดค่าที่สำคัญบางอย่างเช่นweb.xml, struts.xml, strutsconfig.xml และ struts.properties
พูดตามตรงคุณสามารถเริ่มทำงานได้โดยใช้ web.xml และ struts.xmlไฟล์การกำหนดค่า (ดังที่คุณได้เห็นไปแล้วในบทก่อนหน้าของเราซึ่งตัวอย่างของเราทำงานโดยใช้สองไฟล์นี้) อย่างไรก็ตามเพื่อความรู้ของคุณเราจะอธิบายเกี่ยวกับไฟล์อื่น ๆ ด้วย
ไฟล์ web.xml
ไฟล์คอนฟิกูเรชัน web.xml เป็นไฟล์คอนฟิกูเรชัน J2EE ที่กำหนดวิธีการประมวลผลอิลิเมนต์ของคำร้องขอ HTTP โดยคอนเทนเนอร์ servlet ไม่ใช่ไฟล์คอนฟิกูเรชัน Struts2 อย่างเคร่งครัด แต่เป็นไฟล์ที่ต้องกำหนดค่าเพื่อให้ Struts2 ทำงานได้
ตามที่กล่าวไว้ก่อนหน้านี้ไฟล์นี้เป็นจุดเริ่มต้นสำหรับเว็บแอปพลิเคชันใด ๆ จุดเริ่มต้นของแอ็พพลิเคชัน Struts2 จะเป็นตัวกรองที่กำหนดไว้ในตัวบอกการปรับใช้ (web.xml) ดังนั้นเราจะกำหนดรายการของคลาสFilterDispatcherใน web.xml ไฟล์ web.xml ต้องถูกสร้างขึ้นภายใต้โฟลเดอร์WebContent/WEB-INF.
นี่คือไฟล์คอนฟิกูเรชันแรกที่คุณจะต้องกำหนดค่าหากคุณเริ่มต้นโดยไม่ได้รับความช่วยเหลือจากเทมเพลตหรือเครื่องมือที่สร้างขึ้น (เช่น Eclipse หรือ Maven2)
ต่อไปนี้เป็นเนื้อหาของไฟล์ web.xml ที่เราใช้ในตัวอย่างสุดท้ายของเรา
<?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>
โปรดทราบว่าเราจับคู่ตัวกรอง Struts 2 กับ /*และไม่ทำ /*.actionซึ่งหมายความว่า URL ทั้งหมดจะถูกแยกวิเคราะห์โดยตัวกรอง struts เราจะกล่าวถึงเรื่องนี้เมื่อเราจะอ่านบทคำอธิบายประกอบ
ไฟล์ Struts.xml
struts.xmlไฟล์มีข้อมูลการกำหนดค่าที่คุณจะแก้ไขเมื่อมีการพัฒนาการกระทำ ไฟล์นี้สามารถใช้เพื่อลบล้างการตั้งค่าเริ่มต้นสำหรับแอปพลิเคชันตัวอย่างเช่นstruts.devMode = falseและการตั้งค่าอื่น ๆ ซึ่งกำหนดไว้ในไฟล์คุณสมบัติ ไฟล์นี้สามารถสร้างได้ภายใต้โฟลเดอร์WEB-INF/classes.
ให้เราดูไฟล์ struts.xml ที่เราสร้างขึ้นในตัวอย่าง Hello World ที่อธิบายไว้ในบทที่แล้ว
<?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>
สิ่งแรกที่ควรทราบคือ DOCTYPE. ไฟล์คอนฟิกูเรชัน struts ทั้งหมดต้องมีประเภทหลักที่ถูกต้องดังที่แสดงในตัวอย่างเล็ก ๆ น้อย ๆ ของเรา <struts> เป็นองค์ประกอบแท็กรูทซึ่งเราประกาศแพ็กเกจที่แตกต่างกันโดยใช้แท็ก <package> ที่นี่ <package> อนุญาตให้แยกและแยกส่วนของการกำหนดค่า สิ่งนี้มีประโยชน์มากเมื่อคุณมีโปรเจ็กต์ขนาดใหญ่และโปรเจ็กต์ถูกแบ่งออกเป็นโมดูลต่างๆ
ตัวอย่างเช่นหากโปรเจ็กต์ของคุณมีสามโดเมน ได้แก่ business_application, customer_application และ staff_application คุณสามารถสร้างแพ็กเกจสามแพ็กเกจและจัดเก็บการดำเนินการที่เกี่ยวข้องในแพ็กเกจที่เหมาะสม
แท็กแพ็คเกจมีคุณสมบัติดังต่อไปนี้ -
ซีเนียร์ No | คุณสมบัติและคำอธิบาย |
---|---|
1 | name (required) ตัวระบุเฉพาะสำหรับแพ็กเกจ |
2 | extends แพ็คเกจนี้ขยายจากแพ็คเกจใด โดยค่าเริ่มต้นเราใช้ struts-default เป็นแพ็กเกจพื้นฐาน |
3 | abstract หากทำเครื่องหมายเป็นจริงแพ็กเกจจะไม่สามารถใช้งานได้สำหรับผู้ใช้ปลายทาง |
4 | namespace เนมสเปซเฉพาะสำหรับการดำเนินการ |
constant ควรใช้แท็กพร้อมกับแอตทริบิวต์ชื่อและค่าเพื่อแทนที่คุณสมบัติใด ๆ ต่อไปนี้ที่กำหนดไว้ใน default.propertiesเช่นเราเพิ่งตั้งค่า struts.devModeทรัพย์สิน. การตั้งค่าstruts.devMode คุณสมบัติช่วยให้เราเห็นข้อความการดีบักเพิ่มเติมในไฟล์บันทึก
เรากำหนด action แท็กสอดคล้องกับทุก URL ที่เราต้องการเข้าถึงและเรากำหนดคลาสด้วยเมธอด execute () ซึ่งจะเข้าถึงเมื่อใดก็ตามที่เราจะเข้าถึง URL ที่เกี่ยวข้อง
ผลลัพธ์จะเป็นตัวกำหนดสิ่งที่ส่งกลับไปยังเบราว์เซอร์หลังจากดำเนินการแล้ว สตริงที่ส่งกลับจากการกระทำควรเป็นชื่อของผลลัพธ์ ผลลัพธ์จะได้รับการกำหนดค่าต่อการกระทำตามด้านบนหรือเป็นผลลัพธ์ "ทั่วโลก" ซึ่งพร้อมใช้งานสำหรับทุกการกระทำในแพ็กเกจ ผลลัพธ์มีทางเลือกname และ typeคุณลักษณะ. ค่าชื่อเริ่มต้นคือ "สำเร็จ"
ไฟล์ Struts.xml สามารถขยายขนาดใหญ่ได้เมื่อเวลาผ่านไปดังนั้นการทำลายมันด้วยแพ็คเกจจึงเป็นวิธีหนึ่งในการแยกส่วน แต่ Strutsเสนอวิธีอื่นในการแยกไฟล์ struts.xml คุณสามารถแยกไฟล์ออกเป็นไฟล์ xml หลายไฟล์และนำเข้าได้ตามลักษณะต่อไปนี้
<?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>
ไฟล์กำหนดค่าอื่น ๆ ที่เราไม่ได้กล่าวถึงคือ struts-default.xml ไฟล์นี้มีการตั้งค่าการกำหนดค่ามาตรฐานสำหรับ Struts และคุณไม่จำเป็นต้องแตะการตั้งค่าเหล่านี้สำหรับโครงการของคุณ 99.99% ด้วยเหตุนี้เราจะไม่ลงรายละเอียดเกี่ยวกับไฟล์นี้มากเกินไป หากคุณสนใจลองดูที่ไฟล์default.properties ไฟล์ที่มีอยู่ในไฟล์ struts2-core-2.2.3.jar
ไฟล์ Struts-config.xml
ไฟล์คอนฟิกูเรชัน struts-config.xml คือลิงก์ระหว่างคอมโพเนนต์ View และ Model ใน Web Client แต่คุณจะไม่ต้องแตะการตั้งค่าเหล่านี้สำหรับ 99.99% ของโปรเจ็กต์ของคุณ
ไฟล์กำหนดค่าโดยทั่วไปมีองค์ประกอบหลักดังต่อไปนี้ -
ซีเนียร์ No | ผู้สกัดกั้นและคำอธิบาย |
---|---|
1 | struts-config นี่คือโหนดรูทของไฟล์คอนฟิกูเรชัน |
2 | form-beans นี่คือที่ที่คุณแมปคลาสย่อย ActionForm ของคุณกับชื่อ คุณใช้ชื่อนี้เป็นนามแฝงสำหรับ ActionForm ของคุณตลอดส่วนที่เหลือของไฟล์ strutsconfig.xml และแม้แต่ในเพจ JSP ของคุณ |
3 | global forwards ส่วนนี้จะแมปเพจบนเว็บแอพของคุณกับชื่อ คุณสามารถใช้ชื่อนี้เพื่ออ้างถึงเพจจริง ซึ่งจะหลีกเลี่ยงการเข้ารหัส URL บนหน้าเว็บของคุณ |
4 | action-mappings นี่คือที่ที่คุณประกาศตัวจัดการฟอร์มและยังเรียกอีกอย่างว่าการแมปการดำเนินการ |
5 | controller ส่วนนี้กำหนดค่า Struts ภายในและแทบไม่ได้ใช้ในสถานการณ์จริง |
6 | plug-in ส่วนนี้จะบอก Struts ว่าจะค้นหาไฟล์คุณสมบัติของคุณได้ที่ไหนซึ่งมีข้อความแจ้งและข้อความแสดงข้อผิดพลาด |
ต่อไปนี้เป็นไฟล์ struts-config.xml ตัวอย่าง -
<?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>
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับไฟล์ struts-config.xml โปรดตรวจสอบเอกสาร struts ของคุณ
ไฟล์ Struts.properties
ไฟล์คอนฟิกูเรชันนี้มีกลไกในการเปลี่ยนลักษณะการทำงานเริ่มต้นของเฟรมเวิร์ก จริงๆแล้วคุณสมบัติทั้งหมดที่มีอยู่ในไฟล์struts.properties ไฟล์การกำหนดค่ายังสามารถกำหนดค่าในไฟล์ web.xml ใช้ init-paramเช่นเดียวกับการใช้แท็กค่าคงที่ในไฟล์ struts.xmlไฟล์กำหนดค่า แต่ถ้าคุณต้องการแยกสิ่งต่าง ๆ ออกจากกันและมีความเฉพาะเจาะจงมากขึ้นคุณสามารถสร้างไฟล์นี้ในโฟลเดอร์WEB-INF/classes.
ค่าที่กำหนดไว้ในไฟล์นี้จะแทนที่ค่าเริ่มต้นที่กำหนดค่าไว้ในไฟล์ default.propertiesซึ่งมีอยู่ในการแจกแจงแบบ struts2-core-xyzjar มีคุณสมบัติสองสามอย่างที่คุณอาจพิจารณาเปลี่ยนโดยใช้struts.properties ไฟล์ -
### 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
บรรทัดใดก็ได้ที่ขึ้นต้นด้วย hash (#) จะถือว่าเป็นความคิดเห็นและจะถูกละเว้นโดย Struts 2.