Baru -baru ini, sebuah sistem di perusahaan pengembangan dibangun dengan kerangka kerja SSM. Tentu saja, ini berbeda dari blog kali ini. Ini memiliki banyak file konfigurasi. File konfigurasi yang diperlukan untuk pengembangan tingkat perusahaan sangat rumit. Hari ini saya akan merekam pembangunan kerangka kerja SSM sederhana dan pengoperasian menerapkan crud.
Kami menggunakan plug-in Maven untuk mengonfigurasi paket JAR yang kami butuhkan. Karena tidak ada banyak operasi, kami tidak banyak mengkonfigurasi. Kami harus memperhatikan versi JDK yang Anda gunakan dan pilih JDK dengan nomor versi yang berbeda
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/maven-v4_0_0.xsd "> <podelversion> 4.0.0 </podelversion> <groupid> com.lr </groupid> <ArTifactId> SSM </arttifactid> <packaging> war </packaging> <artifactD> </arttifactid> <packaging> war </packaging> <cersion> 0.0.0.1.1 <rerl> http://maven.apache.org </rerl> <!-Digunakan untuk mengatur nomor versi-> <soperties> <srping.version> 4.0.2.release </srping.version> <mybatis.version> 3.2.8 </mybatis.version> <mybatis.version> 1.2.8 </mybatis.version> <lf4j.version> 1.7j.7j.version.7j.version.7j.version.7j.version.7j.version.7j.version.7j.version.7j.version.7j.version> </mybatis.version> <lf4j.version> <LOG4J.VERSION> 1.2.17 </log4j.version> </ Properties> <!-Paket JAR yang Digunakan-> <dependencies> <!-Uji unit-> <dependency> <groupid> Junit </groupid> <Artifactid> Junit </Stifactid> <version> <versi> 4.11 </versi> <serpirping/Paket ini tidak akan ada </Artifactid> <version> <versi> </Versi> </Versi> </Versi/</Artifactid </ArtiFactID> </Artifactid </Artifactid </Artifactid </Artifactid </Artifactid </artifactid <!-Paket Java EE-> <dependency> <GroupId> Javax </groupid> <ArTifactId> javaee-api </artifactid> <version> 7.0 </version> </dependency> <!-https://mvnrepository.com/artifact/concom.fasterxml.jackson.conpository.com <GroupId> com.fasterxml.jackson.core </groupid> <ArTifactId> jackson-databind </stifactid> <version> 2.8.8 </version> </dependency> <!-Paket Spring Framework Mulai-> <grouptid> <t/org. <version> $ {srping.version} </version> </gandendency> <dependency> <GroupId> org.springframework </groupid> <ArTifactId> Spring-core </t ArtifactId> <version> $ {srping.Version} </version> </dependency> <version> <groupid> <ArTifactId> Spring-oxm </stifactid> <version> $ {srping.version} </version> </ganden> <dependency> <groupid> org.springframework </groupid> <ArTifactId> Spring-tx </artifactid> <version> $ {srping.version} </Version> </artifactid> <version> $ {srping.version} </Version> </artifactid> </Versi> $ {SRPing.Version} </Version> </Version> </Version> <GroupId> org.springframework </groupid> <ArtifactId> spring-jdbc </artifactid> <version> $ {srping.version} </version> </dependency> <sependency> </org.spramework </groupid> <Artifactid> </art/art. </Dependency> <dependency> <GroupId> org.springframework </groupid> <ArTifactId> Spring-Context </artifactid> <version> $ {srping.version} </version> </dependency> <grouptid> org.springframework </version> </dependency> <grouptid> org.springframework </groupid> <Artextid> <roMROGED> <version> $ {srping.version} </version> </gandendency> <dependency> <GroupId> org.springframework </groupid> <ArTifactId> ekspresi pegas </ArtiFacTid> <version> $ {srping.version} </version> </Dependency> <version> <version> <groupid> org.version. <ArTifactId> Spring-orm </stifactid> <version> $ {srping.version} </version> </dependency> <dependency> <groupid> org.springframework </groupid> <ArTifactId> Spring-WEB </arttifactid> <version> $ {srping.version} </Version> </artifactid> <version> $ {srping.version} </Version> </artifactid> </Versi> $ {Srping.version} </Version> </Version> </Version> <GroupId> org.springframework </groupid> <ArTifactId> spring-webvc </t Artifactid> <version> $ {srping.version} </version> </dependency> <tropping> </org.spramework </groupid> <Artifactid> </versi </versi </versi </versi </versi </gruptid> <Artifactid> Spring-aspects </version> SPRING-AKPECTS </Version> </version> <TROGING> SPRING-AKPECTID </versi </versi </versi </versi </versi </versi </versier> <t-version> </versi </version> <TroFacTID> <TROMPORD> </ARTIFID> </dependency> <!-- spring framework package end --> <!-- mybatis framework package start --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <ArTifactId> mybatis-spring </stifactid> <version> 1.2.2 </version> </dependency> <!-MyBatis Framework Package End-> <!-Driver Database-> <dependency> <groupid> MySQL </proupid> <ArTifactid> MySQL-Connector-java </ArtiCid </grupid> <ArTifacTid> MySQL-Connector-java </versic.1ticid> <ArTifacTid> MYSQL-CONNECTOR-JAVA </ARTIFACIONS. <!-Impor Paket JAR DBCP Untuk mengonfigurasi database di ApplicationContext.xml-> <dependency> <GroupId> Commons-DBCP </Groupid> <ArTifactId> Commons-DBCP </artifactid> <version> 1.4 </version> </Dependency> <!-Kelas tag JStifactID> </Versi </SERVERSI> </Versi </Versi </JSTL> </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi </Versi. <ArTifactId> jstl </stifactid> <version> 1.2 </version> </dependency> <dependency> <groupid> taglibs </sroupid> <ArTifactId> Standar </artifactid> <version> 1.1.2 </version> </dependency> <!-Log start-Dependency> <version> </Version> </Dependency> <!-Log Start-Dependency <version> </Versies> </Dependency> <!-Log Start-Dependency <version> </Versies> </Dependency> <! <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log END --> <!-- Json --> <!-- Format objects to facilitate log output --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version> 1.2.6 </version> </dependency> <dependency> <GroupId> org.codehaus.jackson </groupid> <ArTifactId> Jackson-Mapper-Asl </artifactid> <version> 1.9.13 </version> </dependency> <!-Unggah Paket Komponen Mulai-> <dependency> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> Commons> <ArTifactId> Commons-FileUpload </arttifactId> <version> 1.3.1 </version> </dependency> <dependency> <Groupid> Commons -o </groupid> <ArTifactId> Commons-io </artifactid> <version> 2.4 </version> </Dependency> <dependency> </Artifactid> <version> 2.4 </Versi </Dependency> <dependency> <grouptid> Commons Commons> 2.4 </Versi <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <!-- Upload component package end --> <!-- AL related addition --> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>jxl</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.8</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <!-- AL related addition--> </dependencies> <build> <finalName>Maven_Project</finalName> <plugins> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </ Build> </joy Project>Kemudian konfigurasikan koneksi database dan ubah ke database Anda sendiri.
driver = com.mysql.jdbc.driverUrl = jdbc/: mysql/: // locahost/: 3306/dbusername = rootpassword = rootmaxactive = 20maxidle = 20Minidle = 1maxwait = 60000
File konfigurasi spring-dao.xml akan secara otomatis menemukan kelas di bawahnya.
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:/schema http://www.springframework.org/schema/beans/spring-weans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-nama paket di mana antarmuka DAO berada, musim semi akan secara otomatis menemukan kelas itu di bawah ini. dipindai, dan pemetaan di bawah paket ini akan dicari. Beberapa paket dapat ditentukan, dipisahkan oleh koma atau titik koma antar paket -> <name properti = "basepackage" value = "com.lr.dao"/> <name properti = "sqlSessionFactory" ref = "sqlSessionFactory"> </propert> </bean> </beans> "
File konsolidasi untuk file konfigurasi spring dan mybatis
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:/schema http://www.springframework.org/schema/beans/spring-weans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/www.spramework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Memperkenalkan file konfigurasi-> Konteks: Properti-Place-Location ="> <! id = "DataSource" Destroy-Method = "Tutup"> <nama properti = "driverclassname" value = "com.mysql.jdbc.driver" /> <nama properti = "url" value = "jdbc: mysql: // localhost: 3306 /db? UseUnicode = true & characterencoding =" "" "" "" "" "" "name /db? name = "kata sandi" value = "root" /> <!-inisialisasi ukuran koneksi-> <name properti = "inisialisasi" value = "3" /> <!-Jumlah maksimum koneksi kumpulan-> <nama properti = "maxactive" value = "20" /> <!-maximum pool koneksi gratis-> <nama properti = "maxidle" value = "20" /> <! /> <!-Kolam koneksi gratis minimum-> <name properti = "minidle" value = "1" /> <!-Dapatkan waktu tunggu koneksi maksimum-> <nama properti = "maxwait" value = "60000" /> < /bean> <!-Spring dan mybatis terintegrasi dengan sempurna, dan tidak perlu configuration configuration configuration-"Sq." name = "DataSource" ref = "DataSource"/> <!-Secara otomatis memindai file pemetaan.xml-> <name properti = "mapperlocations" value = "classpath: com/lr/mapper/*. xml"> </properti> </tact>
Konfigurasikan file untuk hal -hal
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/aop" xmlns: tx = "http:/schema. xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframework.org/schema/beans http:/wwww.sframework.orgal http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http:/spramework.org/schema/tx.tx Transaction Manager, gunakan jtatransactionManager untuk global tx-> <bean id = "transactionManager"> <name properti = "DataSource" ref = "DataSource" /> < /bean> <!-Konfigurasikan kelas yang berpartisipasi dalam transaksi-> <aop: config> <aop: pointcut id = "allservicemethod" com.lr.service.*.*(..)) "/> <aop: advisor pointcut-ref =" allserviceMethod "saran-ref =" txadvice "/> </aop: config> <!-mengkonfigurasi transaksi menggunakan deklarasi-> <tx: nasihat id =" tx "txadvice" txAdcArpICET: "txArx: TX: TX: TX:" TXAGER "TX: TX:" TXAGER "TX:" TXAGER "TX:" TXAGER "TX:" TXAGER "TX:" TXAGER "TX:" TXAGER "TXAGER" TXAGER "TXAGER" TXAGER "TX:" TXAGER "TXAGER" TXAGER "TXAGER" TXPRICE " propagation = "wajib" rollback-for = "java.lang.exception"/> </tx: atribut> </tx: nasihat> </boy>
Konfigurasikan file springmvc.xml
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:/schema http://www.springframework.org/schema/beans/spring-weans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-scan otomatis-> <konteks: komponen-scan-package. /> <mvc: default-servlet-handler/> <!-Tentukan pra-suffix file yang dilompat, lihat konfigurasi mode-> <bean> <properti nama = "prefix" value = "/web-inf/jsp/"/> <name properti = "suffix" value = ". jsp"/</bean>
Baiklah! Lai Lai File yang perlu dikonfigurasi telah dikonfigurasi, cukup bagi kami untuk melakukan gelombang operasi.
Berikutnya adalah beberapa kode di latar belakang, yang terutama mencakup kelas entitas, lapisan DAO, lapisan layanan, dan lapisan pengontrol. Saya mengunggah file latar belakang bersama -sama. File mapper.xml adalah bagian paling penting dari metode implementasi.
<? Xml Version = "1.0" encoding = "utf-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper napper = "comybatis-3-mapper.dtd"> <resultMap id = "baseresultMap" type = "com.lr.dto.user"> <hasil kolom = "id" properti = "id" jdbctype = "integer" /> <hasil kolom = "name" properti = "name" jdbctype = "varchar" /> <hasil kolom = "kata sandi" properti "kata sandi" kata sandi "" jdbctype = "varchar" /> <hasil kolom = "kata sandi" kata sandi "kata sandi" kata sandi "kata sandi" kata sandi "kata sandi" kata sandi "kata sandi" kata sandi "" kata sandi "kata sandi" kata sandi "" kata sandi "kata sandi" kata sandi "" kata sandi "" kata sandi "kata sandi" kata sandi "" jdbctype = "integer"/> </resultMap> <sql id = "base_column_list"> id, nama, kata sandi, usia </ql> <!-tambahkan pengguna-> <masukkan id = "addUser" parameterpe = "com.lr.dto.user"> masukkan ke pengguna (name, name, ever. </insert> <!-- Query user--> <select id="queryByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer"> select <include refid="Base_Column_List" /> from user where id = #{id} </select> <!-- Delete user--> <delete id="deleteByPrimaryKey" ParameterType = "java.lang.integer"> Hapus dari pengguna di mana id =#{id} </delete> <!-perbarui pengguna-> <update id = "updateByprimarykey" parameTerType = "com.lr.dto.user"> Update name =#{name}, kata sandi =#{}, usia = {{} {{{{{{{{{name {{name = id = "findAllUser" resultType = "com.lr.dto.user"> SELECT * from User </select> </mapper> Paket com.lr.dao; import java.util.list; import com.lr.dto.user; antarmuka publik iuserdao {// query pengguna pengguna publik querybyprimarykey (int id); // hapus pengguna publik int deletebyprimarykey (int id); // Perbarui User Public Int UpdateByPrimaryKey (pengguna pengguna); // Tambahkan Pengguna Public Int AddUser (Pengguna Pengguna); // query semua pengguna daftar publik <user> findAllUser ();} Paket com.lr.service; import java.util.list; import com.lr.dto.user; antarmuka publik iuserservice {// query pengguna pengguna publik getUserbyId (int userid); // hapus public void deleteUser (int id); // Perbarui User Public Void UpdateAser (Pengguna Pengguna); // Tambahkan Pengguna Public Void AddUser (Pengguna Pengguna); // Lihat semua Pengguna Daftar Publik <User> findAllUser ();} Paket com.lr.service.impl; impor java.util.list; impor javax.annotation.resource; impor org.springframework.stereotype.service; impor com.lr.dao.iuserdao; impor com.lr.dto.user; impor com.lr.service; UserserViceImpl mengimplementasikan iUsersERVICE {@resource private iuserdao userdao; public iuserdao getUserdao () {return userdao; } public void setuserdao (iuserdao userdao) {this.userdao = userdao; } // query user @Override pengguna publik getUserbyId (int userId) {return userdao.queryByprimarykey (userId); } // Perbarui pengguna @Override public void updateAser (pengguna pengguna) {userdao.updateByPrimaryKey (user); } // hapus pengguna @override public void deleteUser (int id) {userdao.deletyprimarykey (id); } // Tambahkan pengguna @Override public void addUser (pengguna pengguna) {userdao.adduser (user); } // query semua pengguna @Override Daftar publik <User> findAllUser () {return userdao.findalluser (); }} Paket com.lr.controller; import java.util.list; import javax.servlet.http.httpservletrequest; impor org.springframework.beans.factory.notation.Autowired; impor org.spramework.stereotipe.controller; org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.responseBody; Impor com.lr.dto.user; impor com.lr.service.iuserService; @controllerpublerpublic class USERController {@controllerpublic class Usercontroller {@controllerpublic class Usercontroller {@controllerpublic classcontroller {controllerpubler; IUSERSERVICE PUBLIK GetUsersERVICE () {Return UserService; } public void setUserservice (iUserservice UsserService) {this.userservice = Userservice; } // halaman utama @requestmapping ("/") public string usermgr () {return "showUser"; } // Tambahkan pengguna @RequestMapping ("/addUser") @ResponseBody public void userAdd (pengguna pengguna) {Userservice.adduser (user); } // hapus pengguna @RequestMapping ("/deleteUser") @ResponseBody public void deleteUser (int id) {Userservice.DeleteUser (ID); } // Modifikasi pengguna @RequestMapping ("/updateUser") @ResponseBody public void unggahaneUser (pengguna pengguna) {UserserVice.updateUser (pengguna); } // Temukan pengguna berdasarkan ID @RequestMapping ("/showUser") @ResponseBody Public User ShowUser (int id, model model) {return userservice.getUserById (id); } // query semua pengguna @RequestMapping ("/findAllUser") @ResponseBody Daftar publik <user> findAllUser () {return userservice.findalluser (); }} <%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8"%> <! Doctype html> <html> <head> <meta charset = "utf-8"> <script type = "text/javascript" src = "<%= application.getCath () <) Text/JavaScript" src = "<%= application.getcath () <) %>/js/jQuery-1.12.4.min.js "> </script> <script type =" text/javascript "> // tambahkan pengguna $ (function () {$ ("#add "). on (" klik ", addNewuser);} function addnewuser ()) {var name = $ .Rim ($ (");} TADNEWUSER ()) {var name = $. $ ($ (" var password = $ .trim ($ ("#txtpassword"). val ()); var usia = $ .trim ($ ("#txtage"). Val ()); $ .post ("/ssm/adduser", {"name": name, "password": kata sandi, "usia": usia}, function () {alert ("Tambahkan sukses!")}); } // hapus pengguna $ (function () {$ ("#delete"). On ("klik", deleteUser);}) function deleteUser () {var id = $. Trim ($ ("#deleteId"). Val ()); $ .get ("/ssm/deleteUser", {"id": id}, function () {alert ("Hapus Sukses!")}); } // Permintaan semua pengguna $ (function () {$ ("#findAllUser"). Klik (function () {$ .Ajax ({type: "Post", DataType: "JSON", URL: "/SSM/FindAllUser", Success: Function (msg) {var str = " str+= "TR> <TH>"+MSG [i] .id+"</t> <tm //Finding a user based on id $(function(){ $("#find").click(function(){ $.ajax({ type:"POST", data:{id:$("#findid").val()}, dataType:"json", url:"/ssm/showUser", success:function(user){ var str=""; str+= "<tr> <tm $ ("#UPDATE"). ON ("Klik", UpdateAser);}) Function UpdateUser () {ALERT ($. TRIM ($ ("#UPDATEID"). VAL ()) ALERT ($. Trim ($ ("#UpdateName") () ()) ($. Trim ($ ("#UpdatePassword"). id = $. trim ($ ("#updateId"). val ()); var name = $. trim ($ ("#updateName"). val ()); var password = $. trim ($ ("#updatePassword"). Val ()); var use = $. trim ($ ("#updateage"). val ()); $ .post ("/ssm/updateAser", {"id": id, "name": name, "password": kata sandi, "usia": usia}, function () {alert ("Modified berhasil!")}); } </script> <itement> Manajemen Pengguna </iteme> </head> <body> <ver> <p> Nama: <input type = "text" id = "txtname"> </p> <p> Kata sandi: <input type = "kata sandi" id = "txtpassword"> <p> <p> Usia: <input type "id =" id = "TXTPASSWORD"> <p> <p> <p> Usia: <input type "id =" id = "ID =" id = "add"> Tambahkan </button> </p> </div> <hr style = "tinggi: 1px; border: tidak ada; perbatasan-top: 1px putus #0066cc;" /> <dv> <p> Masukkan ID Pengguna: <input type = "Text" id = "deleteId"> </p> <p> <tombol id = "hapus"> hapus </button> </p> </div> <hr style = "Tinggi: 1px; Border: None: Border-Top: 1px Dashed #0066cc;" /> <dv> <p> <tombol id = "findAllUser"> kueri semua </button> </p> </div> <div> <able> <Tead id = "findAll"> <tr> <th> id </t> <t th> </t/tuh </t th> <t> </th> </th> </tr> </tod> </div </th> <t> </th> </tr> </tod> </th> </th> </th> </th> </tr> </tod> style = "Tinggi: 1px; Border: None; Border-top: 1px putus #0066cc;" /> <div> <p>Enter user id:<input type="text" id="findid"></p> <p><button id="find">Query</button></p> </div> <div> <table > <thead id="finduserbyid"> <tr> <th>id</th> <th>Name</th> <th>Password</th> <th>Age</th> </tr> </table> </div> <hr style = "Tinggi: 1px; Border: None; Border-Top: 1px putus-putus #0066cc;" /> <div> <p> Masukkan ID Pengguna: <Input type = "Text" id = "updateId"> </p> <p> Masukkan nama pengguna: <input type = "text" id = "updateName"> </p> <p> Masukkan kata sandi: <input type = "password" id = "updatePassword"> </p> <p> enter/<input ever = "iD =" UpdatePassword "> </p> <p> MASUKKAN USE USERE: <input" ID = "" ID = " <p> <tombol id = "update"> ubah </button> </p> </div> </body> </html>