Kürzlich wurde ein System in der Entwicklungsgesellschaft mit dem SSM -Framework gebaut. Natürlich unterscheidet es diesmal vom Blog. Es verfügt über viele Konfigurationsdateien. Die für die Entwicklung von Unternehmensebene erforderlichen Konfigurationsdateien sind sehr umständlich. Heute werde ich den Bau eines einfachen SSM -Frameworks und den Betrieb einer CRUD aufzeichnen.
Wir verwenden das Maven-Plug-In, um das von uns benötigte JAR-Paket zu konfigurieren. Da es nicht viele Vorgänge gibt, konfigurieren wir nicht viel. Wir sollten auf die Version von JDK achten, die Sie verwenden, und JDK mit verschiedenen Versionsnummern auswählen
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lr</groupId> <artifactId>ssm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ssm Maven Webapp</name> <URL> http://maven.apache.org </url> <!-Wird verwendet, um die Versionsnummer-> <Properties> <srping.version> 4.0.2.Release </srpping.version> <MyBatis.version> 3.2.8 </mybatis.version> <Slf4j.version> 1.7.12 </mybatis> <slf4j.version> 1.7.12 </mybatis> <Slf4j.version> 1.7.12 zu setzen,> <sversion> <mybatis> 1.7.12 </mybatis> <slf4j.version> 1.7.12 </mybatis> <slf4j.version> 1.7.12 </mybatis> <slf4j.version> 1.7.12 </mybatis> <slf4j.version> 1.7.12 </mybatis> <Slf4j.version> 1.7.12 <log4j.version> 1.2.17 </log4j.version> </properties> <!-Gebrauchtes JAR-Paket-> <Abhängigkeiten> <!-Unit-Test-> <Depopentcy> <GroupID> junit </GroupID> <artifactId> junit </artifactID> <version> </Version> </Version> </scope> <! </abhängig> <!-Java EE-Paket-> <De vorstellen> <gruppe> javax </Groupid> <artifactId> javaee-api </artifactid> <version> 7.0 </Version> </abhängig> <!-https <gruppe> com.fasterxml.jackson.core </GroupId> <artifactId> Jackson-Databind </artifactId> <version> 2.8.8 </Version> </abhängig> <!-Spring Framework-Paket Start-> <De vorangehen <version> $ {srping.version} </version> </abhängig> <depeopecy> <GroupId> org.springFramework </Groupid> <artifactId> Spring-Core </artifactId> <version> $ {srping.version} </Version> </abhängig> <Epaptid> <GroupId> oderg.sping.spingfRamework </gruppy </gruppe </gruppen> </abhängig> </gruppen- oderg. <artifactId> Spring-oxm </artifactId> <version> $ {srping.version} </Version> </abhängig> <depeopecy> <gruppe> org.springFramework </Groupid> <artifactID> Spring-tx </artifactId> <version> $ {srping.version} </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </file <gruppeId> org.springFramework </gruppeId> <artifactId> Spring-jdbc </artifactId> <version> $ {srping.version} </Version> </abhängig> <abhängig> <gruppe org. </abhängig> <depeopcy> <gruppe> org.springFramework </GroupId> <artifactId> Spring-Context </artifactID> <version> $ {srping.version} </Version> </abhängig> <Epaptid> <gruppe <GroupId> org. <version> $ {srping.version} </version> </abhängig> <depeaponcy> <GroupId> org.springFramework </Groupid> <artifactId> Spring-Expression </artifactID> <version> $ {srping.version} </Version> </abhängig> <deponcency> <gruppe <gruppen org. <artifactId> Spring-orm </artifactId> <version> $ {srping.version} </Version> </abhängig> <deponcy> <GroupId> org.springFramework </Groupid> <artifactid> Spring-Web </artifactId> <version> $ {srping.version} </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </fusion> </file <groupId>org.springframework</groupId> <artifactId>spring-webvc</artifactId> <version>${srping.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${srping.version}</version> </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 </artifactId> <version> 1.2.2 </Version> </abhängig> <!-MyBatis Framework-Paket End-> <!-Datenbanktreiber-> <Deponcy> <GroupId> MySQL </GroupId> <artifactid> MySQL-CONNECOR-JAVA </artifactid> </artifactid> usec. <!-Importieren Sie das DBCP-JAR-Paket, um die Datenbank in applicationContext.xml zu konfigurieren. <artifactId> jstl </artifactId> <version> 1.2 </Version> </abhängig> <depeopcy> <GroupId> Taglibs </Groupid> <artifactID> Standard </artifactId> <version> 1.1.2 </Version> </abhängig> <! <version> $ {log4j.version} </version> </abhängig> <depeopecy> <GroupId> org.slf4j </Groupid> <artifactID> SLF4J-API </artifactId> <version> $ {SLF4J.VERSION} </Version> </vgl. <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> </abhängig> <depeaponcy> <gruppe> org.codeehaus.jackson </GroupId> <artifactId> Jackson-Mapper-Asl </artifactId> <version> 1.9.13 </Version> </abhängig> <! <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <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> </project>Konfigurieren Sie dann die Datenbankverbindung und ändern Sie sie in Ihre eigene Datenbank.
treiber = com.mysql.jdbc.driverurl = jdbc/: mysql/: // locahost/: 3306/dbusername = rootPassword = rootMaxactive = 20maxidle = 20Minidle = 1Maxwait = 60000
Die Konfigurationsdatei Spring-DAO.xml findet die Klasse automatisch darunter.
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.spingframework.org/schema http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/context/context/context/contex/context/contex/contex/contex/context/context/contex/conted./Sconted. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! gescannt, und die Mapper unter diesem Paket werden durchsucht. Mehrere Pakete können angegeben werden, getrennt durch Kommas oder Semikolons zwischen Paketen -> <Eigenschaft name = "Basepackage" value = "com.lr.dao"/> <Eigenschaft name = "
Konsolidierte Dateien für Konfigurationsdateien Spring und MyBatis
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.spingframework.org/schema http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/scha http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Einführung von Konfigurationsdateien- id = "dataSource" zerstören-method = "close"> <Eigenschaft name = "TRAVERCLASSNAME" VALUE = "com.mysql.jdbc.driver" /> <Eigenschaft name = "url" value = "jdbc: mysql: // localhost: 3306 /db? name = "password" value = "root" /> <!-Verbindungsgröße initialisieren-> <Eigenschaft name = "initialSize" value = "3" /> <!-Maximale Anzahl von Verbindungspools-> <Eigenschaft name = "MaxActive" value = "20" /> <!-Maximum Free Connection Pools-> <Eigenschaftsname = "Maxidle" Value = "20" /> <! value = "20" /> <!-Minimum kostenlose Verbindungspools-> <Eigenschaft name = "minidle" value = "1" /> <!-Die maximale Verbindungszeit Wartezeit erhalten-> <Eigenschaft name = "maxwait" value = "60000" /> < /bean> <!-Spring und Mybatis sind perfekt integriert, und es gibt keine Notwendigkeit, dass MyBatis-Kartierung-yean. <Eigenschaft name = "dataSource" ref = "dataSource"/> <!-automatisch scannen maping.xml-Datei-> <Eigenschaft name = "mapperlocations" value = "classPath: com/lr/mapper/*. xml"> </property> </beans>
Konfigurieren Sie die Datei für Dinge
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/aop" xmlns: tx = "http://www.spingframeWramework xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframework.org/schema/Beans http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/Sschema/aop. http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframe.org/schema/tx/tx/tx/tx/sping-tx- Transaktionsmanager, verwenden Sie JtatransactionManager für globales tx-> <bean id = "transactionManager"> <Eigenschaft name = "dataSource" ref = "dataSource" /> < /bean> <!-Konfigurieren Sie die Klasse, die an der Transaktion beteiligt ist-> <AOP: config> <aop: pointcut id = "allServicethod" expression = expression = "expression =" expression = "expression =" execution (reactcut id = "allServicemethod" expression = "expression =" execution (reactcut id = "allServiceMethod" expression = "expression =" execution (reactcut id) com.lr.service.*.*(..))"/> <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice" /> </aop:config> <!-- Configure transactions using declaration--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name = "*" Propagation = "Erforderlich" Rollback-for = "java.lang.Exception"/> </tx: Attribute> </tx: Ratschläge> </beans>
Konfigurieren Sie springmvc.xml -Datei
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.spingframework.org/schema http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/context/context/context/contex/context/contex/contex/contex/context/context/contex/conted./Sconted. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Automatische Scan-> <Context: component-scan-base-package =" com.cr. "/<M-Scan-Basis =" com.congr. /> <mvc: Standard-Service-Handler/> <!-Definieren Sie das Vor-Suffix der gesprungenen Datei, Ansichtsmodus-Konfiguration-> <bean> <Eigenschaft name = "prefix" value = "/web-inf/jsp/"/> <Eigenschaft name = "suffix" value = ". JSP"/> </bean>
In Ordnung! ! ! Die Datei, die konfiguriert werden muss, wurde konfiguriert, genug, um eine Operationswelle auszuführen.
Als nächstes kommt ein Code im Hintergrund, der hauptsächlich Entitätsklassen, DAO -Schicht, Serviceschicht und Controller -Ebene enthält. Ich habe die Hintergrunddateien zusammengeladen. Die Mapper.xml -Datei ist der kritischste Teil der Implementierungsmethode.
<? <resultMap id = "baseresultmap" type = "com.lr.dto.user"> <resultal column = "id" property = "id" jdbctype = "Integer" /> <resultal column = "name" name "name" jdbctype = "varchar" /> <resultal columne Property = "Alter" jdbctype = "Integer"/> </resultMap> <sql id = "Base_column_List"> ID, Name, Kennwort, Alter </sql> <!-Benutzer-> <id id = "adduser" ParameterType = "com.lr.dto.User in Einfügen in den Benutzer (Name, Password, Passwort), Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwort, Passwass, AGEGEN), AGEGELN), AGEGELN), AGEGELN), AGAGNE). Werte (#{Name},#{Passwort},#{Alter}) </insert> <!-Query-Benutzer-> <select id = "queryByprimaryKey" resultMap = "BaseresultMap" ParameterType = "java.lang.Integer"> select <Clads refid = "base_coln_coln_coln_list"/> aus dem#{id {id {id {id {id {id {id {id {id {{{{{{{{{{) {{id {id {{{{{{{{{{{{{{{{{{{{{{) {{{id {{{{{{{{{{{{{{{ Benutzer-> <delete id = "DeleteByPrimaryKey" ParameterType = "java.lang.Ineger"> vom Benutzer löschen wob name =#{name}, password =#{password}, ay =#{ay} wobei id = {id} </update> <select id = "findAlluser" resultType = "com.lr.dto.user"> select * aus Benutzer </select> </mapper> Paket com.lr.dao; import java.util.list; import com.lr.dto.user; public interface iuserdao {// Benutzer public user queryBimaryKey (int id); // Benutzer public int deleteByprimaryKey (int id) löschen; // User Public Int Update ByprimaryKey (Benutzerbenutzer) aktualisieren; // Benutzer public int adduser (Benutzerbenutzer) hinzufügen; // Alle Benutzer öffentliche Liste <Benetzels> findAlluser () abfragen;} Paket com.lr.service; import java.util.list; import com.lr.dto.user; public interface iuserservice {// Benutzer public user getUserById (int userId); // öffentliche void deleteUser (int id) löschen; // User Public Void UpdateUser (Benutzerbenutzer) aktualisieren; // Benutzer public void adduser (Benutzerbenutzer) hinzufügen; // Alle Benutzer public List <Benetzels> findAlluser () anzeigen;} Paket com.lr.service.impl; import java.util.list; import javax.annotation.resource; import org. implementiert iuserService {@resource private iUserdao userDao; public iuserdao getUserdao () {return userDao; } public void setUserdao (iuserdao userDao) {this.userdao = userDao; } // user @Override public user getUserById (int userID) {userDao.queryByprimaryKey (userID) zurückgeben; } // user @Override public void updateUser (Benutzerbenutzer) {userDao.UpdateByPrimaryKey (Benutzer) aktualisieren; } // user @Override public void DeleteUser (int id) {userDao.deleteByprimaryKey (ID); } // user @Override public void adduser (Benutzerbenutzer) {userDao.adduser (Benutzer) hinzufügen; } // alle Benutzer abfragen @Override publiclist <Unter> findAlluser () {return userDao.findAlluser (); }} Paket com.lr.controller; import java.util.list; import javax.servlet.http.httpsertRequest; import org.springframework.bean.factory.Annotation.autowired; org.springframework.web.bind.annotation.RequestMapping; Import org.springframework.web.bind.annotation.ResponseBody; public iuserService getuSerService () {return UserService; } public void setUserService (iuserService userService) {this.userService = userService; } // Hauptseite @RequestMapping ("/") public String usermgr () {return "showuser"; } // user @RequestMapping ("/adduser") @ResponseBody public void userAdd (Benutzerbenutzer) {UserService.Adduser (Benutzer); } // Benutzer @RequestMapPing löschen ("/DeleteUser") @ResponseBody public void deleteUser (int id) {UserService.DeleteUser (ID); } // user @RequestMapping ("/updateUser") @ResponseBody public void uploadTeuser (Benutzerbenutzer) {UserService.Updateuser (Benutzer); } // Benutzer basierend auf ID @RequestMapping ("/showuser") @ResponseBody Public User ShowUser (int ID, Modellmodell) {return userService.getUserById (ID); } // alle Benutzer abfragen @RequestMapping ("/findAlluser") @ResponseBody Public List <Unter> findAlluser () {return userService.findallUser (); }} <%@ page Language = "java" import = "java.util. %>/js/jQuery-1.12.4.min.js "> </script> <script type =" text/javaScript "> // Benutzer $ $ (function () {$ (" add "). On (" click ", addnewuser);}) Funktion addnewuser () {var name = $. var password = $ .trim ($ ("#txtPassword"). Val ()); var age = $ .trim ($ ("#txtage"). val ()); $ .post ("/ssm/adduser", {"name": name, "password": Passwort, "Alter": Alter}, function () {alert ("erfolgreich hinzufügen!")}); } // Benutzer löschen $ (function () {$ ("#delete"). On ("click", deleteUser);}) Funktion DeleteUser () {var id = $. Trim ($ ("#deletId"). Val ()); $ .get ("/ssm/deleteUser", {"id": id}, function () {alert ("erfolgreich löschen!")}); } // alle Benutzer $ (function () {$ ("#findAlluser"). Click (function () {$ .ajax ({type: "post", dataType: "json", url: "/ssm/findAlluser", Erfolg: Funktion (MSG) {var str = "; STR+= "<tr> <Th>"+msg [i] .ID+"</th> <Th>"+msg [i] .Name+"</th> <Th>"+msg [i] .password+"</th> <Th>"+msg [i]. //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> <th>"+user.id+"</th> <th>"+user.name+"</th> <Th>"+user $ ("#Update"). On ("Click", UpdateUser); ALERT ($. TRIM ($ ("#Updateage"). Val ())) var id = $. trim ($ ("#UpdateId"). Val ()); var name = $. trim ($ ("#UpdateName"). Val ()); var password = $. trim ($ ("#UpdatePassword"). Val ()); var age = $. trim ($ ("#Updateage"). Val ()); $ .post ("/ssm/updateUser", {"id": id, "name": name, "password": password, "ay": ay}, function () {alert ("erfolgreich geändert!")}); } </script> <title> Benutzerverwaltung </title> </head> <body> <div> <p> Name: <Eingabe type = "text" id = "txtName"> </p> <p> Passwort: <input type = "password" id = "txtPassword"> </p> <p> älter: <input type = "text id = "add"> add </button> </p> </div> <hr style = "Höhe: 1px; Rand: Keine; Border-Top: 1PX gestrichelt #0066cc;" /> <div> <p> Benutzer-ID eingeben: <Eingabe type = "text" id = "deleteId"> </p> <p> <button id = "delete"> löte </button> </p> </div> <hr style = "Höhe: 1px; Border: None; Border-Top: 1PX gestrichelte #0066cc;" /> <div><p><button id="findalluser">Query all</button></p></div> <div> <table > <thead id="findall"> <tr> <th>id</th> <th>name</th> <th>password</th> <th>age</th> </tr> </table> </div> <hr style = "Höhe: 1px; Grenze: Keine; Border-Top: 1PX gestrichelt #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 = "Höhe: 1px; Grenze: Keine; Border-Top: 1PX gestrichelt #0066cc;" /> <div> <p>Enter user id:<input type="text" id="updateid"></p> <p>Enter user name:<input type="text" id="updatename"></p> <p>Enter password: <input type="password" id="updatepassword"></p> <p>Enter user age:<input type="password" id="updateage"></p> <p><button id = "update"> modify </button> </p> </div> </body> </html>