Struts 2 - ผลลัพธ์และประเภทผลลัพธ์
ดังที่ได้กล่าวไว้ก่อนหน้านี้ <results> แท็กมีบทบาทเป็นไฟล์ viewในเฟรมเวิร์ก Struts2 MVC การดำเนินการมีหน้าที่รับผิดชอบในการดำเนินการตามตรรกะทางธุรกิจ ขั้นตอนต่อไปหลังจากเรียกใช้ตรรกะทางธุรกิจคือการแสดงมุมมองโดยใช้ไฟล์<results> แท็ก
มักจะมีกฎการนำทางบางอย่างแนบมาพร้อมกับผลลัพธ์ ตัวอย่างเช่นหากวิธีการดำเนินการคือการพิสูจน์ตัวตนผู้ใช้อาจมีผลลัพธ์ที่เป็นไปได้สามประการ
- เข้าสู่ระบบสำเร็จ
- เข้าสู่ระบบไม่สำเร็จ - ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
- บัญชีถูกล็อค
ในสถานการณ์นี้วิธีการดำเนินการจะถูกกำหนดค่าด้วยสตริงผลลัพธ์ที่เป็นไปได้สามแบบและมุมมองที่แตกต่างกันสามมุมมองเพื่อแสดงผลลัพธ์ เราได้เห็นสิ่งนี้แล้วในตัวอย่างก่อนหน้านี้
แต่ Struts2 ไม่ได้ผูกมัดคุณกับการใช้ JSP เป็นเทคโนโลยีมุมมอง โดยรวมแล้ววัตถุประสงค์ทั้งหมดของกระบวนทัศน์ MVC คือการแยกชั้นและกำหนดค่าได้สูง ตัวอย่างเช่นสำหรับไคลเอ็นต์ Web2.0 คุณอาจต้องการส่งคืน XML หรือ JSON เป็นเอาต์พุต ในกรณีนี้คุณสามารถสร้างประเภทผลลัพธ์ใหม่สำหรับ XML หรือ JSON และบรรลุสิ่งนี้
Struts มาพร้อมกับจำนวนที่กำหนดไว้ล่วงหน้า result types และอะไรก็ตามที่เราเห็นแล้วนั่นคือประเภทผลลัพธ์เริ่มต้น dispatcherซึ่งใช้เพื่อส่งไปยังเพจ JSP Struts อนุญาตให้คุณใช้ภาษามาร์กอัปอื่น ๆ สำหรับเทคโนโลยีมุมมองเพื่อนำเสนอผลลัพธ์และตัวเลือกยอดนิยม ได้แก่Velocity, Freemaker, XSLT และ Tiles.
ประเภทผลลัพธ์ของผู้มอบหมายงาน
dispatcherชนิดผลลัพธ์เป็นประเภทดีฟอลต์และจะใช้หากไม่มีการระบุประเภทผลลัพธ์อื่น ใช้เพื่อส่งต่อไปยัง servlet, JSP, HTML page และอื่น ๆ บนเซิร์ฟเวอร์ มันใช้เมธอดRequestDispatcher.forward ()
เราเห็นเวอร์ชัน "ชวเลข" ในตัวอย่างก่อนหน้านี้ซึ่งเราจัดเตรียมเส้นทาง JSP เป็นเนื้อหาของแท็กผลลัพธ์
<result name = "success">
/HelloWorld.jsp
</result>
เรายังสามารถระบุไฟล์ JSP โดยใช้แท็ก <param name = "location"> ภายในองค์ประกอบ <result ... > ได้ดังนี้ -
<result name = "success" type = "dispatcher">
<param name = "location">
/HelloWorld.jsp
</param >
</result>
นอกจากนี้เรายังสามารถจัดหาไฟล์ parseพารามิเตอร์ซึ่งเป็นจริงตามค่าเริ่มต้น พารามิเตอร์แยกวิเคราะห์กำหนดว่าพารามิเตอร์ตำแหน่งจะถูกแยกวิเคราะห์สำหรับนิพจน์ OGNL หรือไม่
ประเภทผลลัพธ์ FreeMaker
ในตัวอย่างนี้เราจะมาดูวิธีการใช้งาน FreeMakerเป็นเทคโนโลยีมุมมอง Freemaker เป็นเครื่องมือสร้างเทมเพลตยอดนิยมที่ใช้ในการสร้างเอาต์พุตโดยใช้เทมเพลตที่กำหนดไว้ล่วงหน้า ให้เราสร้างไฟล์เทมเพลต Freemaker ชื่อhello.fm โดยมีเนื้อหาดังต่อไปนี้ -
Hello World ${name}
ไฟล์ด้านบนเป็นเทมเพลตที่ nameเป็นพารามิเตอร์ที่จะถูกส่งผ่านจากภายนอกโดยใช้การกระทำที่กำหนดไว้ คุณจะเก็บไฟล์นี้ไว้ใน CLASSPATH ของคุณ
ต่อไปให้เราแก้ไขไฟล์ struts.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>
<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" type = "freemarker">
<param name = "location">/hello.fm</param>
</result>
</action>
</package>
</struts>
ให้เราเก็บไฟล์ HelloWorldAction.java, HelloWorldAction.jsp และ index.jsp ตามที่เราสร้างไว้ในบทตัวอย่าง
ตอนนี้คลิกขวาที่ชื่อโครงการแล้วคลิก Export > WAR File เพื่อสร้างไฟล์ War
จากนั้นปรับใช้ WAR นี้ในไดเร็กทอรี webapps ของ Tomcat สุดท้ายเริ่มเซิร์ฟเวอร์ Tomcat และพยายามเข้าถึง URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. ซึ่งจะแสดงหน้าจอต่อไปนี้
ป้อนค่า "Struts2" และส่งเพจ คุณควรจะเห็นหน้าถัดไป
อย่างที่คุณเห็นนี่เหมือนกับมุมมอง JSP ทุกประการยกเว้นว่าเราไม่ได้เชื่อมโยงกับการใช้ JSP เป็นเทคโนโลยีมุมมอง เราได้ใช้ Freemaker ในตัวอย่างนี้
ประเภทผลลัพธ์การเปลี่ยนเส้นทาง
redirectชนิดผลลัพธ์เรียกใช้เมธอดresponse.sendRedirect ()มาตรฐานทำให้เบราว์เซอร์สร้างคำขอใหม่ไปยังตำแหน่งที่กำหนด
เราสามารถระบุตำแหน่งในเนื้อความขององค์ประกอบ <result ... > หรือเป็นองค์ประกอบ <param name = "location"> การเปลี่ยนเส้นทางยังรองรับไฟล์parseพารามิเตอร์. นี่คือตัวอย่างที่กำหนดค่าโดยใช้ XML -
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success" type = "redirect">
<param name = "location">
/NewWorld.jsp
</param >
</result>
</action>
ดังนั้นเพียงแค่แก้ไขไฟล์ struts.xml ของคุณเพื่อกำหนดประเภทการเปลี่ยนเส้นทางตามที่กล่าวไว้ข้างต้นและสร้างไฟล์ NewWorld.jpg ใหม่ซึ่งคุณจะถูกเปลี่ยนเส้นทางเมื่อใดก็ตามที่การดำเนินการของ hello จะส่งคืนความสำเร็จ คุณสามารถตรวจสอบตัวอย่างการดำเนินการเปลี่ยนเส้นทาง Struts 2เพื่อความเข้าใจที่ดีขึ้น