Недавно система разработчиков была построена с SSM Framework. Конечно, на этот раз он отличается от блога. Он имеет много файлов конфигурации. Файлы конфигурации, необходимые для разработки на уровне предприятия, очень громоздки. Сегодня я запишу строительство простой платформы SSM и операции реализации CRUD.
Мы используем плагин Maven для настройки необходимого нам пакета JAR. Поскольку операций не так много, мы не настраиваем много. Мы должны обратить внимание на версию JDK, которую вы используете, и выбрать JDK с разными номерами версий
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 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> <!-используется для установки номера версии-> <properties> <srping.version> 4.0.2.release </srping.version> <mybatis.version> 3.2.8 </mybatis.version> <lf4j.version> 1,7.12 </mybatis.version> <lf4j.version> 1,7.12 <log4j.version> 1.2.17 </log4j.version> </свойства> <!-Используемый пакет JAR-> <зависимости> <!-Единый тест-> <Depertive> <groupid> junit </GroupId> <ArtifactId> junit </artifactid> <serse> 4.11 </version> <!-означает, что этот пакет не будет нагружен при развитию> <serse> 4.11 </version> <! <!-Java EE Package-> <Dependency> <groupId> javax </GroupId> <strifactid> javaee-api </artifactid> <serse> 7.0 </version> </depertive> <!-https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-> jactabind. <groupId> com.fasterxml.jackson.core </GroupId> <StrifactId> Jackson-Databind </artifactId> <sersive> 2.8.8 </version> </dependency> <!-Spring Framework Package Start-> <Depective> <groupiD> org.springFramework </GroupD> <ratifactId> <Depry-test </GroupFACTID> <sersive> $ {srping.version} </version> </dependency> <Dependency> <groupId> org.springframework </GroupId> <strifactid> Spring-core </artifactid> <sersive> $ {srping.version} </version> </vehyse> <dependency> <groupd> org.springframe </version> </vehyse> <dependency> <groupd> org.springform <artifactId>spring-oxm</artifactId> <version>${srping.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${srping.version}</version> </dependency> <dependency> <groupId> org.springframework </GroupId> <ArtifactId> Spring-JDBC </artifactId> <sersion> $ {srping.version} </version> </depertive> <Depective> <groupId> org.springframe </GroupId> <artifactid> </artifactid> $ {версию> $ {rantrip> $ {версии>. </deperency> <dependency> <groupid> org.springframework </groupid> <artifactid> spring-context </artifactid> <sersion> $ {srping.version} </version> </repertive> <dependency> <groupid> org.springframework </artifactid> spring-context-support> <sersion> $ {srping.version} </version> </dependency> <Dependency> <groupId> org.springframework </GroupId> <artifactid> Spring-Expression </artifactid> <sersion> $ {srping.version} </version> </vehydend> <dependency> <groupd> org.springform} </ression> </vehyed> <dependency> <groupd> org.springform} <artifactId>spring-orm</artifactId> <version>${srping.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${srping.version}</version> </dependency> <dependency> <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> </dependency> <!-- mybatis framework package end --> <!-- database driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> <!-- Import Пакет JAR DBCP для настройки базы данных в ApplicationContext.xml-> <Dependency> <groupId> commons-dbcp </GroupId> <artifactid> commons-dbcp </artifactid> <serview> 1.4 </version> </degifact> <! <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </deperency> <dependency> <groupid> org.slf4j </groupid> <artifactid> slf4j-api </artifactid> <serse> $ {slf4j.version} </version> </degifactid> <deyedending> <groupid> org.slf4j </artifactid> slf4jjj12 <//artifact> </artifactid> slf4jJ12 <//artfactId> slf4j-log4 <//artfact> </artifactid> slf4jj12 <serse> $ {slf4j.version} </version> </deperency> <!-log end-> <!-json-> <!-Объекты формата для облегчения вывода журнала-> <Depective> <groupId> com.alibaba </GroupId> <strifactid> FastJson </artifactid> <series> 1.2.6 <serse> </resemend> </resemency> </resemency> </resemend> </resemency> </resemend> </resemend> </resemend> </resemend> </resemend> </artifactid> </artifactid> <series> 1.2.6. <groupId> org.codehaus.jackson </GroupId> <artifactid> jackson-mapper-asl </artifactid> <sersive> 1.9.13 </version> </deperency> <!-Запуск компонента загрузки-> <dependency> <groupid> commons-fileupload </GroupId> <strifactId> commons-fileulaud </artifactid> <sterfactid> <sterfactid> <sterfactid> <sterifactid> </artifactid> <sterfactid> </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 Связанное добавление -> <Dependency> <groupId> net.sourceforge.jexcelapi </GroupId> <strifactId> jxl </artifactid> <serse> 2.6 </version> </resemency> <dehyederiny> <groupid> org.apache.poi </GroupD> <ratifactId> poi </artifactId> <serse> 3.8 </regifactid> </artifactiD> <serse> 3.8 <//artemency> artifactiD> <groupId> org.apache.poi </GroupId> <ArtifactId> poi-ooxml </artifactid> <sersive> 3.9 </version> </depervice> <!-AL Связанное добавление-> </dependencies> <buld> <finalname> maven_project </finalname> <bricins> <groupd> org.apache.pluge. <Artifactid> maven-compiler-plugin </artifactid> <version> 2.3.2 </version> <configuration> <source> 1.7 </source> <Target> 1.7 </target> </configuration> </plugin> </plucins> </build> </project>Затем настройте подключение к базе данных и измените его на свою базу данных.
Driver = com.mysql.jdbc.driverurl = jdbc/: mysql/: // locahost/: 3306/dbusername = rootpassword = rootmaxactive = 20maxidle = 20minidle = 1maxwait = 60000
Файл конфигурации Spring-Dao.xml автоматически найдет класс под ним.
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframe.orschema. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-3.1.x.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Название пакета, где находится интерфейс DAO, будет автоматически находить класс ниже. Сканируется, и будут искать Mappers в этом пакете. Можно указать несколько пакетов, разделенных запятыми или полуколонами между пакетами -> <name = "basepackage" value = "com.lr.dao"/> <name = "sqlSessionFactory" ref = "sqlSessionFactory"> </propetion> </beanc> </beans>
Консолидированные файлы для файлов конфигурации Spring и Mybatis
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframe.orschema. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x.0.x. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Введение файлов конфигурации-> <Stect: Property Placeholder =" ClassPath: /JDB. id = "DataSource" Drest Method = "close"> <name = "riverclassname" value = "com.mysql.jdbc.driver" /> <name = "url" value = "jdbc: mysql: // localhost: 3306 /db? useUnicode = true & partmentencoding = utf8" /> <rye = root rye " /root rye" /root rye " /root rye" /root rye " /root root rye" /root rye ». name = "password" value = "root" /> <!-инициализируйте размер соединения-> <name = "initialSize" value = "3" /> <!-Максимальное количество пулов соединений-> <name = "maxactive" value = "20" /> <!-Maximum Free Connection Pools-> <name = "maxidle" value = "20" /> <! value = "20" /> <!-минимальные пулы бесплатных соединений-> <name = "minidle" value = "1" /> <!-Получите максимальное время ожидания соединения-> <name = "maxwait" value = "60000" /> < /bean> <!-Spring и Mybatis идеально интегрированы, и нет необходимости в MyBatiS-Configure-FiveCome-> <Bean IdeSory. <name = "dataSource" ref = "dataSource"/> <!-Автоматическое сканирование mapping.xml файл-> <name = "mapperlocations" value = "classpath: com/lr/mapper/*. xml"> </свойство> </beans>
Настройте файл для вещей
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/aop" xmlns: tx = "http://wwww.springformawrame.orschema. xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1. Диспетчер транзакций, используйте jtatransactionmanager для глобального tx-> <bean id = "transactionmanager"> <name = "dataSource" ref = "dataSource" /> < /bean> <!-Настройте класс, участвуя в транзакции-> <aop: config> <aop: pointcut id = " com.lr.service.*.*(..)) "/> <aop: Advisor pointcut-ref =" allservicemethod "ref-ref =" txadvice "/> </aop: config> <!-Настройка транзакций с использованием декларации-> <tx: Atryd =" txadvice "Transaction-manager =" name = "*" opragation = "требуется" roplack-for = "java.lang.exception"/> </tx: атрибуты> </tx: консультант> </beans>
Настройте файл Springmvc.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springframe.orschema. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-3.1.x.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-Automatic Scan-> <context: component-can-package =" com.lr.controller "/> <contect: component-can-package =" <MVC: по умолчанию-servlet-handler/> <!-Определите предварительную посадку запрыгнутого файла, конфигурация режима просмотра-> <bean> <name = "prefix" value = "/web-inf/jsp/"/> <name = "suffix". ". Jsp"/> </bean>
хорошо! ! ! Файл, который необходимо настроить, был настроен, достаточно для того, чтобы мы могли выполнить волну операций.
Далее находится какой -то код в фоновом режиме, который в основном включает в себя классы объектов, слой DAO, уровень обслуживания и уровень контроллера. Я загрузил фоновые файлы вместе. Файл mapper.xml является наиболее важной частью метода реализации.
<? 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 namepace = "com.l.da. <resultmap id = "baseresultmap" type = "com.lr.dto.user"> <result column = "id" property = "id" jdbctype = "integer" /> <result column = "name" property = "name" jdbctype = "varchar" /> <result column = "password =" password "jdbctype =" varchar " /> <result =" password "=" password "jdbctype =" varchhar) <result = "password" = "jdbctype =" varchhar) < Property = "age" jdbctype = "integer"/> </resultmap> <sql id = "base_column_list"> id, имя, пароль, возраст </sql> <!-добавить пользователь-> <s insert id = "Adduser" Parametertype = "com.lr.dto.user"> Insert в пользователь (имя, пароль, эйдж) values (#{name},#{password},#{age}) </insert> <!-пользователь запроса-> <select id = "Querybyprimarykey" resultmap = "baseresultmap" parametertype = "java.lang.integer"> select refid = "base_column_lil user-> <delete id = "deletebyprimarykey" parametertype = "java.lang.integer"> delete из пользователя, где id = #{id} </delete> <!-Update User-> <update id = "UpdateByprimaryKey" parameterType = "com.lr.dto.user"> Обновление пользовательского набора name =#{name}, password =#{password}, age =#{age} где id =#{id} </update> <select id = "findalluser" resultype = "com.lr.dto.user"> select * from user </select> </mapper> пакет com.lr.dao; import java.util.list; import com.lr.dto.user; public interface iuserdao {// Query Пользователь пользователя public QueryByprimaryKey (int id); // Удалить пользователь public int deleteByprimarykey (int id); // Обновление пользователя public int updatebyprimarykey (пользователь пользователя); // Добавить пользователь public int adduser (пользователь пользователя); // Запрос всех пользователей общедоступного списка <user> findalluser ();} пакет com.lr.service; import java.util.list; import com.lr.dto.user; public interface iuserservice {// Query пользователь общедоступный пользователь getUserbyid (int userId); // Удалить Public void deleteUser (INT ID); // Обновление пользователя public void UpdateUrer (пользователь пользователя); // Добавить пользователь public void Adduser (пользователь пользователя); // Просмотреть все пользователи общедоступного списка <user> findalluser ();} пакет com.lr.service.impl; import java.util.list; import javax.annotation.resource; импорт org.springframework.stepolype.service; импорт com.lr.dao.iuserdao; импорт com.lr.dto.user; imporm.lr.service. реализует iuserservice {@resource private iuserdao userdao; public iuserdao getuserdao () {return userdao; } public void setUserdao (iuserdao userdao) {this.userdao = userDao; } // Query пользователь @Override public user getUserbyId (int userId) {return userDao.querybyprimarykey (userId); } // Обновление пользователя @Override public void UpdateUser (пользователь пользователя) {userDao.updatebyprimarykey (user); } // Удалить пользователь @Override public void deleteUser (int id) {userdao.deletebyprimarykey (id); } // Добавить пользователь @Override public void AddUser (пользователь пользователя) {userDao.adduser (user); } // Запрос всех пользователей @Override public list <user> findalluser () {return userdao.findalluser (); }} пакет com.lr.controller; import java.util.list; import javax.servlet.http.httpservletrequest; импорт org.springframework.beans.factory.annotation.autowired; import org.springframework.stepolype.controler; org.springframework.web.bind.annotation.requestmapping; импорт org.springframework.web.bind.annotation.responsebody; импорт com.lr.dto.user; import com.lr.service.iuserservice; @controllerpublic class usercontroller a authowore -intrivie intreamers @controllerpublic usercontroler {@autowired athorerservice; public iuserservice getUsersersers () {return userservice; } public void setUserService (iuserservice userservice) {this.userservice = userservice; } // Главная страница @Requestmapping ("/") public String usermgr () {return "showuser"; } // Добавить user @Requestmapping ("/adduser") @Responsebody public void userAdd (пользователь пользователя) {userservice.adduser (user); } // Удалить пользователь @Requestmapping ("/deleteUser") @Responsebody public void deleteUser (int id) {userservice.deleteUser (id); } // изменять пользователь @Requestmapping ("/upplyUser") @Responsebody public void uploadteUser (пользователь пользователя) {userservice.updateUser (user); } // Найти пользователя на основе id @requestmapping ("/showuser") @responsebody public user showuser (int id, модель модели) {return userservice.getuserbyid (id); } // Запрос всех пользователей @Requestmapping ("/findalluser") @Responsebody public list <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 = " %>/js/jQuery-1.12.4.min.js "> </script> <script type =" text/javascript "> // Добавить пользователь $ (function () {$ ("#добавить "). On (" click ", addnewuser);}) function addnewuser () {var name = $ .trim ("#txtname "). var password = $ .trim ($ ("#txtpassword"). val ()); var age = $ .trim ($ ("#txtage"). val ()); $ .post ("/ssm/adduser", {"name": name, "пароль": пароль, "AGE": age}, function () {alert ("добавить успешно!")}); } // Удалить пользователь $ (function () {$ ("#delete"). On ("click", deleteUser);}) function deleteUser () {var id = $. Trim ($ ("#deleteId"). Val ()); $ .get ("/ssm/deleteUser", {"id": id}, function () {alert ("delete успешно!")}); } // Запросить всех пользователей $ (function () {$ ("#findalluser"). Click (function () {$ .ajax ({type: "post", datatype: "json", url: "/ssm/findalluser", успех: функция (msg) {var = "; str+= "<Tr> <th>"+msg [i] .id+"</th> <Th>"+msg [i] .name+" // Поиск пользователя на основе id $ (function () {$ ("#find"). Click (function () {$ .ajax ({type: "post", data: {id: $ ("#find"). Val ()}, dataType: "json", url: "/ssm/showuser", успех: функция (пользователь) {var str str strl "; str+= "<tr> <th>"+user.id+"</th> <Th>"+user.name+"</th> <Th>"+user.Password+"</th> <Th>"+user.age+"</th> <tr>" $ ("#findustbyid"). $ ("#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, "пароль": пароль, "AGE": age}, function () {alert ("успешно изменен!")}); } </script> <Title> Управление пользователем </title> </head> <body> <div> <p> Имя: <input type = "text" id = "txtname"> </p> <p> Пароль: <input type = "password" id = "txtpassword"> <p> <p> Age: <input type = "id =" id = "Add"> добавить </button> </p> </div> <hr style = "height: 1px; граница: нет; граница-топ: 1px пунктир #0066cc;" /> <div> <p> Введите идентификатор пользователя: <input type = "text" id = "deleteId"> </p> <p> <button id = "delete"> delete </button> </p> </div> <hr style = "Высота: 1px; граница: нет; /> <div> <p> <button id = "findalluser"> query all </button> </p> </div> <div> <table> <thead id = "findall"> <tr> <th> id </th> <Th> name </th> <Th> passwor style = "Высота: 1px; граница: нет; граница-вершина: 1px пунктир #0066cc;" /> <div> <p> Введите идентификатор пользователя: <input type = "text" id = "findId"> </p> <p> <button id = "find"> Query </button> </p> </div> <div> <table> <thead id = "finduserbyid"> <Tr> <Th> ID </th> </th> th> </th> palwR </th> </th> </th> </th> th> </th> th> </th> eme </th> </th> th>. </div> <hr style = "Высота: 1px; граница: нет; граница-топ: 1px пунктир #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>