1. หนึ่งในวิธีการเปลี่ยนคุณลักษณะการกระทำในรูปแบบฟอร์มในการเรียกวิธี DMI Dynamic Method ได้รับการอธิบาย มีอีกสองประเภท หนึ่งคือการเปลี่ยนแอตทริบิวต์วิธีการในแท็กการกระทำในไฟล์การกำหนดค่า struts.xml เพื่อระบุการดำเนินการของวิธีการต่าง ๆ เพื่อจัดการตรรกะทางธุรกิจที่แตกต่างกัน อีกอย่างคือการใช้ไวด์การ์ด ในการเปลี่ยนแอตทริบิวต์วิธีการการกระทำหลายอย่างจะต้องมีการกำหนดค่าและการกระทำเหล่านี้ส่วนใหญ่จะถูกกำหนดเหมือนกันดังนั้นคำจำกัดความนี้ค่อนข้างซ้ำซ้อน ดังนั้นการใช้ WildCards สามารถแทนที่การกระทำที่ประมวลผลแบบลอจิกหลายครั้งในแท็กการกระทำเดียว
2. การสาธิต: ( มันคล้ายกับการเรียกใช้วิธีการแบบไดนามิกก่อนหน้านี้เพื่อเปลี่ยนแอตทริบิวต์การกระทำของฟอร์มฟอร์มและมีการปรับเปลี่ยนขนาดเล็กในไฟล์การกำหนดค่า struts.xml)
ข้อกำหนดยังคงไม่เปลี่ยนแปลง คลิกปุ่มส่งที่แตกต่างกันเพื่อส่งแบบฟอร์มเดียวกันและส่งมอบบริการที่แตกต่างกันไปยังคลาสการประมวลผลการดำเนินการเดียวกันสำหรับการประมวลผล
⒈แสดงแบบฟอร์มครั้งที่สองมีปุ่มส่งสองปุ่มในแบบฟอร์ม แต่เป็นตัวแทนของธุรกิจที่แตกต่างกัน ผู้ใช้เข้าสู่ระบบเมื่อคลิกเพื่อเข้าสู่ระบบ ผู้ใช้เข้าสู่ระบบเมื่อคลิกเพื่อลงทะเบียน
⒉ผู้ใช้เข้าสู่ระบบ:
⒊การลงทะเบียนผู้ใช้:
รหัสเฉพาะมีดังนี้:
⑴. เข้าสู่ระบบหน้าลงทะเบียน (index.jsp):
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"><html> <head> <meta http-equiv =" content-type "เนื้อหา =" ข้อความ/html; charset = utf-8 " type = "text/javascript"> $ (function () {$ ("อินพุต: eq (3)") คลิก (ฟังก์ชั่น () {/*ปรับเปลี่ยนค่าของแอตทริบิวต์การกระทำในแบบฟอร์มเพื่อส่งคำขอที่ลงทะเบียนไปยังคลาสแอ็คชั่น*/$ ("#ฟอร์ม") id = "ฟอร์ม"> ชื่อ: <อินพุต type = "text" name = "name"/> <br> <br> รหัสผ่าน: <อินพุต type = "รหัสผ่าน" ชื่อ = "รหัสผ่าน"/> <br> <br> <อินพุตประเภท = "ส่ง" value = "เข้าสู่ระบบ"> <อินพุตประเภท = "ส่ง" ⑵. ไฟล์การกำหนดค่ารหัส struts.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <! doctype struts สาธารณะ "-// Apache Software Foundation // dtd struts การกำหนดค่า 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd" name = "*" method = "{1}"> <name result = "userlogin"> web-inf/jsp/userlogin.jsp </result> <name result = "userCreate"> web-inf/jsp/usercreate.jsp </result> </action> การวิเคราะห์:
1. ในไฟล์การกำหนดค่านี้อักขระไวด์การ์ดจะถูกกำหนดค่าสำหรับแอตทริบิวต์ชื่อในแท็กการกระทำ: "*" และค่าของแอตทริบิวต์เมธอดหลังจากนั้นคือ: {1}
2. หมายความว่าเมื่อผู้ใช้คลิกปุ่มเข้าสู่ระบบในหน้า index.jsp คำขอ action = "เข้าสู่ระบบ" ในแบบฟอร์ม: จะถูกส่งผ่านไปยัง struts เนื่องจากการกำหนดค่าไวด์การ์ดดำเนินการใน struts.xml, "*" ถือเป็น "เข้าสู่ระบบ" นั่นคือชื่อ = "เข้าสู่ระบบ" ค่าวิธีการที่ตามมาคือ: {1} หมายถึง "*" แรกซึ่งเป็นวิธี = "เข้าสู่ระบบ" ดังนั้น Struts จะพบวิธีการเข้าสู่ระบบในคลาส Action.action และเรียกมันว่า หากผู้ใช้คลิกปุ่มลงทะเบียนกระบวนการจะเหมือนกับการคลิกปุ่มเข้าสู่ระบบ คุณสามารถเขียนตัวอย่างเล็ก ๆ น้อย ๆ เพื่อสัมผัสได้
⑶. รหัสการดำเนินการคลาส:
การกระทำของแพ็คเกจ; นำเข้า com.opensymphony.xwork2.ActionSupport; การกระทำระดับสาธารณะขยายการกระทำ {ชื่อสตริงส่วนตัว; สตริงสาธารณะ getName () {return name;} โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; สร้าง () {system.out.println ("การลงทะเบียนผู้ใช้"); return "usercreate";}} แน่นอนว่าการใช้ตัวอักษรไวลด์ไม่ได้เป็นเพียงเรื่องง่าย แต่อาจรวมถึง: "*-*", "book_*" ฯลฯ อักขระไวด์การ์ดเหล่านี้สามารถใช้ในคุณสมบัติของแท็กแอ็คชั่นในไฟล์การกำหนดค่า struts.xml เช่น MTHOD และคลาสคุณลักษณะ
<!-กำหนดแท็กการกระทำทั่วไป-> <action name = "*"> <!-กำหนดแท็กผลลัพธ์โดยใช้นิพจน์-> <result>/web-inf/jsp/{1} .jsp </result> </action> ในคำจำกัดความการกระทำข้างต้นชื่อของการกระทำคือ *ดังนั้นจึงสามารถจับคู่การกระทำใด ๆ คำขอทั้งหมดได้รับการจัดการผ่านการกระทำนี้ เนื่องจากการกระทำนี้ไม่มีแอตทริบิวต์คลาสคลาส ActionSupport จึงใช้เพื่อจัดการกับมัน เนื่องจากไม่มีแอตทริบิวต์วิธีการค่าเริ่มต้นคือวิธีการดำเนินการและส่งคืนสตริงความสำเร็จ ยิ่งไปกว่านั้นแอตทริบิวต์ชื่อในแท็กผลลัพธ์นั้นประสบความสำเร็จโดยค่าเริ่มต้นดังนั้นการกระทำจะส่งคืนทรัพยากร JSP ที่ระบุไว้ในผลลัพธ์โดยตรงเสมอ ดังนั้นความหมายของนิยามการกระทำข้างต้นคือ: หากผู้ใช้ร้องขอ A.Action มันจะข้ามไปที่ A.JSP; หากมีการร้องขอ b.Action มันจะข้ามไปที่ B.JSP
ข้างต้นเป็นวิธีการเรียกใช้แบบไดนามิกใน struts ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!