CRUD เป็นตัวย่อของการสร้างอ่านอัปเดตและลบและเป็นพิภพเล็ก ๆ ของแอปพลิเคชันทั่วไป หากคุณเชี่ยวชาญการเขียนกรอบของกรอบการทำงานหมายความว่าคุณสามารถใช้เฟรมเวิร์กเพื่อสร้างแอปพลิเคชันทั่วไป ดังนั้นเมื่อคุณใช้เฟรมเวิร์กใหม่เพื่อพัฒนาแอปพลิเคชัน OLTP (การประมวลผลธุรกรรมออนไลน์) คุณจะศึกษาวิธีการเขียน CRUD ก่อน สิ่งนี้คล้ายกับวิธีที่ผู้คนชอบเขียน "Hello World" เมื่อเรียนรู้ภาษาการเขียนโปรแกรมใหม่
บทความนี้มีวัตถุประสงค์เพื่ออธิบายการพัฒนาของ CRUD บน Struts 2 ดังนั้นเพื่อความเรียบง่ายและความเข้าใจที่ง่ายฉันจะไม่ใช้เวลาในการดำเนินการฐานข้อมูล แทนตารางแฮช (แผนที่แฮช) ที่จำลองฐานข้อมูล
การใช้งานเฉพาะ
ก่อนอื่นลองดูที่ "ปลอม" (วัตถุการเข้าถึงข้อมูลวัตถุการเข้าถึงข้อมูล) รหัสมีดังนี้:
Package Tutorial.dao; นำเข้า java.util.Collection; นำเข้า Java.util.concurrent.concurrenthashmap; นำเข้า java.util.concurrent.concurrentmap; นำเข้า tutorial.model.book; bookdao (); data = ใหม่พร้อมกันพร้อมกัน <string, book> (); data.put ("978-0735619678", หนังสือเล่มใหม่ ("978-0735619678", "รหัสสมบูรณ์, รุ่นที่สอง", 32.99); หนังสือ ("978-0596007867", "ศิลปะการจัดการโครงการ", 35.96)); data.put ("978-0201633610", หนังสือเล่มใหม่ ("978-0201633610", รูปแบบการออกแบบ: องค์ประกอบของซอฟต์แวร์ หนังสือ ("978-0596527341", "สถาปัตยกรรมข้อมูลสำหรับเวิลด์ไวด์เว็บ: การออกแบบเว็บไซต์ขนาดใหญ่", 25.19)); data.put ("978-0735605350" หนังสือเล่มใหม่ ("978-0735605350" {} public bookdao getInstance () {return instance;} collection สาธารณะ <book> getBooks () {return data.values ();} หนังสือสาธารณะ getbook (สตริง isbn) {return data.get (isbn);} public void storeBook (หนังสือหนังสือ) {data.remove (isbn);} โมฆะสาธารณะ removebooks (string [] isbn) {สำหรับ (สตริง isbn: isbn) {data.remove (isbn);}}}}รายชื่อ 1 src/tutorial/dao/bookdao.java
ฉันเชื่อว่าไม่จำเป็นต้องมีคำอธิบายสำหรับรหัสข้างต้น ฉันใช้โครงสร้างข้อมูลที่เกิดขึ้นพร้อมกันเพื่อจัดเก็บวัตถุหนังสือซึ่งส่วนใหญ่เป็นเพื่ออำนวยความสะดวกในการดึงและการจัดเก็บวัตถุหนังสือ; นอกจากนี้ฉันยังตั้งค่าตัวแปรข้อมูลให้เป็นแบบคงที่แบบคงที่เพื่อจำลองฐานข้อมูลของแอปพลิเคชัน
ถัดไปคือคลาสหนังสือรุ่นข้อมูลรหัสมีดังนี้:
Package Tutorial.model; หนังสือเรียนสาธารณะ {สตริงส่วนตัว isbn; ชื่อสตริงส่วนตัว; ราคาคู่ส่วนตัว; หนังสือสาธารณะ () {} หนังสือสาธารณะ (สตริง isbn, สตริงชื่อ, ราคาสองเท่า) {this.isbn = isbn; this.title = title; isbn;} public double getPrice () {ราคาคืน;} โมฆะสาธารณะ setPrice (ราคาสองเท่า) {this.price = ราคา;} สตริงสาธารณะ getTitle () {ชื่อกลับ;รายการ 2 src/tutorial/model/book.java
ชั้นเรียนหนังสือมีสามแอตทริบิวต์: ISBN, ชื่อเรื่องและราคาแสดงถึงจำนวนชื่อและราคาของหนังสือตามลำดับ จำนวนใช้เพื่อระบุหนังสือโดยไม่ซ้ำกัน (เทียบเท่ากับคีย์หลักในฐานข้อมูล)
จากนั้นมาดูรหัสของคลาสแอ็คชั่น:
Package Tutorial.action; นำเข้า Java.util.Collection; Import Tutorial.dao.bookdao; การนำเข้าบทช่วยสอน. model.book; นำเข้า com.opensymphony.xwork2.ActionSupport; Bookaction สาธารณะขยายการกระทำ หนังสือหนังสือ; คอลเลกชันส่วนตัว <Book> หนังสือ; Bookdao Dao = Bookdao.getInstance (); หนังสือสาธารณะ getBook () {return book;} void setbook สาธารณะ (หนังสือเล่ม) {this.book = book;} public String getisbn () {return isbn;} public void setisbn {return isbn;} โมฆะสาธารณะ setisbnns (string [] isbnns) {this.isbns = isbnns;} คอลเลกชันสาธารณะ <book> getbooks () {หนังสือกลับ;} void setbooks สาธารณะ {books = dao.getbooks (); return success;} public String store () {dao.storebook (หนังสือ); return success;} Public String ลบ () {ถ้า (null! = isbn) {dao.removebook (isbn);รายชื่อ 3 src/การสอน/action/bookaction.java
ในคลาส Bookaction แอตทริบิวต์ ISBN ใช้เพื่อแสดงจำนวนหนังสือที่จะแก้ไขหรือลบแอตทริบิวต์ ISBNS ใช้เพื่อแสดงจำนวนอาร์เรย์ของหนังสือที่จะลบหนังสือแอตทริบิวต์แสดงถึงหนังสือปัจจุบันและหนังสือแอตทริบิวต์แสดงรายการหนังสือปัจจุบัน BookAction มีวิธีการกระทำสี่วิธีโหลดรายการจัดเก็บและลบนั่นคือ CRUD ถูกนำไปใช้ใน BookAction ทั้งหมด
ถัดไปคือรหัสการกำหนดค่าการกระทำ:
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! Doctype struts สาธารณะ "-// Apache Software Foundation // dtd struts การกำหนดค่า 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd" Extends = "struts-default" namespace = "/book"> <action name = "list" method = "list"> <result> list.jsp </result> </action> <action name = "แก้ไข" method = "load"> <result> edit.jsp </result> </action> <action name = "store" type = "redirect"> list.action </result> </action> </action> <action name = "remove" method = "remove"> <result type = "redirect"> list.action </result> </action>
รายการ 4 src/struts.xml
ในการกำหนดค่าข้างต้นฉันใช้คำจำกัดความการกระทำสี่ประการ พวกเขาทั้งหมดอยู่ในเนมสเปซ "/book" ด้วยวิธีนี้ฉันสามารถเรียกวิธีการดำเนินการสี่วิธีของ bookaction สำหรับการดำเนินการ crud โดย "http: // localhost: 8080/struts2_crud/book/list.action", "http: // localhost: 8080/struts2_crud/book/edit.action" "http: // localhost: 8080/struts2_crud/book/remove.action" แน่นอนว่านี่เป็นเพียงความชอบส่วนตัว คุณสามารถกำหนดการกระทำ (สมมติว่าชื่อของมันคือ "หนังสือ") จากนั้นเข้าถึงผ่าน "http: // localhost: 8080/struts2_crud/book! list.action" สำหรับรายละเอียดโปรดดูที่ "คำอธิบายการกระทำของ Struts 2.0" นอกจากนี้ฉันใช้ผลลัพธ์ของการเปลี่ยนเส้นทางประเภท (เปลี่ยนเส้นทาง) เนื่องจากฉันต้องการกลับไปที่หน้ารายการหลังจากเสร็จสิ้นการแก้ไขหรือลบ
นี่คือรหัสสำหรับหน้ารายการ:
< %@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8" %> < %@ taglib คำนำหน้า = "s" uri = "/struts-tags" %> <! "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns =" http://www.w3.org/1999/xhtml " 1px Solid Black; Border-collapse: การล่มสลาย;} ตารางที่ tr th {border: 1px สีดำทึบ; การเติม: 3px; พื้นหลังสี: #cccccc;} ตาราง tbody td {เส้นขอบ: 1px สีดำของแข็ง; padding: 3px;} </สไตล์> cellpacing = "0"> <thead> <tr> <th> เลือก </th> <th> isbn </th> <th> title </th> <th> ราคา </th> <th> การดำเนินการ </th> </tr> </thead> <tbody> /> ' /> </td> <td> <s: ค่าคุณสมบัติ = "isbn" /> /> < /td> <td> $ <s: ค่าคุณสมบัติ = "ราคา" /> < /td> <td> <a href =' <s: url action = "แก้ไข"> <s: param = "isbn" isbn href = '<s: url action = "ลบ"> <s: param name = "isbn" value = "isbn"/> </s: url>'> ลบ </a> </td> </tr> </s: iterator> </tbody> </body> </html>รายการ 5 webcontent/book/list.jsp
ในรหัสข้างต้นเป็นที่น่าสังเกตว่าในแท็ก <s: form> ฉันตั้งค่าคุณสมบัติธีมเป็น "ง่าย" เพื่อให้สามารถยกเลิกเค้าโครงตารางเริ่มต้นได้ ก่อนหน้านี้เพื่อนบางคนถามฉันว่า "ฉันควรทำอย่างไรถ้าฉันไม่ต้องการให้ปุ่มส่งถูกวางไว้ที่ถูกต้อง?" เหงื่อออกข้างต้นเป็นหนึ่งในคำตอบ แน่นอนว่าเป็นการดีกว่าที่จะปรับแต่งธีมและนำไปใช้กับไซต์ทั้งหมดตามค่าเริ่มต้นเพื่อให้คุณสามารถรับสไตล์ไซต์แบบครบวงจรได้ ฉันจะอธิบายรายละเอียดนี้ในบทความในอนาคต
รหัสหน้าสำหรับการแก้ไขหรือเพิ่มหนังสือมีดังนี้:
< %@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8" %> < %@ taglib คำนำหน้า = "s" uri = "/struts-tags" %> <! "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns =" http://ww.w3.org/1999/xhtml " == หนังสือ "> เพิ่มหนังสือ < /s: ถ้า> <s: อื่น> แก้ไขหนังสือ < /s: อื่น> < /h2> <s: form action =" store "> <s: textfield name =" book.isbn "label =" isbn " /> <s: textfield name =" book.title "label =" /> </s: Form> </body> </html>
รายชื่อ 6 webcontent/book/edit.jsp
หากหนังสือเป็นโมฆะหมายความว่าหน้านี้ใช้เพื่อเพิ่มหนังสือและในทางกลับกันคือหน้าแก้ไข
เพื่ออำนวยความสะดวกให้ทุกคนเรียกใช้ตัวอย่างฉันยังโพสต์รหัส web.xml ดังต่อไปนี้:
<? xml version = "1.0" encoding = "utf-8"?> <web-app id = "webapp_9" เวอร์ชัน = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name> struts 2 fileupload </display-name> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.filterdispatcher </tilter-class> </filter> <Tilter-Name> struts2 </tilter-name> <url-pattern>/*</url-pattern> </silter-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file>
รายการ 7 webcontent/web-inf/web.xml
งานเสร็จแล้วต่อไปนี้ได้รับการเผยแพร่เพื่อเรียกใช้แอปพลิเคชันประเภท: http: // localhost: 8080/struts2_crud/book/list.action ในเบราว์เซอร์และหน้าแสดงในรูปด้านล่าง:
รายชื่อ 8 หน้ารายชื่อ
คลิก "เพิ่มหนังสือ" และหน้าแสดงในรูปด้านล่างจะปรากฏขึ้น:
รายการ 9 เพิ่มหน้าหนังสือ
กลับไปที่หน้ารายการและคลิก "แก้ไข" และหน้าที่แสดงในรูปด้านล่างจะปรากฏขึ้น:
รายชื่อ 10 หน้าหนังสือแก้ไข
สรุป
บทความนี้แนะนำวิธีการใช้งาน CRUD ของ Struts 2 โดยย่อเพียงฟังก์ชั่นจำนวนมากจึงไม่ได้ใช้งานเช่นการตรวจสอบความเป็นสากลและการตรวจสอบข้อมูล คุณสามารถปรับปรุงได้ตามตัวอย่างข้างต้นและเป็นการดีที่จะฝึกฝน หากคุณไม่เข้าใจโปรดฝากข้อความถึงฉัน บรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin Network!