最近、開発会社のシステムが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.apach/4.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> <url> http://maven.apache.org </url> <! - バージョン番号を設定するために使用されます - > <プロパティ> <srping.version> 4.0.2.2.2.2.2.2.vations.version> 3.2.8 </mybatis.version> <log4j.version> 1.2.17 </log4j.version> </properties> <! - 使用済みjarパッケージ - > <依存関係> <! - ユニットテスト - > <依存関係> groupid> <artifactid> junit </artifactid> <バージョン> 4.11 </バージョン> </dependency> <! - java eeパッケージ - > <依存関係> groupid> javax </groupid> <artifactid> javaee-api </artifactid> <バージョン> 7.0 </version> </depenceency> <! <groupid> com.fasterxml.jackson.core </groupid> <artifactid> jackson-databind </artifactid> <version> 2.8.8 </version> </dependency> <! - springフレームワークパッケージスタート - > <依存関係> <依存関係> <groupid> org.spramewark </groupid> <artifactid> </artifactid> </artifactid> <バージョン> $ {srping.version} </version> </dependency> <dependency> <groupid> org.springframework </groupid> <artifactid> spring-core </artifactid> <version> $ {srping.version} </version> </dependency> <seplency> <artifactid> spring-oxm </artifactid> <version> $ {srping.version} </version> </dependency> <dependency> <shiplency> <groupid> org.springframework </groupid> <artifactid> spring-tx </artifactid> <バージョン> $ {srping.version} <groupid> org.springframework </groupid> <artifactid> spring-jdbc </artifactid> <version> $ {srping.version} </version> </dependency> <sependency> <shiplency> <groupid> org.springframework </groupid> <artifactid> spring-aop </artifactid> </> < </dependency> <dependency> groupid> org.springframework </groupid> <artifactid> spring-context </artifactid> <version> $ {srping.version} </version> </dependency> <deplency> <groupid> org.sprameframework </groupid> <artifactid> spring-context-support> <バージョン> $ {srping.version} </version> </dependency> <dependency> <groupid> org.springframework </groupid> <artifactid> spring-expression </artifactid> <version> $ {srping.version} </version> </depence> <artifactid> spring-orm </artifactid> <version> $ {srping.version} </version> </dependency> <depenting> <shiplency> <groupid> org.springframework </groupid> <artifactid> spring-web </artifactid> <バージョン> $ {srping.version} <groupid> org.springframework </groupid> <artifactid> spring-webvc </artifactid> <bersion> $ {srping.version} </version> </dependency> <sependency> <shentency> <groupid> org.springframework </groupid> <artifactid </dependency> <! - スプリングフレームワークパッケージエンド - > <! - mybatisフレームワークパッケージスタート - > <依存> <groupid> org.mybatis </groupid> <artifactid> mybatis </artifactid> $ {mybatis.version} </version> </depency> <edpersency> mybatis> <artifactid> mybatis-spring </artifactid> <bersion> 1.2.2 </version> </dependency> <! - mybatisフレームワークパッケージEnd-> <! - databaseドライバー - > <依存関係> <groupid> </groupId> <artifactid> mysql-connector-java </artifactid> <! - dbcp jarパッケージをインポートして、applicationcontext.xmlでデータベースを構成します - > <依存関係> commons-dbcp </groupid> <artifactid> commons-dbcp </artifactid> 1.4 </version> </dependency> < <Artifactid> jstl </artifactid> <バージョン> 1.2 </version> </dependency> <依存関係> <groupid> taglibs </groupid> <artifactid> </artifactid> <バージョン> 1.1.2 </version <バージョン> $ {log4j.version} </version> </dependency> <dependency> <shipid> org.slf4j </groupid> <artifactid> slf4j-api </artifactid> <バージョン> $ {slf4j.version} </version> </dendecency> <dependency> <groupid> <artifactid> slf4j-log4j12 </artifactid> <version> $ {slf4j.version} </version> </dependency> <! - log end-> <! - json-> <! - ログ出力を促進するオブジェクト - > <依存関係> <shipifid> <バージョン> 1.2.6 </version> </dependency> <dependency> groupid> org.codehaus.jackson </groupid> <artifactid> jackson-mapper-asl-asl-asl-asl </version> </dependency> <! - アップロードコンポーネントパッケージ<artifactid> commons-fileupload </artifactid> <version> 1.3.1 </version> </dependency> <seprency> <groupid-> commons-io </groupid> <artifactid> </artifactid> <バージョン> 2.4 </バージョン> </依存関係> <依存関係> <artifactid> commons-codec </artifactid> <バージョン> 1.10 </version> </dependency> <! - アップロードコンポーネントパッケージの終了 - > <! - al関連する追加 - > <依存関係> net.sourceforge.jexcelapi </groupid> <artifactid> jxl < <groupid> org.apache.poi </groupid> <artifactid> poi </artifactid> <version> 3.8 </version> </dependency> <dependency> org.apache.poi </groupid> <artifactid> poi-ooxml </artifactid> <build> <finalName> maven_project </finalName> <Plugins> <groupId> org.apache.maven.plugins </groupid> <artifactid> maven-compiler-plugin </artifactid> <バージョン> 2.3.2 </version> <configuration> </build> </project>次に、データベース接続を構成し、独自のデータベースに変更します。
driver = com.mysql.jdbc.driverurl = jdbc/:mysql/:// locahost/:3306/dbusername = 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://ww.springframework. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context-/spring-context-/spring-contex http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! - パッケージ名があります。スキャンすると、このパッケージの下のマッパーが検索されます。複数のパッケージを指定して、パッケージ間のコンマまたはセミコロンで区切ることができます - > <プロパティname = "basepackage" value = "com.lr.dao"/> <プロパティ名= "sqlsessionfactory" ref = "sqlsessionfactory"> </property> </bean> </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://ww.springframework. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context-4.tpring http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! - 構成ファイルの紹介 - > id = "DataSource" Destroy-Method = "close"> <プロパティ名= "driverclassname" value = "com.mysql.jdbc.driver" /> <プロパティ名= "url" value = "jdbc:mysql:// localhost:3306 /db? name = "password" value = "root" /> <! - 接続サイズの初期化 - > <プロパティname = "hirtingize" value = "3" /> <! - 接続プールの最大数 - > <プロパティ名= "最大"値= "20" /> <! /> <! - 最小フリー接続プール - > <プロパティ名= "minidle" value = "1" /> <! - 最大接続待機時間を取得 - > <プロパティ名= "Maxwait" value = "60000" /> < /bean> <! - spring and mybatisは完全に統合されており、mybatis構成マッピングファイル - <bean = <bean = <bean name = "dataSource" ref = "dataSource"/> <! - 自動的にスキャンmapping.xmlファイル - > <プロパティname = "mapperlocations" value = "classpath:com/lr/mapper/*。xml"> </property> </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://www.springframework. XMLNS:MVC = "http://www.springframework.org/schema/mvc" xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.orgwork.org/schema/schema/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/ (トランザクション管理)トランザクションマネージャー、グローバルTXにjtatransactionManagerを使用 - > <bean id = "transactionmanager"> <Property name = "dataSource" ref = "dataSource" /> < /bean> <! - トランザクションに参加するクラスを構成 - > <aop:config> <aop = "allservemethod" "execution com.lr.service。* name = "*" propagation = "必須" lollback-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://ww.springframework. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context-/spring-context-/spring-contex http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! - 自動スキャン - > <MVC:Annotation-driven/> <MVC:Default-Servlet Handler/> <! - ジャンプしたファイルの事前吸引、ビューモード構成 - > <bean> <プロパティ名= "preperix" value = "/jsp/"/> <プロパティ名= "suffix" value = "。
大丈夫! ! !構成する必要があるファイルは構成されており、操作の波を実行するのに十分です。
次に、バックグラウンドのコードがあります。これには、主にエンティティクラス、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" id="BaseResultMap" type="com.lr.dto.User"> <result column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="password" property="password" jdbcType="VARCHAR" /> <result column="age" property="age" jdbctype = "integer"/> </resultmap> <sql id = "base_column_list"> id、name、password、age </sql> <! - add user-> <insate adduser "parametertype =" com.lr.dto.user " </insert> <! - query user-> <select id = "querybyprimarykey" resultmap = "baseeresultmap" parametertype = "java.lang.integer"> select <inclume ref_column_list "/>ユーザーからid =#{id} </select> < parametertype = "java.lang.integer">ユーザーからの削除id =#{id} </delete> <! - usitleユーザー - > <update id = "updatebyprimarykey" parametertype = "com.lr.dto.user">ユーザーセットname =#{name}、passwerd =#{eagus <select id = "findalluser" resultType = "com.lr.dto.user"> select * fromユーザー</select> </mapper>パッケージcom.lr.dao; import java.util.list; import com.lr.dto.user; public interface iuserdao {// queryユーザーパブリックユーザーquerybyprimarykey(int id); //ユーザーpublic int deleteByPrimaryKey(int id); //ユーザーpublic int updateByPrimaryKey(ユーザーユーザー)を更新します。 //ユーザーpublic int adduser(user user); //すべてのユーザーパブリックリスト<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 updateUser(ユーザーユーザー)を更新します。 //ユーザーpublic void adduser(ユーザーユーザー)を追加します。 //すべてのユーザーを表示public List <user> findalluser();}パッケージcom.lr.service.impl; import java.util.list; import javax.annotation.resource; import org.springframework.stereotype.service; import com.lr.dao.iuserdao; import com.lr.dto.user; import com.l.l.service.iusererervice ")inservice.iuserervice") 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); } //ユーザー@Override public void updateUser(user user){userdao.updatebyprimarykey(user); } // delete user @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.httpservletrequest; Import org.springframework.beans.factory.annotation.autowired; Import org.springframework.stereotype.controller; import inmolg.springframe. org.springframework.web.bind.annotation.requestmapping; Import org.springframework.web.bind.annotation.responsebody; Import com.lr.service.iuserservice; @controllerpublic userervice; public iuserservice getUserservice(){return userservice; } public void setuserservice(iuserservice userservice){this.userservice = userservice; } //メインページ@RequestMapping( "/")public string usermgr(){return "showuser"; } //ユーザーの追加@RequestMapping( "/adduser")@responsebody public void useradd(user user){userservice.adduser(user); } // delete user @requestmapping( "/deleteuser")@responsebody public void deleteuser(int id){userservice.deleteuser(id); } // user @RequestMapping( "/updateUser")@responsebody public void uploadteuser(user user){userservice.updateuser(user); } // id @RequestMapping( "/showuser")に基づいてユーザーを見つけます} //すべてのユーザー@RequestMapping( "/findalluser")@responsebody public list <user> findalluser(){return userservice.findalluser(); }} <%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "Utf-8"%> <!doctype html> <html> <head> <head> <head> <meta charset = "utf-8"> <script type = "text/javascript" src = "< %>/js/jquery-1.12.4.min.js "> </script> <script =" text/javascript "> // add user $("#add ")。on(" click "、addnewuser);})function addnewuser(){$ name = $。 var password = $ .trim($( "#txtpassword")。val()); var age = $ .trim($( "#txtage")。val()); $ .POST( "/ssm/adduser"、{"name":name、 "password": "age":age}、function(){alert( "add sucture!")}); } // delete user $(function(){$( "#delete") $ .get( "/ssm/deleteuser"、{"id":id}、function(){alert( "delete suctune!")}); } // query all users $(function(){$( "#findalluser")。click(function(){$ .ajax({type: "post"、datatype: "json"、url: "/ssm/findalluser"、success:function(msg){var str = ""; str+= "<tr> <th>"+msg [i] .id+"</th> <th>"+msg </th> <th> "+msg </th> <> // id $(function(){$( "#find")。click(function(){$ .ajax({type: "post"、data:{id:( "#findid")。val()}、datatype: "json"、url: "/ssm/showuser"、{var str = "" "" "" str+= "<tr> <th>"+user.id+"</th> <th>"+user.name+"</th> <th>"+user.age+"</th> <tr>" $( "#finduserbyid")。 $( "#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/updetwususer"、{"id":id、 "name":name、 "password":password、 "age":age}、function(){alert( "Modified fursitfuly!")}); } </script> <title>ユーザー管理</title> </head> <body> <div> <p> name:<入力タイプ= "Text" id "txtname"> </p> <p>パスワード:<入力タイプ= "パスワード" id = "txtpassword"> </p> <> <input Type = "text" id = "txtage"> </p> <p> <p> <p id = "add"> add </button> </p> </div> <hr style = "height:1px; border:none; border-top:1pxダッシュ#0066cc;" /> <div> <p>ユーザーIDの入力:<入力タイプ= "Text" id "deleteId"> </p> <p> <butth id = "delete"> delete </button> </p> </div> <hr style = "height; border:none; border-top:1px dashed#006cc; /> <div> <p> <ボタンid = "findalluser"> query all </button> </p> </div> <div> <table> <thead id = "findall"> <tr> <th </th> <th> <th>パスワード</th> <th> age </th> </tr> style = "height:1px; border:none; border-top:1pxダッシュ#0066cc;" /> <div> <p>ユーザーIDの入力:<入力タイプ= "テキスト" id = "findId"> </p> <p> <putton id = "find"> query </button> </p> </div> <div> <thead id = "finduserbyid"> <tr> <th> id </th </th </th </th> </th> </div> <hr style = "height:1px; border:none; border-top:1pxダッシュ#0066cc;" />> <div> <p>ユーザーIDの入力:<入力タイプ= "テキスト" id = "updateId"> </p> <p>ユーザー名の入力:<入力タイプ= "テキスト=" updatename "> </p> <p>パスワードを入力:<入力タイプ=" id = "updatePassword"> </p> <p>ユーザー年齢の入力= "PASDER =" PASDER "PASDER AGE" id = "update">変更</button> </p> </div> </body> </html>