ฉันใช้ SSH เสมอ เนื่องจาก บริษัท ต้องการใช้ SpringMVC ฉันไม่เคยสัมผัสมาก่อนดังนั้นวันนี้ฉันจะได้เรียนรู้กรอบนี้กับคุณเพื่อที่ฉันจะได้ทำงานของฉัน
ก่อนอื่นให้เข้าใจว่ารูปแบบคืออะไร รูปแบบคือวิธีการในการแก้ปัญหาบางประเภทและสรุปการแก้ไขปัญหาประเภทนี้ในระดับทฤษฎี นี่คือรูปแบบ รูปแบบเป็นแนวทางที่ช่วยให้นักพัฒนาทำงานให้เสร็จสมบูรณ์ภายใต้คำแนะนำที่ดี การทำแผนการออกแบบที่ยอดเยี่ยมสามารถบรรลุผลได้สองครั้งด้วยความพยายามครึ่งหนึ่ง และคุณจะได้รับทางออกที่ดีที่สุดสำหรับปัญหา
รูปแบบ MVC มีต้นกำเนิดมาจากภาษา Smalltalk ซึ่งเป็นตัวย่อของคอนทิกคอนติเมอร์แบบจำลอง MVC ลดการมีเพศสัมพันธ์ระหว่างอินเตอร์เฟสตรรกะทางธุรกิจและอินเทอร์เฟซข้อมูล มีประโยชน์มากมายในการใช้โหมด MVC เช่นความน่าเชื่อถือที่แข็งแกร่งการใช้ซ้ำและการปรับตัวสูงค่าใช้จ่ายวงจรชีวิตต่ำการปรับใช้อย่างรวดเร็วการบำรุงรักษาที่แข็งแกร่ง ฯลฯ ฉันจะไม่อธิบายรายละเอียดมากเกินไปที่นี่
คุณสมบัติของ SpringMVC:
1. การแบ่งบทบาทที่ชัดเจน ฤดูใบไม้ผลิให้การแบ่งที่ชัดเจนมากในรูปแบบมุมมองและคอนโทรลเลอร์ ทั้งสามด้านนี้ดำเนินการอย่างแท้จริงและแต่ละคนถือว่าความรับผิดชอบของพวกเขา
2. ฟังก์ชั่นการกำหนดค่าที่ยืดหยุ่นเนื่องจากแกนกลางของสปริงคือ IOC และในการใช้ MVC สามารถกำหนดค่าคลาสต่างๆผ่าน XML เป็นถั่วได้
3. จัดเตรียมอินเทอร์เฟซคอนโทรลเลอร์จำนวนมากและคลาสการใช้งานเพื่อให้นักพัฒนาสามารถใช้คลาสการใช้งานคอนโทรลเลอร์ที่จัดทำโดยฤดูใบไม้ผลิหรือใช้อินเทอร์เฟซคอนโทรลเลอร์ด้วยตนเอง
4. SpringMVC เป็นเลเยอร์มุมมองที่แท้จริง มันจะไม่บังคับให้นักพัฒนาใช้ JSP เราสามารถใช้เทคโนโลยีมุมมองอื่น ๆ เช่นความเร็ว XSKT ฯลฯ
5. การสนับสนุนสากล ApplicationContext ของ Spring ให้การสนับสนุนสำหรับความเป็นสากลซึ่งสามารถใช้งานได้อย่างสะดวกสบายที่นี่
6. การเขียนโปรแกรมเชิงอินเตอร์เฟส ในความเป็นจริงนี่ไม่ได้เป็นเพียงคุณสมบัติของ SpringMVC จากมุมมองของฤดูใบไม้ผลิคุณลักษณะนี้ชัดเจนมากเพราะทำให้นักพัฒนาซอฟต์แวร์ทดสอบโปรแกรมและจัดการได้ง่าย
7. สปริงจัดทำชุดกระบวนการที่สมบูรณ์สำหรับการพัฒนาเว็บแอปพลิเคชันไม่ใช่แค่ MVC ซึ่งสามารถรวมกันได้อย่างง่ายดาย ด้านล่างเป็นตัวอย่างของวิธีที่ฉันทำเอง หลังจากจบตัวอย่างนี้ฉันก็ตระหนักถึงพลังของ SpringMVC จริงๆ
มาเริ่มกำหนดค่าโครงการ SpringMVC ของเรา:
ก่อนอื่นเรากำหนดค่า web.xml ในไดเรกทอรี web-inf:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.w3.org/200 xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_2_2_2_2_2_ Dispatcherservlet ซึ่งควบคุมเส้นทางการร้องขอของทั้งหน้า-> <servlet-name> dispatcherservlet </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <! contextConfigLocation-> <param-name> contextConfigLocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </init-param> <load-on-startup> 2 </load-on-startup> <servlet-name> dispatcherservlet </servlet-name> <url-pattern>*ทำ </url-pattern> </servlet-mapping> <!-จัดการปัญหาที่อ่านไม่ออกภาษาจีนที่เกิดขึ้นเมื่อผ่านภาษาจีนจากหน้าไปยังพื้นหลัง-> <filter> <Tilter-class> org.springframework.web.filter.characterencodingFilter </filter-class> <init-Param> <param-Name> การเข้ารหัส </param-name> <param-value> UTF-8 <url-pattern>/*</url-pattern> </tilter-mapping> <welcome-file-list> <welcome-file> index.jsp </welcome-file>
หลังจากกำหนดค่าไฟล์ทุกครั้งขอแนะนำให้เริ่มเซิร์ฟเวอร์ก่อนเพื่อดูว่ามีข้อยกเว้นเกิดขึ้นมิฉะนั้นจะเป็นการยากที่จะดีบักและค้นหาข้อยกเว้นในระยะต่อมา
หลังจากกำหนดค่า web.xml แล้วเราจำเป็นต้องสร้างไฟล์ db-config.properties ในไดเรกทอรี SRC เพื่อจัดเก็บข้อมูลการกำหนดค่าแหล่งข้อมูลของเรา:
เนื้อหามีดังนี้:
db.url = jdbc: mysql: /// springmvcdb? useunicode = true & characterencoding = utf8db.username = rootdb.password = rootdb.dirverclass = com.mysql.jdbc.driver
หลังจากกำหนดค่า db-config.properties แล้วให้เริ่มกำหนดค่าไฟล์ ApplicationContext.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml XSI: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <! name = "locations"> <slist> <value> classpath: db-config.properties </value> </list> </property> </ebean> <!-รับแหล่งข้อมูล-> <bean id = "DataSource"> <property name = "DriverClassName"> <ค่า> $ {db.dirverclass <value> $ {db.url} </value> </คุณสมบัติ> <property name = "username"> <value> $ {db.username} </value> </คุณสมบัติ> <property name = "Password"> <value> $ {db.password} ที่อยู่ไฟล์และค่าคือชื่อถั่วของโปรเซสเซอร์ ที่อยู่ไฟล์โปรแกรม URL สามารถนำรูปแบบการจับคู่พา ธ มาใช้เช่น: com/mvc/t? st.jsp: จับคู่ com/mvc/test.jsp, com/mvc/tast.jsp ฯลฯ com/mvc /*.jsp: จับคู่ URL ทั้งหมดกับ Com/MVC ภายใต้ COM/MVC com/mvc /**/*.jsp: จับคู่ url ทั้งหมดกับ. JSP ต่อท้ายภายใต้เส้นทาง com/mvc หรือเส้นทางลูกหลาน cn/**/web/bla.jsp: การจับคู่คำขอสำหรับ cn/option/dog.jsp cn/ตัวเลือก/test/web/dog.jsp CN/web/dog.js user.do = UserAction </alues> </property> </ebean> <!-มุมมองคำจำกัดความถูกใช้ผ่าน InternalResourceView เพื่อระบุว่าใช้เทคโนโลยี servlet/jsp-> <bean id = "viewResolver"> <property name = "ViewClass"> ใน jsp-> <property name = "คำนำหน้า"> <value>/jsp/</value> </property> <!-คำจำกัดความของคำต่อท้ายของคำต่อท้าย-> <property name = "คำต่อท้าย"> <dange> .jsp </value> </property> </bean> คอนโทรลเลอร์-> <bean id = "useraction"> <property name = "dao"> <ref bean = "userdao"/> </คุณสมบัติ> <property name = "CommandClass"> <value> com.yjde.springmvc.userdao </value> </property>หลังจากกำหนดค่าไฟล์ ApplicationContext.xml แล้วเราเริ่มเขียนคลาส Java เฉพาะ เราต้องการคลาส DAO คลาสคอนโทรลเลอร์และ PO
เราสร้างตาราง USERMBO ใน MySQL ซึ่งมีสามฟิลด์ผู้ใช้ชื่อผู้ใช้ชื่อผู้ใช้
คลาส userdao:
แพ็คเกจ com.yjde.springmvc; นำเข้า java.sql.resultset; นำเข้า java.sql.sqlexception; นำเข้า Java.util.Collection; นำเข้า java.util.list; นำเข้า org.springframework.jdbc.core.rowmapper; นำเข้า org.springframework.jdbc.core.support.jdbcdaosupport; @suppresswarnings ("ทั้งหมด") ระดับสาธารณะ UserDao ขยาย JDBCDAOSUPPORT {Private String MSG; สตริงสาธารณะ getmsg () {return msg; } โมฆะสาธารณะ setMSG (สตริงผงชูรส) {this.msg = msg; } // วิธีการนี้แบบสอบถามฟิลด์ที่สอดคล้องกับตาราง USEMBO และนำไปไว้ใน USERPO ในลำดับการรวบรวมสาธารณะ <USERPO> DOQUERY () {String SQL = "SELECT T.USERID, T.USERNAME, T.USERAGE จาก USERMBO T"; return super.getjdbctemplate (). Query (SQL, RowMapper ใหม่ () {Maprow วัตถุสาธารณะ (ผลลัพธ์ RS, int num) พ่น SQLException {userpo user = userpo ใหม่ (); user.setUserId (rs.getInt ("userId"); user.setUserage (Rs.getInt ("userage")); -JDBCTEMPLATE เป็นคลาสหลักของแพ็คเกจหลัก มันทำให้การสร้างและการปล่อยทรัพยากรสำหรับเราทำให้การใช้ JDBC ของเราง่ายขึ้น นอกจากนี้ยังสามารถช่วยเราหลีกเลี่ยงข้อผิดพลาดทั่วไปเช่นลืมปิดการเชื่อมต่อฐานข้อมูล สำหรับรายละเอียดโปรดดู API
คลาสคอนโทรลเลอร์:
แพ็คเกจ com.yjde.springmvc; นำเข้า java.io.printwriter; นำเข้า java.util.arraylist; นำเข้า Java.util.Collection; นำเข้า java.util.hashmap; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า Javax.servlet.http.httpservletRequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า org.springframework.validation.bindexception; นำเข้า org.springframework.web.servlet.modelandview; นำเข้า org.springframework.web.servlet.mvc.simpleformcontroller; @suppresswarnings ("All") // SimpleFormController เป็นคอนโทรลเลอร์แบบฟอร์มที่จัดทำโดยฤดูใบไม้ผลิ มันตั้งค่าชื่อองค์ประกอบในแบบฟอร์มบนหน้าเป็นเช่นเดียวกับในถั่ว เมื่อผ่านเข้ามาสปริงจะคว้าค่าองค์ประกอบของค่าเดียวกับชื่อถั่วในรูปแบบโดยอัตโนมัติและแปลงเป็นถั่วเพื่อให้นักพัฒนาสามารถใช้งานได้อย่างสะดวก UserController ระดับสาธารณะขยาย SimpleFormController {มุมมองสตริงส่วนตัว; ผู้ใช้ส่วนตัว Dao; สตริงสาธารณะ getViewPage () {return viewPage; } โมฆะสาธารณะ setViewPage (String ViewPage) {this.viewPage = viewPage; } @Override Model และ View onsubmit (คำขอ httpservletRequest, การตอบสนอง httpservletResponse, คำสั่งวัตถุ, ข้อผิดพลาด bindexception) โยนข้อยกเว้น {userdao tmp = (userdao) คำสั่ง; คอลเลกชัน <UserPo> list = dao.doQuery (); รายการ <userpo> users = new ArrayList <userpo> (); ผู้ใช้ userpo; สำหรับ (userpo userpo: list) {user = new userpo (); user.setUserId (userpo.getUserId ()); user.setUserName (userpo.getUserName ()); user.setUserage (userpo.getUserage ()); users.add (ผู้ใช้); } แผนที่ mp = new hashmap (); mp.put ("รายการ", ผู้ใช้); ส่งคืน ModelandView ใหม่ (getViewPage (), MP); } โมฆะสาธารณะ setdao (userdao dao) {this.dao = dao; }} แพ็คเกจ com.yjde.springmvc; คลาสสาธารณะ userpo {ผู้ใช้จำนวนเต็มส่วนตัว; ชื่อผู้ใช้สตริงส่วนตัว; ผู้ใช้จำนวนเต็มส่วนตัว Public Integer GetUserId () {return userId; } โมฆะสาธารณะ setUserId (จำนวนเต็ม USERID) {this.UserId = userId; } สตริงสาธารณะ getUserName () {ส่งคืนชื่อผู้ใช้; } โมฆะสาธารณะ setUserName (ชื่อผู้ใช้สตริง) {this.userName = ชื่อผู้ใช้; } Public Integer GetUserage () {return userage; } โมฆะสาธารณะ setUserage (ผู้ใช้จำนวนเต็ม) {this.useRage = userage; }} </pre> <br> <p align = "ซ้าย"> <span style = "สี: teal"> หลังจากการสร้างคลาสเสร็จสิ้นเราจะเขียนสอง </span> <span style = "color: teal"> jsp </span> <span style = "color: teal"> </pan> </p> <p allign = "ซ้าย"> <span style = "สี:#bf5f3f"> </span> </p> <name pre = "code"> <%@ page language = "java" import = "java.util.*" pageEncoding = "utf-8"%> String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> jsp 'index.jsp' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "คำหลัก" content = "keyword1, คำหลัก 2, คำหลัก type = "text/css" href = "styles.css"> -> </head> <body> <form action = "user.do" method = "post"> โปรดป้อน <name = "msg" type = "text"/> <อินพุตประเภท = "ส่ง" value = "ส่ง"> </form> </span> </p> <p allign = "left"> <span style = "color: teal"> ผลการดำเนินการสุดท้าย: </span> </p> <p allign = "left"> <span style = "color: teal"> <img src = "http://my.csdn.net/uploads/201204/24/1335237733_4732.png"> </span> </p> <p allign = "left"> <span style = "สี style = "color:#008080"> </span> </p> <name pre = "code">/* navicat mysql การถ่ายโอนข้อมูลเซิร์ฟเวอร์แหล่งข้อมูล: MySQL Source Server เวอร์ชัน: 50145 แหล่งที่มา: LocalHost: 3306 แหล่งข้อมูล Source: 653 */ ตั้งค่าต่างประเทศ _key_checks = 0; --------------------------โครงสร้างตารางสำหรับ `usermbo`------------------------- โต๊ะวางถ้ามีอยู่` usermbo`; สร้างตาราง `usermbo` (` userid` int (11) ไม่ใช่ค่าเริ่มต้น null '0', `username` varchar (50) ค่าเริ่มต้น null,` userage` int (11) ค่าเริ่มต้น, คีย์หลัก (`userid`)) เครื่องยนต์ = InnoDB defaultCharSet = UTF8; --------------------------บันทึกของ USERMBO------------------------- ใส่เข้าไปในค่า `USERMBO` ('1', '李晓红', '25'); แทรกลงในค่า `usermbo` ('2', '柳梦璃', '27'); แทรกลงในค่า `usermbo` ('3', '韩菱纱', '26'); </pre> ดาวน์โหลดตัวอย่าง: ตัวอย่าง
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น