คำนำ
ฉันได้แนะนำคุณเกี่ยวกับการสอนเบื้องต้นเกี่ยวกับ struts2 ฉันจะแบ่งปันความรู้ที่ฉันได้เรียนรู้ต่อไปปัญหาที่ฉันพบในระหว่างกระบวนการเรียนรู้และการแก้ปัญหา แน่นอนหากผู้อ่านพบปัญหาใด ๆ พวกเขาสามารถแจ้งให้ฉันทราบในความคิดเห็นด้านล่าง ขอบคุณล่วงหน้า
การเข้าถึงทรัพยากรเว็บที่ใช้งานได้
แหล่งข้อมูลเว็บ
ทรัพยากรเว็บที่เรียกว่าหมายถึง API ดั้งเดิมเช่น HttpServletRequest, httpservletResponse และ servletContext ในฐานะที่เป็นตัวควบคุมการพัฒนาแอปพลิเคชัน B/S จะต้องสามารถเข้าถึงทรัพยากรเว็บเช่นการอ่านและการเขียนคุณสมบัติไปยังวัตถุโดเมน
วิธีเข้าถึงแหล่งข้อมูลเว็บ
วิธีการ decoupling จาก servletapi: เพื่อหลีกเลี่ยงการมีเพศสัมพันธ์กับ servletapi และอำนวยความสะดวกในการทดสอบหน่วยในการดำเนินการ struts2 ห่อหุ้ม httpservletrequest, httpsession และ servletcontext สร้างวัตถุแผนที่ 3 วัตถุเพื่อแทนที่วัตถุ 3 ชิ้นเหล่านี้ ในการดำเนินการคุณสามารถใช้วัตถุแผนที่ที่เกี่ยวข้องของ httpservletrequest, httpservletsession และ httpservletContext เพื่อบันทึกและอ่านข้อมูล
public Object get(Object key) เพื่อผ่านพารามิเตอร์คำขอเพื่อให้ได้การใช้งานsetRequest() เพื่อให้สามารถเรียกร้องให้มีการร้องขอในทุกวิธีการดำเนินการ ใช้ ActionContext เพื่อรับการสาธิตรหัสของวัตถุโดเมน
ส่งคำขอจากหน้า index.jsp ไปที่ showpage.jsp และส่งคำขอไปยังคลาสการกระทำของ struts 'java เพื่อจัดการคำขอ
ใน ObjectAction.java วัตถุโดเมนจะถูกดึงโดย ActionContext และค่าคุณสมบัติจะถูกเพิ่มเข้าไปและคำขอจะถูกส่งต่อไปยัง showpage.jsp
ในหน้า showpage.jsp เราสามารถรับค่าของแต่ละวัตถุโดเมน
index.jsp
< %@ page contentType = "text/html; charset = utf-8" language = "java" %> <html> <head> <title> handle </title> </head> <body>-ผ่านพารามิเตอร์ชื่อ > แอปพลิเคชัน </a> </body> </html>
Objectaction.java
แพ็คเกจ com.request.test; นำเข้า com.opensymphony.xwork2.actioncontext; นำเข้า java.util.map; การคัดค้านคลาสสาธารณะ {สตริงสาธารณะพิมพ์ () {// รับ actionContext actionContext actionContext = actionContext.getContext (); // รับแผนที่ที่สอดคล้องกับวัตถุแอ็คชั่น ApplicationMap.put ("ApplicationMap", "ApplicationMapValue"); // รับแผนที่ที่สอดคล้องกับแผนที่เซสชัน <สตริงวัตถุ> เซสชัน map = actionContext.getSession (); // กำหนดเซสชั่นเซสชันให้กับเซสชัน map.put ("sessionMap", "SessionMapValue"); // Object> requestMap = (แผนที่ <สตริง, วัตถุ>) ActionContext.get ("คำขอ"); // รับแผนที่ที่สอดคล้องกับการร้องขอ ไม่มีเมธอด getRequest () ที่สอดคล้องกันดังนั้นให้ใช้เมธอด GET ("คำขอ") แผนที่ <สตริง, วัตถุ> requestmap = (แผนที่ <สตริง, วัตถุ>) actionContext.get ("คำขอ"); // be requestmap กำหนด requestmap.put ("requestmap", "requestmapvalue"); ค่าพารามิเตอร์ของพารามิเตอร์สตริง [] params = (string []) paramsmap.get ("ชื่อ"); // พิมพ์ค่าพารามิเตอร์ไปยังคอนโซล system.out.println (พารามิเตอร์ [0]); กลับ "ความสำเร็จ"; -struts.xml (แสดงโหนดแพ็คเกจเท่านั้น)
<package name = "showValue" exted = "struts-default"> <action name = "showpage" method = "print"> <result name = "Success">/showpage.jsp </result> </action> </packagple>
showpage.jsp (แสดงเนื้อหาแท็กร่างกายเท่านั้น)
<%-รับค่าของวัตถุโดเมนแอปพลิเคชัน-%> $ {ApplicationsCope.ApplicationMap} <br> <%-รับค่าของวัตถุโดเมนเซสชัน-%> $ {SessionsCope.SessionMap} <br> <%-รับค่าของวัตถุโดเมนคำขอ- Object-%> $ {requestscope.requestmap}รายละเอียดและความสนใจ (ลากภาพไปยังหน้าแท็บใหม่ของเบราว์เซอร์เพื่อดูภาพที่ใหญ่กว่า)
การเข้าถึงทรัพยากรเว็บโดยใช้อินเทอร์เฟซ xxxaware
เช่นเดียวกับการใช้ ActionContext การส่งคำขอไปยัง ObjectAction.java ในหน้า index.jsp ถูกประมวลผลโดยวิธี print2()
กำหนดค่าให้กับวัตถุโดเมนในเมธอด print2() ใน ObjectAction.java และรับค่าของพารามิเตอร์ที่ผ่าน
ในที่สุดเราได้รับค่าของวัตถุโดเมนใน showpage.jsp เพื่อแยกแยะความแตกต่างจากอันก่อนหน้านี้เราเพิ่มสัญลักษณ์ลงในแต่ละค่าเอาต์พุตเพื่อแยกความแตกต่าง
index.jsp (แสดงส่วนแท็กตัวถัง)
<a href = "showpage2.action? name = smzyy" rel = "ภายนอก nofollow"> topage2 </a>
Objectaction.java
แพ็คเกจ com.request.test; นำเข้า com.opensymphony.xwork2.actioncontext; นำเข้า org.apache.struts2.interceptor.aplicationAware; นำเข้า org.apache.struts2.interceptor.parameteraware; นำเข้า java.util.map; คลาสสาธารณะ ObjectAction ใช้การร้องขอ WEUGHTAWARE, SessionAware, ApplicationAware, Parameteraware {MAP ส่วนตัว <String, Object> RequestMap; แผนที่ส่วนตัว <String, Object> SessionMap; แผนที่ส่วนตัว <String, Object> ApplicationMap; แผนที่ส่วนตัว <String, String []> ParameterMap; // showpage.action ดำเนินการวิธีการที่ต้องการสตริงสาธารณะ print2 () {applicationmap.put ("ApplicationMap", "ApplicationMapval ==="); requestmap.put ("requestmap", "requestmapval ==="); SessionMap.put ("SessionMap", "SessionMapval ==="); สตริง [] name = parameterMap.get ("ชื่อ"); System.out.println (ชื่อ [0] + "===="); กลับ "ความสำเร็จ"; } @Override โมฆะสาธารณะ setapplication (แผนที่ <สตริง, วัตถุ> แผนที่) {this.applicationMap = แผนที่; } @Override โมฆะสาธารณะ setParameters (แผนที่ <สตริง, สตริง []> แผนที่) {this.parameterMap = แผนที่; } @Override โมฆะสาธารณะ setRequest (แผนที่ <สตริงวัตถุ> แผนที่) {this.requestMap = แผนที่; } @Override โมฆะสาธารณะ setSession (แผนที่ <สตริง, วัตถุ> แผนที่) {this.sessionMap = แผนที่; -struts.xml (แสดงส่วนโหนดแพ็คเกจ)
<package name = "showValue" exted = "struts-default"> <action name = "showpage2" method = "print2"> <result name = "Success">/showpage.jsp </result> </action> </package>
showpage.jsp (เหมือนกับข้างบนมันไม่ได้เปลี่ยนแปลงเลย)
คำแนะนำการเลือก
ด้วยวิธีการสองวิธีข้างต้นในการรับทรัพยากรเว็บเราสามารถรู้ได้ว่าหากวิธีแรกมีวิธีการกระทำหลายอย่างที่ต้องใช้วัตถุโดเมนการโทรแต่ละวิธีจะต้องดำเนินการในขณะที่วิธีที่สองจะต้องดำเนินการเพียงครั้งเดียวดังนั้นในการพัฒนาจริงวิธีการที่สอดคล้องกันจะถูกเลือกให้ใช้ตามสถานการณ์
ควบคู่ไปกับ servletapi: สามารถเข้าถึง servletapis ได้มากขึ้นและสามารถเรียกใช้วิธีการดั้งเดิม
วิธีการใช้งานที่นี่คล้ายกับวิธีการใช้งานข้างต้นดังนั้นฉันจะไม่พูดถึงมัน
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com