최근 개발 회사의 시스템은 SSM 프레임 워크를 통해 구축되었습니다. 물론 이번에는 블로그와 다릅니다. 많은 구성 파일이 있습니다. 엔터프라이즈 수준 개발에 필요한 구성 파일은 매우 번거 롭습니다. 오늘 저는 간단한 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/0.0.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> <Url> http://maven.apache.org </url> <!-버전 번호를 설정하는 데 사용됩니다-> <properties> <srping.version> 4.0.2. release </srping.version> <mybatis.version> 3.2.8 </mybatis.version> <slf4j.version> 1.7.12 </slf4j.version> <log4j.version> 1.2.17 </log4j.version> </properties> <!-사용 된 JAR 패키지-> <pectients> <!-단위 테스트-> <pectionency> <groupid> junit> <artifactid> junit </artifactid> <버전> 4.11 </version> <! <!-java ee 패키지-> <pectionency> <groupId> javax </groupid> <artifactid> javaee-api </artifactid> <bersion> 7.0 </version> </fectionency> <!-https://mvnrepository.com.fasterxml.jackson.core/jackson/jackson/jackson> databind. <groupid> com.fasterxml.jackson.core </groupid> <artifactid> jackson-databind </artifactid> <bersion> 2.8.8 </version> </dependency> <!-스프링 프레임 워크 패키지 시작-> <groupId> org.springframwork </groupIcid> 스프링 --- 테스트 </artifactid> <버전> $ {srping.version} </version> </dependency> <pectionency> <groupid> org.springframework </groupid> <artifactid> spring-core </artifactid> <버전> $ {srping.version} </version> </dependency> <groupid> org.springframwork </groupid> <artifactid> spring-oxm </artifactid> <bersion> $ {srping.version} </version} </version> </dependency> <groupid> org.springframework </groupId> <artifactid> spring-tx </artifactid> <srping.version} </delponement> </delponement> <groupid> org.springframework </groupid> <artifactid> spring-jdbc </artifactid> <version> $ {srping.version} </version} </version} </version} </version} </dependency> <groupId> org.sprameframework </groupid> <artifactid> spring-aop </artifactid> $ {srping.siversion <srping </dependency> <pectionency> <groupId> org.springframework </groupid> <artifactid> spring-context </artifactid> <버전> $ {srping.version} </version> </dependency> <groupId> org.springframwork </group-actid> spring-contupport </artifactid> <버전> $ {srping.version} </version> </dependency> <pectionency> <groupid> org.springframework </groupid> <artifactid> spring-expression </artifactid> <버전> $ {srping.version} </version> </fectionement> <groupd> org.spramwork <artifactid> Spring-Orm </artifactid> <버전> $ {srping.version} </version} </version> </dependency> <groupId> org.springframework </groupid> <artifactid> spring-web </artifactid> <srping.version} </dependency> <groupid> org.springframework </groupid> <artifactid> spring-webvc </artifactid> <버전> $ {srping.version} </version} </version} </version </eppendency> <groupid> org.sprameframework </groupid> <artifactid> spring-aspects </artifactid> </dependency> <!-스프링 프레임 워크 패키지 엔드-> <!-mybatis 프레임 워크 패키지 시작-> <pectionency> <groupId> org.mybatis </groupid> <artifactid> mybatis </artifactid> <version> $ {mybatis.version} </dectortency> <groupid> org.mybatis> org.mybatis> <Artifactid> mybatis-spring </artifactid> <bersion> 1.2.2 </version> </dependency> <!-mybatis 프레임 워크 패키지 종료-> <!-데이터베이스 드라이버-> <prection> <groupid> mysql </groupid> <artifactid> mysql-connector-java </artifactid> <5.15 </35 </35 </35 </35 <!-ApplicationContext.xml에서 데이터베이스를 구성하기 위해 DBCP JAR 패키지 가져 오기-> <groupid> commons-dbcp </groupid> commons-dbcp </artifactid> <version> 1.4 </version> </dependency> <!-jstl tag class-> jstl> jstl> jstl </groupid> <Artifactid> jstl </artifactid> <bersion> 1.2 </version> </fectionency> <pectionement> <groupId> taglibs </groupId> <artifactid> 표준 </artifactid> <버전> 1.1.2 </version> </fexendence> <! </<groupId> log4J </groupId> <artifactid> <버전> $ {log4j.version} </version> </dependency> <pectionency> <groupid> org.slf4j </groupid> <artifactid> slf4j-api </artifactid> <버전> $ {slf4j.version} </version> </fectionement> <groupid> org.slf4J </groupid> <artifactid> slf4j-log4j12 </artifactid> <bersion> $ {slf4j.version} </version> </dependency> <! <!-로그 엔드-> <!-json-> <-로그 출력을 촉진하기위한 형식 개체-> <groupId> com.alibaba </groupid> <버전> 1.2.6 </version> </dependency> <pectionement> <groupid> org.codehaus.jackson </groupIdson </groupIds> <artifactid> Jackson-Mapper-Asl </artifactid> <9.13 </version> </fectionency> <!-업로드 구성 요소 패키지 시작 --> groupid> commons-fload> <Artifactid> commons-fileupload </artifactid> <bersion> 1.3.1 </version> </dependency> <pectionement> <groupid> commons-io </groupid> <artifactid> commons-io </artifactid> <bersion> 2.4 </version> </dependency> <groupid> commons-codec </groupid> <artifactid> commons-codec </artifactid> <bersion> 1.10 </version> </fectionency> <!-구성 요소 패키지 업로드-> <!-al 관련 첨가-> <pectionency> <groupid> net.sourceforge.jexcelapi </groupid> <artifactid> jxl </artifactid> 2.6 </expence> </version> </version> </version> </version> </version> <groupid> org.apache.poi </groupid> <artifactid> poi </artifactid> <bersion> 3.8 </dependency> <pectionency> <groupid> org.apache.poi </groupid> <artifactid> poi-ooxml </artifactid> 3.9 </version> </delation> <! <빌드> <Finalname> maven_project </finalName> <플러그인> <groupId> org.apache.maven.plugins </groupid> <artifactid> maven-compiler-plugin </artifactid> <bersion> 2.3.2 </version> <source> 1.7 </source> 1.7 </target> </sport> </플러그인> </빌드> </project>그런 다음 데이터베이스 연결을 구성하고 자체 데이터베이스로 변경하십시오.
드라이버 = com.mysql.jdbc.driverUrl = jdbc/: mysql/: // locahost/: 3306/dbusername = rootpassword = rootmaxactive = 20maxidle = 20minidle = 1maxwait = 60000
configuration 파일 spring-dao.xml은 그 아래에서 클래스를 자동으로 찾습니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.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.springfrfringwork.org/schema/schema/schema/schema/schema http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sprging-3.1.xtd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-DAO 인터페이스가 위치한 패키지 이름은 자동으로 클래스를 찾을 수 있습니다. 이 패키지 아래의 매퍼가 검색됩니다. 패키지 사이의 쉼표 또는 세미콜론으로 여러 패키지를 지정할 수 있습니다 -> <속성 이름 = "basepackage"value = "com.lr.dao"/> <속성 이름 = "sqlsessionfactory"ref = "sqlsessionfactory"> </property> </bean> </beans>
구성 파일에 대한 연결 파일은 Spring 및 MyBatis입니다
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.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.springfrfringwork.org/schema/schema/schema/schema/schema http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sprging-4.0.xtext-4 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-구성 파일 소개 :> 컨텍스트 : Property-Placeholder Location ="Classpop. id = "dataSource"Destroy-method = "close"> <속성 이름 = "driver className"value = "com.mysql.jdbc.driver" /> <property name = "url"value = "jdbc : mysql : // localhost : 3306 /db? useunicode = true & characterEnding = utf8" /> <property name = ""userem = " 이름 = "비밀번호"value = "root" /> <!-초기화 크기-> <속성 이름 = "이니셜 크기"값 = "3" /> <!-최대 연결 풀의 최대 수-> <속성 이름 = "maxactive"value = "20" /> <-최대 자유 연결 풀-> <속성 이름 = "maxidle"value = "20" /> <!-최소 프리 연결 풀-> <property name = "20"20 " /> <!-최소 무료 연결 풀-> <속성 이름 = "minidle"value = "1" /> <!-최대 연결 대기 시간을 얻습니다-> <속성 이름 = "maxwait"value = "60000" /> < /bean> <!-스프링 및 mybatis는 완벽하게 통합되어 있으며 MyBatis 구성 맵핑 파일이 필요하지 않습니다. 이름 = "dataSource"ref = "dataSource"/> <!-자동으로 mapping.xml 파일-> <속성 이름 = "mapperLocations"value = "classpath : com/lr/mapper/*. xml"> </property> </beans>
파일을 구성하십시오
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xmlns : p = "http://www.springframework.org/schema/p"xmlns : context = "http://www.springframework.org/schema/aop"xmlns : tx = "http://www.sprringfrfamwork.org/schema/tx" xmlns : mvc = "http://www.springframework.org/schema/mvc"xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/contex 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.spramework.org/schema/spring-tx-3. 글로벌 TX에 jtatransactionManager를 사용하십시오-> <bean id = "transactionManager"> <property name = "dataSource"ref = "dataSource"/</bean> <!-트랜잭션에 참여하는 클래스를 구성-> <aop : config> <aop : pointcut id = "allservemethod ="expression = ")). <AOP : Advisor PointCut-Ref = "AllServicemEthod"AllServiceMethod "Adcide-Ref ="TXADVICE " /> < /aop : config> <!-선언을 사용하여 트랜잭션 구성-> <tx :"txadvice "transaction-manager ="transactionManager "> <tx : methove ="*"" "" "" "" "" "tx x" rollback-for = "java.lang.exception"/> </tx : 속성> </tx : 조언> </beans>
springmvc.xml 파일을 구성하십시오
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.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.springfrfringwork.org/schema/schema/schema/schema/schema http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/sprging-3.1.xtd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <!-자동 스캔-> <context : component-scan base-package ="compontation </>>>>>>>>>>>>>>>>>>>> <lotationtation <contr. <mvc : 기본-서비스 핸들러/> <!-점프 파일의 사전 참조,보기 모드 구성-> <ean> <property name = "prefix"value = "/web-inf/jsp/"/> <property name = "suffix"value = ". 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.lr.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao.dao. id = "baseresultMap"type = "com.lr.dto.user"> <result column = "id"property = "id"propertion = "id"jdbctype = "integer" /> <result column = "name"property = "name"jdbctype = "varchar" /> <result column = "property"property = "age gendation ="jdbctype = "varchar" "jdbctype" jdbctype = "Integer"/> </resultmap> <sql id = "base_column_list"> id, 이름, 이름, 암호, Age </sql> <!-add us us us us us </sql> <!-insert id = "adduser"parametertype = "com.lr.dto.user"> insert (이름, 비밀번호, 연령) value (#{name},#{password},#{{age}) </insert> <!-query user-> <select id = "QueryByPrimaryKey"QueryByPrimaryKey "QueryByPrimaryKey"resultMap = "BaserEsultMap"ParameterType = "java.lang.integer"> select <base_column_list "-ind}}}}}}}} user-> <delete id = "deletebyprimarykey"parametertype = "java.lang.integer"> id = # #{id} {id} </delete> <!-update id = "updateByPrimaryKey"ParameterType = "com.lr.dto.user"> name =#{name}, password =#{password}, age =#{age} 여기서 id =#{id} </update> <select id = "findalluser"resulttype = "com.lr.dto.user"> select *에서 </select> </mapper> package com.lr.dao; import java.util.list; import com.lr.dto.user; public interface iuserdao {// query 사용자 public user querybyprimarykey (int id); // 사용자 public int deletebyprimarykey (int id); // 사용자 공개 int updateByPrimaryKey (사용자 사용자); // 사용자 public int addUser (사용자) 추가; // 모든 사용자 공개 목록 <user> findAllUser ();} package com.lr.service; import java.util.list; import com.lr.dto.user; public interface iuserservice {// query 사용자 public user getUserById (int userId); // public void deleteuser (int id)를 삭제합니다. // USDUDE 사용자 공개 void updateUser (사용자 사용자); // 사용자 공개 void AddUser 추가 (사용자); // 모든 사용자보기 공개 목록 <user> findAllUser ();} 패키지 com.lr.service.impl; import java.util.list; import javax.annotation.resource; import org.springframework.service.service; import com.lr.dao.iuserdao; import com.lr.dto.user; public classe.iuserveric; @suserverice ( "userservice")). iuserservice {@resource private iuserdao userdao를 구현합니다. public iuserdao getUserdao () {return userDao; } public void setUserdao (iuserdao userDao) {this.userdao = userDao; } // query user @override public user getUserById (int userId) {return userDao.queryByPrimaryKey (userId); } // USDOR usuder @override public void updateUser (사용자 user) {userDao.upDateByPrimaryKey (사용자); } // 사용자 삭제 @override public void deleteuser (int id) {userdao.deletebyprimarykey (id); } // 사용자 추가 @override public void addUser (user user) {userDao.adduser (user); } // 모든 사용자 @override public list <user> findAllUser () {return userDao.findAllUser (); }} 패키지 com.lr.controller; import java.util.list; import javax.servlet.http.htttp.httpervletrequest; import org.sprameframework.beans.beans.annotation.autowired; import org.spramework.stereotype.controller; import org.springframwork.ui org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; import com.lr.dto.user; import com.lr.service.iuserservice; @controllerpublic class usercontroller {@autowired private iuservice userservice; public iuserservice getUserservice () {return userErvice; } public void setUserService (iuserservice userervice) {this.userService = userErvice; } // 메인 페이지 @requestmapping ( "/") public String usermgr () {return "showuser"; } // 사용자 추가 @RequestMapping ( "/AddUser") @ResponseBody public void userAdd (user user) {userservice.adduser (user); } // 사용자 삭제 @RequestMapping ( "/deleteUser") @ResponseBody public void deleteUser (int id) {userservice.deleteuser (id); } // user @requestmapping ( "/updateUser") @ResponseBody public void uploadUser (user user) {userservice.upDateUser (user); } // id @requestmapping ( "/showuser")을 기반으로 사용자 찾기 @responsebody public user showuser (int id, model model) {return userervice.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 = "<%= applact.getContxtPath () %>/js/jquery-1.12.4.min.js "> </script> <script type ="text/javaScript "> // user $ (function () {$ ("#add "). on ("click ", addnewuser);}) 함수 addnewuser () {var name = $ .trim ("#txtname "). var password = $ .trim ($ ( "#txtpassword"). val ()); var age = $ .trim ($ ( "#txtage"). val ()); $ .post ( "/ssm/adduser", { "name": name, "password": password, "age": age}, function () {alert ( "Add!")); } // user $ (function () {$ ( "#delete"). on ( "click", deleteuser);}) function deleteuser () {var id = $. trim ($ ( "#deleteid"). val ()); $ .get ( "/ssm/deleteuser", { "id": id}, function () {alert ( "Delete 성공!")); } // 모든 사용자 $ (function () {$ ( "#ind "<tr> <th>"+msg [i]+"</th> <th>".name+"</th> <th>"+msg [i]. // id $ (함수 ( "#find")를 기반으로 사용자 찾기 (function () {$ .Ajax ({type : "post", data : {id : $ ( "#findid"). val ()}, "json", Url : "/ssm/showuser", success : {var str = ""; str+= "<tr> <th>"+user.id+"</th> <th>"+user.name+"</th> <th>"+userword+"</th> <th>"+user.age+"</th> <tt>"#finduserbyid "). $ ( "#update"). on ( "click", updateUser); alert ($. trim ($ ( "#updateId")) alert ($. trim ( "#updateName")))))))). 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, "age": age}, function () {alert ( "modified success!")); } </script> <title> 사용자 관리 </title> </head> <body> <div> <p> 이름 : <입력 유형 = "text"id = "txtname"> </p> <p> 비밀번호 : <입력 유형 = "password"id = "txtPassword"> </p> <p> age : <input type = "text"> <p> <p> <p> <p> <p> id = "add"> add </button> </p> </div> <hr Style = "높이 : 1px; 테두리 : 없음; 테두리 : 1px 점선 #0066cc;" /> <div> <p> 사용자 ID를 입력하십시오 : <입력 유형 = "텍스트"id = "deleteid"> </p> <p> <버튼 id = "delete"> delete </button> </p> </div> <hr style = "높이 : 1px; 테두리 : 없음; 테두리 : 1px 대시 #0066cc;" /> <div> <p> <button id = "FindAllUser"> Query all </button> </p> </div> <div> <table> <thead id = "findall"> <tr> <th> id </th> <th> name </th> <th> 암호 </th> <th> age </tr> </div> <hr 스타일 = "높이 : 1px; 경계 : 없음; 국경-탑 : 1px 점선 #0066cc;" /> <div> <p> 사용자 ID를 입력합니다 : <입력 유형 = "텍스트"id = "findId"> </p> <p> <버튼 id = "find"> query </button> </p> </div> <div> <table> <thead id = "finduserbyid"> <t> <th> id <Th> <th> <Th> <Th> </th> <Th> </div> <hr style = "높이 : 1px; 경계 : 없음; 국경-탑 : 1px 점선 #0066cc;" /> <div> <p> 사용자 ID를 입력합니다 : <입력 유형 = "텍스트"id = "updateId"> </p> <p> 사용자 이름을 입력하십시오 : <입력 = "텍스트"id = "updateName"> </p> <p> 암호 입력 : <입력 유형 = <updatepass "> </p> <p> input type = <ind id> id id> id id id id"id = "indup" id = "update"> modify </button> </p> </div> </body> </html>