DWR เป็นเฟรมเวิร์กซึ่งสามารถเรียกใช้วิธี Java ได้โดยตรงใน JavaScript โดยไม่ต้องเขียนโค้ด JavaScript จำนวนมาก การใช้งานจะขึ้นอยู่กับ AJAX และสามารถบรรลุเอฟเฟกต์ที่ปราศจากการรีเฟรช
มีตัวอย่างมากมายของ DWR บนอินเทอร์เน็ต แต่ส่วนใหญ่เป็นเพียงการเรียกใช้วิธีการบางอย่าง บทความนี้แนะนำ DWR ในระดับการใช้งานเท่านั้นและไม่เกี่ยวข้องกับเทคโนโลยีและการออกแบบมากขึ้น วัตถุประสงค์คือเพื่อให้ผู้เริ่มต้นเรียนรู้อย่างรวดเร็วว่าวิธีการ Java ต่าง ๆ ถูกเรียกใน JavaScript อย่างไร
1. บทความการกำหนดค่า DWR web.xml
1. การจับคู่ขั้นต่ำ
<servlet> <servlet-name> dwr-invoker </servlet-name> <servlet-lass> uk.ltd.getahead.dwr.dwrservlet </servlet-lass> </servlet> <servlet-mapping>
2. เมื่อเราต้องการดูหน้าทดสอบ (ใช้โหมดดีบั๊ก/ทดสอบ) ที่สร้างขึ้นโดย DWR โดยอัตโนมัติเราสามารถเพิ่มลงในการกำหนดค่า Servlet
<int-Param> <param-Name> debug </param-name> <param-value> true </param-value> </itrient-Param>
พารามิเตอร์นี้ DWR เป็นเท็จโดยค่าเริ่มต้น หากคุณเลือกจริงเราสามารถเห็นคลาส DWR แต่ละชั้นที่คุณปรับใช้ผ่าน http: // localhost: พอร์ต/แอพ/dwr และคุณสามารถทดสอบได้ว่าแต่ละวิธีของรหัส Java จะทำงานตามปกติหรือไม่ ด้วยเหตุผลด้านความปลอดภัยคุณต้องตั้งค่าพารามิเตอร์นี้เป็นเท็จในสภาพแวดล้อมที่เป็นทางการ
3. การกำหนดค่าไฟล์ dwr.xml หลายไฟล์
อาจมีหลายสถานการณ์เราจะแสดงรายการพวกเขาทีละคน หนึ่ง servlet, ไฟล์กำหนดค่า DWR.XML หลายไฟล์; Servlets หลายตัวแต่ละ servlet สอดคล้องกับไฟล์การกำหนดค่า DWR.XML หนึ่งไฟล์ขึ้นไป
3.1. หนึ่ง servlet ไฟล์การกำหนดค่า DWR.XML หลายไฟล์
<servlet> <servlet-name> dwr-invoker </servlet-name> <servlet-class> uk.ltd.getahead.dwr.dwrservlet </servlet-class> <init-Param> <param-name> config-1 </param-name> <param-name> config-2 </param-name> <param-value> web-inf/dwr2.xml </param-value> </init-param> <init-param> <param-name> config-2 </param-name> <param-value> web-inf/dwr2.xml
ในการกำหนดค่านี้ค่าของ param-name จะต้องเริ่มต้นด้วยการกำหนดค่า param-name สามารถมี> = 0. หากไม่มีการชื่อ param-name, web-inf/dwr.xml จะถูกอ่าน หากมีมากกว่า zero param-names ไฟล์ web-inf/dwr.xml จะไม่ถูกอ่าน
3.2. Servlets หลายตัวแต่ละ servlet สอดคล้องกับ dwr.xml หนึ่งตัวหรือมากกว่า
<servlet> <servlet-name> dwr-invoker </servlet-name> <servlet-lass> uk.ltd.getahead.dwr.dwrservlet </servlet-lass> </servlet> <servlet> <param-name> config-admin </param-name> <param-value> web-inf/dwr1.xml </param-value> </init-param> <init-Param> <param-Name> Debug </param-name> </init-param> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> dwr-invoker </servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <servlet-mapping> <url-pattern>/dwr1/*</url-pattern> </servlet-mapping>
ในกรณีนี้เราสามารถควบคุมการอนุญาตตามความปลอดภัยของ J2EE และเพิ่มบทบาทที่แตกต่างกันสำหรับ URL ที่แตกต่างกัน
2. การใช้งาน DWR
1. การเรียกวิธี Java โดยไม่มีค่าส่งคืนและพารามิเตอร์
1.1. การกำหนดค่า dwr.xml
<dwr> <อนุญาต> <สร้าง creator = "ใหม่" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <รวม method = "testMethod1"/> </create> </อนุญาต> </dwr>
แท็กรวมถึงสิ่งที่สามารถสัมผัสกับการเข้าถึง JavaScript
แท็กระบุคลาส Java ที่สามารถเข้าถึงได้ใน JavaScript และกำหนดวิธีที่ DWR ควรได้รับอินสแตนซ์ของคลาสที่จะเป็นระยะไกล แอตทริบิวต์ creator = "ใหม่" ระบุวิธีการสร้างของอินสแตนซ์คลาส Java ใหม่หมายความว่า DWR ควรเรียกตัวสร้างเริ่มต้นของคลาสเพื่อรับอินสแตนซ์ อื่น ๆ รวมถึงวิธีการสปริงซึ่งสามารถรวมเข้ากับ IOC Container Spring เพื่อรับอินสแตนซ์ ฯลฯ แอตทริบิวต์ JavaScript = "TestClass" ระบุชื่อที่ใช้โดยรหัส JavaScript เพื่อเข้าถึงวัตถุ
แท็กระบุชื่อคลาส Java ที่จะสัมผัสกับ JavaScript
แท็กระบุวิธีการที่จะสัมผัสกับ JavaScript หากไม่ได้ระบุวิธีทั้งหมดจะถูกเปิดเผย
แท็กระบุวิธีการเพื่อป้องกันการเข้าถึง
1.2. เรียกในจาวาสคริปต์
ก่อนอื่นแนะนำสคริปต์ JavaScript
<script src = 'dwr/interface/testclass.js'> </script> <script src = 'dwr/engine.js'> </script> <script src = 'dwr/util.js'> </script>
ในหมู่พวกเขา testclass.js ถูกสร้างขึ้นโดยอัตโนมัติโดย DWR ตามไฟล์การกำหนดค่าและ engine.js และ util.js เป็นไฟล์สคริปต์ที่มาพร้อมกับ DWR
ประการที่สองเขียนฟังก์ชั่น JavaScript ที่เรียกวิธี Java
ฟังก์ชั่น calltestmethod1 () {testclass.testmethod1 ();}2. วิธีการโทรหา Java ด้วยค่าส่งคืนอย่างง่าย
2.1. การกำหนดค่า dwr.xml
การกำหนดค่าเดียวกันกับ 1.1
<dwr> <lowl> <สร้าง creator = "ใหม่" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <include method = "testmethod2"/> </create> </อนุญาต> </dwr>
2.2. เรียกในจาวาสคริปต์
ก่อนอื่นแนะนำสคริปต์ JavaScript
ประการที่สองเขียนฟังก์ชั่น JavaScript ที่เรียกวิธี Java และฟังก์ชันการโทรกลับที่ได้รับค่าส่งคืน
ฟังก์ชั่น calltestmethod2 () {testclass.testmethod2 (callbackfortestmethod2);} ฟังก์ชั่น callbackfortestmethod2 (data) {// ที่ค่าคืนของวันที่ได้รับ // ค่าส่งคืนสามารถประมวลผลและแสดงที่นี่ ฯลฯโดยที่ callbackfortestmethod2 เป็นฟังก์ชันการโทรกลับที่ได้รับค่าส่งคืน
3. วิธีการโทรหา Java ด้วยพารามิเตอร์ง่ายๆ
3.1. การกำหนดค่า dwr.xml
การกำหนดค่าเดียวกันกับ 1.1
<dwr> <อนุญาต> <สร้าง creator = "new" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <รวม method = "testMethod3"/> </create> </อนุญาต> </dwr>
3.2. เรียกในจาวาสคริปต์
ก่อนอื่นแนะนำสคริปต์ JavaScript
ประการที่สองเขียนฟังก์ชั่น JavaScript ที่เรียกวิธี Java
ฟังก์ชั่น calltestmethod3 () {// กำหนดข้อมูลพารามิเตอร์ var ที่จะส่งผ่านไปยังเมธอด java; // สร้างพารามิเตอร์ข้อมูล = "สตริงทดสอบ"; testclass.testmethod3 (ข้อมูล);}4. โทรหาวิธี Java ที่ส่งคืน Javabean
4.1. การกำหนดค่า dwr.xml
<dwr> <อนุญาต> <สร้าง creator = "ใหม่" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <รวม method = "testmethod4"/> </create> <convert c match = "com.dwr.testbean"
แท็กมีหน้าที่รับผิดชอบในการเปิดเผยคลาสและวิธีการที่ใช้สำหรับเว็บรีโมทในขณะที่แท็กรับผิดชอบพารามิเตอร์และประเภทการส่งคืนของวิธีการเหล่านี้ ฟังก์ชั่นขององค์ประกอบการแปลงคือการบอก DWR วิธีการแปลงชนิดข้อมูลระหว่างการแสดงวัตถุ Java ฝั่งเซิร์ฟเวอร์และ JavaScript แบบอนุกรม DWR จะปรับประเภทข้อมูลง่าย ๆ ระหว่างการแสดง Java และ JavaScript โดยอัตโนมัติ ประเภทเหล่านี้รวมถึงประเภทดั้งเดิมของ Java และการเป็นตัวแทนชั้นเรียนที่เกี่ยวข้องกับประเภทของพวกเขารวมถึงสตริงวันที่อาร์เรย์และประเภทการรวบรวม DWR ยังสามารถแปลง Javabeans เป็นตัวแทน JavaScript ได้ แต่ด้วยเหตุผลด้านความปลอดภัยนั้นต้องใช้การกำหนดค่าที่ชัดเจนและแท็กทำหน้าที่นี้ แอตทริบิวต์ C ระบุวิธีการแปลงเพื่อใช้ข้อกำหนดการตั้งชื่อ Javabean, การจับคู่ = "" com.dwr.testbean "แอตทริบิวต์ระบุชื่อของ Javabean ที่จะแปลงและแท็กระบุแอตทริบิวต์ Javabean ที่จะแปลง
4.2. เรียกในจาวาสคริปต์
ก่อนอื่นแนะนำสคริปต์ JavaScript
ประการที่สองเขียนฟังก์ชั่น JavaScript ที่เรียกวิธี Java และฟังก์ชันการโทรกลับที่ได้รับค่าส่งคืน
โดยที่ callbackfortestmethod4 เป็นฟังก์ชั่นการโทรกลับที่ได้รับค่าส่งคืน
5. โทรหาวิธี Java ด้วยพารามิเตอร์ Javabean
5.1. การกำหนดค่า dwr.xml
<dwr> <อนุญาต> <สร้าง creator = "ใหม่" javascript = "testclass"> <param name = "class" value = "com.dwr.testclass"/> <รวม method = "testmethod5"/> </create> <convert catch = "com.dwr.testbean"
5.2. เรียกในจาวาสคริปต์
ก่อนอื่นแนะนำสคริปต์ JavaScript
ประการที่สองเขียนฟังก์ชั่น JavaScript ที่เรียกวิธี Java
ฟังก์ชั่น calltestmethod5 () {// กำหนดข้อมูลพารามิเตอร์ var ที่จะส่งผ่านไปยังวิธี Java; // สร้างพารามิเตอร์วันที่จริง ๆ แล้วเป็นข้อมูลวัตถุ = {ชื่อผู้ใช้: "ผู้ใช้", รหัสผ่าน: "รหัสผ่าน"} testclass.testmethod5 (ข้อมูล);}และเพิ่มเซ็กเมนต์การกำหนดค่าต่อไปนี้เป็น dwr.xml
<Signatures> <! [cdata [นำเข้า java.util.list; นำเข้า com.dwr.testclass; นำเข้า com.dwr.testbean; testclass.testmethod7 (แผนที่ <สตริง, testbean>);]> </signatures>
3. จากด้านบนเราสามารถค้นหาได้ว่าสำหรับกรณีที่ค่าส่งคืนของวิธี Java คือรายการ (SET), DWR แปลงเป็นอาร์เรย์วัตถุและส่ง JavaScript; สำหรับกรณีที่ค่าส่งคืนของวิธี Java คือ MAP DWR จะแปลงเป็นวัตถุโดยที่แอตทริบิวต์วัตถุเป็นค่าคีย์ของแผนที่ดั้งเดิมและค่าแอตทริบิวต์เป็นค่าที่สอดคล้องกันของแผนที่ดั้งเดิม
4. หากพารามิเตอร์ของวิธี Java เป็นรายการ (SET) และ MAP JavaScript ควรสร้างข้อมูล JavaScript ที่สอดคล้องกันเพื่อส่งผ่านไปยัง Java ตามสามประเภท