บทความนี้แนะนำวิธีการของ Maven ในการสร้างแบ็กเอนด์ Java ครั้งแรก มันถูกแบ่งปันกับคุณ รายละเอียดมีดังนี้:
1. ความรู้กลับ
ฉันได้อธิบายรายละเอียดในฉบับล่าสุดเกี่ยวกับวิธีการใช้ Maven เพื่อสร้างโครงการแรกของคุณ ลิงค์ก่อนหน้าคือ; วันนี้ฉันจะใช้เฟรมเวิร์ก SpringMVC และ MyBatis เพื่อสร้างแบ็กเอนด์ Java ของคุณเอง
2. การเตรียมการที่จำเป็น
①intellij Idea, Maven Environment ถูกสร้างขึ้นอย่างดี
②familiarกับ MyBatis, SpringMVC และเฟรมเวิร์กอื่น ๆ
③การสร้างฐานข้อมูล MySQL
3. เค้าโครงสถาปัตยกรรมโดยรวม
4. ขั้นตอนเฉพาะ
①กำหนดค่าแพ็คเกจ JAR ที่จะใช้ใน pom.xml
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <!-ได้รับอนุญาตให้เข้าร่วม Apache Software Foundation (ASF) ภายใต้ข้อตกลงใบอนุญาตผู้มีส่วนร่วมอย่างน้อยหนึ่งรายการ ดูไฟล์ประกาศที่แจกจ่ายให้กับงานนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเป็นเจ้าของลิขสิทธิ์ ใบอนุญาต ASF ไฟล์นี้ให้คุณภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ยกเว้นตามใบอนุญาต คุณอาจได้รับสำเนาใบอนุญาตที่ http://www.apache.org/licenses/license-2.0 เว้นแต่ว่ากฎหมายที่บังคับใช้หรือตกลงที่จะเป็นลายลักษณ์อักษรซอฟต์แวร์ที่แจกจ่ายภายใต้ใบอนุญาตจะถูกแจกจ่ายบน "ตามที่เป็น" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ดูใบอนุญาตสำหรับภาษาเฉพาะที่ได้รับอนุญาตและข้อ จำกัด ภายใต้ใบอนุญาต-> <!-$ id: pom.xml 642118 2008-03-28 08: 04: 16z Reinhard $-> <Project xmlns = "http://maven.apache.org/pom/4.0.0.0.0.0.0 xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.apache <SoderVersion> 4.0.0 </StorVersion> <packaging> สงคราม </packaging> <name> yakei </name> <roupId> com.yakei </groupid> <ratifactid> yakei </artifactid> <SloupID> Junit </GroupID> <TartIfactId> Junit </artifactId> <sersion> 4.11 </เวอร์ชัน> <pope> ทดสอบ </cope> </predency> <!-การพึ่งพาโครงการที่สมบูรณ์-> <!-1 บันทึกการบันทึก Java รวมถึง: SLF4J, log4j, logback, การบันทึกสามัญ SLF4J: การใช้งานบันทึกข้อมูลจำเพาะ/อินเตอร์เฟส: log4j, logback, การใช้งานทั่วไปการใช้งานทั่วไป: SLF4J+logback-> <pendency> <ratrid> org.slf4j </groupid> </permentency> <predency> <roupId> ch.qos.logback </groupId> <ratifactId> logback-core </artifactid> <sersion> 1.1.1 </เวอร์ชัน> </derness> <!-ใช้อินเทอร์เฟซ SLF4J และรวม-> <Sersion> 1.1.1 </เวอร์ชัน> </การพึ่งพา> <!-1 การพึ่งพาฐานข้อมูลที่เกี่ยวข้องกับฐานข้อมูล-> <predency> <sdeperency> <roupId> MySQL </groupId> <ArtIfactId> MySQL-connector-Java </artifactId> <Sersion> 5.1.36 </Sope> <Pope> RunTime </Scope> <Sersion> 0.9.1.1 </Sent> </การพึ่งพา> <!-2.DAO FRAMEWORK: MYBATIS การพึ่งพา-> <การพึ่งพา> <RoupID> org.mybatis </groupId> <RoupID> org.mybatis </groupId> <ratifactid> mybatis-spring </artifactid> <version> 1.2.3 </เวอร์ชัน> </การพึ่งพา> <!-3. การพึ่งพาเว็บที่เกี่ยวข้องกับเว็บ <Ependency> <sderctId> JSTL </groupId> <ratifactId> jstl </artifactId> <cersion> 1.2 </เวอร์ชัน> </การพึ่งพา> <predency> <sderncy> <roupId> com.fasterxml.jackson.core </groupid> <RoupID> javax.servlet </groupId> <ratifactId> javax.servlet-api </artifactid> <sersion> 3.1.0 </version> </การพึ่งพาอาศัย> <!-4: การพึ่งพาสปริง-> <!-1) <Sersion> 4.1.7.Release </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupId> org.springframework </groupId> <ratifactid> Spring-beans </artifactid> <version> 4.1.7.release </เวอร์ชัน> <ArtIfactId> Spring-Context </artifactId> <persion> 4.1.7.release </เวอร์ชัน> </การพึ่งพา> <!-2) การพึ่งพาเลเยอร์ DAO ในฤดูใบไม้ผลิ-> <การพึ่งพา> <GroupId> org.springframework </groupid> <RoupID> org.springframework </groupId> <ratifactid> Spring-tx </artifactid> <sersion> 4.1.7.Release </เวอร์ชัน> </การพึ่งพา> <!-3) การพึ่งพาที่เกี่ยวข้องกับสปริง <Sersion> 4.1.7.RELEASE </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupId> org.springframework </groupId> <ratifactid> Spring-Webmvc </artifactid> <RoupID> org.springframework </groupId> <ratifactId> การทดสอบฤดูใบไม้ผลิ </artifactId> <version> 4.1.7.Release </เวอร์ชัน> </การพึ่งพา> </derencies>มันครอบคลุมชุดของแพ็คเกจขวดเช่นฤดูใบไม้ผลิ, mybatis ฯลฯ กระบวนการนี้คล้ายกับ Android ที่เพิ่มการพึ่งพาของบุคคลที่สามเพื่อสร้าง Gradle และหลักการมีความสอดคล้องกัน
2. สร้างไดเรกทอรีสองไดเรกทอรีในไดเรกทอรีทรัพยากร: Mapper, Spring
MAPPER: MAPPER เป็นการแมปของเฟรมเวิร์ก MyBatis และฟังก์ชั่นของมันคือการใช้ไฟล์การแมปในชั้น DAO; ที่นี่ฉันสร้างแผนที่ user.xml:
ส่วนสีแดงควรได้รับความสนใจ ด้านบนคือเส้นทางที่จะแมปเลเยอร์ DAO และอันที่สองคือประเภทของวัตถุส่งคืน ฉันจะโพสต์รหัสที่นี่:
<! doctype mapper สาธารณะ "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> ที่เขียนนั่นคือเขียนคำสั่ง SQL ของเราสำหรับวิธีการในอินเตอร์เฟส dao-> <select id = "getall" resultType = "com.dajiu.bean.user"> เลือก * จากผู้ใช้ </select> <select id = "getLogin" resultType = "com.dajiu.bean.user #{รหัสผ่าน} </select> </mapper>สปริง: ส่วนใหญ่โหลดไฟล์การกำหนดค่าของสปริง
1.Spring-dao.xml
รหัสโพสต์:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <! location = "classpath: jdbc.properties"/> <!-2 พูลการเชื่อมต่อฐานข้อมูล-> <bean id = "dataSource"> <!-กำหนดค่าคุณสมบัติพูลการเชื่อมต่อ-> <ชื่อคุณสมบัติ = "driverclass" value = "$ {driver}" /> <! name = "รหัสผ่าน" value = "$ {รหัสผ่าน}"/> <!-คุณสมบัติส่วนตัว c3p0-> <property name = "maxPoolSize" value = "30"/> <property name = "minPoolSize" value = "10"/> <! name = "checkouttimeout" value = "10,000"/> <!-จำนวนของการลองใหม่เมื่อการเชื่อมต่อล้มเหลว-> <property name = "acquireerettempts" value = "2"/> </ebean> <!-การประชุมมากกว่าการกำหนดค่า-> <! -> <!-พูลการเชื่อมต่อฐานข้อมูลฉีด-> <property name = "DataSource" ref = "DataSource"/> <!-การกำหนดค่าของไฟล์การกำหนดค่าส่วนกลาง mybatis: mybatis-config.xml-> <property name = "configlocation" configlocation " แยก-> <property name = "typealiasespackage" value = "com.dajiu.bean"/> <!-สแกนไฟล์การกำหนดค่า SQL: ไฟล์ XML ที่ต้องการโดย MAPPER-> <property name = "mapperlocations" value = "MAPPER/. XML"/> สปริงคอนเทนเนอร์-> <bean> <!-ฉีด sqlsessionfactory-> <ชื่อคุณสมบัติ = "sqlsessionfactorybeanname" value = "sqlsessionfactory"/> <!สถานที่ให้ความสนใจ:
เชื่อมต่อกับฐานข้อมูล:
กำหนดค่าระดับโลก mybatis-config และ bean ไฟล์ทั้งหมดภายใต้ Mapper
กำหนดค่า dao
2.Spring-service.xml
รหัสโพสต์:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <! Transaction Manager-> <bean id = "transactionManager"> <!-พูลการเชื่อมต่อฐานข้อมูลฉีด-> <property name = "dataSource" ref = "dataSource"/> </epean> <bean id = "วันที่"> </epean> <! Transaction-Manager = "TransactionManager"/> </epeans>
ให้ความสนใจกับพื้นที่ท้องถิ่น:
กำหนดค่าบริการ
3.Spring-web.xml
รหัสโพสต์:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/MVC http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <! ลงทะเบียน defaultAnnotationHandlerMapping โดยอัตโนมัติ, คำอธิบายประกอบ, ethodhandleradapter b. โดยค่าเริ่มต้นมีชุดของฟังก์ชั่น: การเชื่อมโยงข้อมูลรูปแบบของตัวเลขและวันที่@numberFormat,@dateTimeFormat C: XML, การสนับสนุนการอ่านและการเขียนเริ่มต้นของ JSON-> <MVC: คำอธิบายประกอบที่ขับเคลื่อนด้วย/> <!-2 การกำหนดค่า Servlet เริ่มต้นของทรัพยากรแบบคงที่-> <!-1) เพิ่มการประมวลผลทรัพยากรแบบคงที่: JS, GIF, PNG 2) อนุญาต "/" เพื่อทำแผนที่โดยรวม-> <MVC: Default-Servlet-Handler/> <!-3: กำหนดค่า JSP เพื่อแสดง ViewResolver-> <Bean> <property name = "ViewClass" value = "org.springframework.web.servlet.view.jstlview"/> name = "คำต่อท้าย" value = ". jsp"/> </ebean> <!-4: สแกนถั่วที่เกี่ยวข้องกับเว็บ-> <บริบท: คอมโพเนนต์-สแกนฐานแพคเกจ = "com.dajiu.controller"/> <mvc: ทรัพยากร mapping = "/**/*. html" location = "/"/> <mvc: การแม็พทรัพยากร = "/**/*. css" ตำแหน่ง = "/"/> <mvc: การแมปทรัพยากร = "/**/*. png" location = "/"/> <mvc: การแม็พทรัพยากร = "/**/*
ให้ความสนใจกับพื้นที่ท้องถิ่น:
กำหนดค่าคอนโทรลเลอร์
5. การใช้งานเชิงตรรกะ (นำผู้ใช้เป็นตัวอย่าง)
①กำหนดการกำหนดคลาสผู้ใช้ในถั่วเป็นครั้งแรก
แพ็คเกจ com.dajiu.bean;/*** สร้างโดย Zhangxing เมื่อ 2017/4/7 */ผู้ใช้ระดับสาธารณะ {ID ส่วนตัว ID; ชื่อสตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; -②จากนั้นกำหนดอินเทอร์เฟซ UserDao ใน DAO
แพ็คเกจ com.dajiu.dao; นำเข้า com.dajiu.bean.user; นำเข้า org.apache.ibatis.annotations.param; นำเข้า org.springframework.stereotype.repository; นำเข้า java.util.list; /* *** */@repositoryPublic Interface UserDao {list <ผู้ใช้> getAll (); ผู้ใช้ getLogin (@param ("ชื่อ") ชื่อสตริง, @param ("รหัสผ่าน") รหัสผ่านสตริง);}การทำแผนที่เลเยอร์ dao ใน user.xml
③ next เพื่อประกาศอินเทอร์เฟซในบริการ
แพ็คเกจ com.dajiu.service; นำเข้า com.dajiu.bean.user; นำเข้า java.util.list;/*** สร้างโดย Zhangxing เมื่อ 2017/4/7 */อินเตอร์เฟสสาธารณะผู้ใช้งาน {รายการ <user> getAll (); ผู้ใช้ getLogin (ชื่อสตริงรหัสผ่านสตริง);}④ใช้ตรรกะอินเตอร์เฟสใน service.impl
แพ็คเกจ com.dajiu.service.impl; นำเข้า com.dajiu.bean.user; นำเข้า com.dajiu.dao.userdao; นำเข้า com.dajiu.service.userservice; นำเข้า org.springframework.beans. java.util.list;/*** สร้างโดย Zhangxing เมื่อ 2017/4/7 */ @Service ("Userservice") Public Class UserserViceImpl ใช้ UserserVice {@AutoWired UserDao UserDao; รายการสาธารณะ <user> getAll () {return userdao.getall (); } ผู้ใช้สาธารณะ getLogin (ชื่อสตริง, รหัสผ่านสตริง) {return userdao.getLogin (ชื่อ, รหัสผ่าน); -@autowired ที่นี่เทียบเท่ากับการสร้างอินสแตนซ์ใหม่
⑤ Emplement ลอจิกการโทรพื้นหลังจริงในคอนโทรลเลอร์
แพ็คเกจ com.dajiu.controller; นำเข้า com.dajiu.bean.user; นำเข้า com.dajiu.service.userservice; นำเข้า org.springframework.beans.factory.annotation.AutoWired; นำเข้า org.springframework.stereotype.controller; org.springframework.web.bind.annotation.requestmapping; นำเข้า org.springframework.web.bind.annotation.responsebody; นำเข้า java.util.hashmap; นำเข้า java.util.list; */@controller@requestmapping ("/blog") คลาสสาธารณะ userController {@autowired Userservice Userservice; @RequestMapping ("/getUser") @ResponseBody แผนที่สาธารณะ <String, Object> getUser () {แผนที่ map = new hashmap (); รายการ <user> list = userservice.getall (); map.put ("ผู้ใช้", รายการ); map.put ("สถานะ", 1); map.put ("ความสำเร็จ", จริง); แผนที่กลับ; } @RequestMapping ("getLogin") @ResponseBody แผนที่สาธารณะ <สตริง, วัตถุ> getLogin (ชื่อสตริง, รหัสผ่านสตริง) {แผนที่แผนที่ = ใหม่ hashmap (); ผู้ใช้ user = userservice.getLogin (ชื่อรหัสผ่าน); map.put ("ผู้ใช้" ผู้ใช้); map.put ("islogin", true); map.put ("สถานะ", 1); แผนที่กลับ; -ที่นี่ @RequestMapping ("") หมายถึงเส้นทางการแมปที่เข้าถึงได้ @ResponseBody แสดงถึงผลลัพธ์คำขอที่พิมพ์ในรูปแบบข้อมูล JSON และ @Controller แสดงให้เห็นว่าตราบใดที่เส้นทางการแมปรูทด้านบนถูกเข้าถึงตัวควบคุมจะถูกเรียกโดยตรง;
ตอนนี้เรามาช่วยให้คุณเข้าใจความคิดของคุณ: ขอ UserController ก่อน ---> Userservice ----> UserserViceImpl ----> UserDao ---> user.xml (Mapper) ----> Bean (ผู้ใช้)
6. กำหนดค่าเซิร์ฟเวอร์ Tomcat
①คลิกปุ่มสามเหลี่ยมสีเขียวที่มุมขวาบนแล้วคลิกแก้ไขการกำหนดค่า
②คลิกป้าย + แล้วเลือก Tomcat
③เลือกท้องถิ่น
④เติมในการกำหนดค่าที่เกี่ยวข้อง
⑤การปรับใช้ click คลิกเครื่องหมาย + และเลือกสิ่งประดิษฐ์
จากนั้นเลือกรายการแรกและป้อนต่อไป
ด้วยวิธีนี้โครงการทั้งหมดของคุณจะเสร็จสมบูรณ์และขั้นตอนต่อไปคือการเยี่ยมชม
โอเควันนี้คำอธิบายของ SpringMVC และ MyBatis Building Java Backend สิ้นสุดลงแล้ว
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น