ストラットに加えて、主流のWeb MVCフレームワークには現在、Spring MVCもあります。これは主に、Spring MVCが構成が比較的簡単で、使用が非常に明確であるためです。それは非常に柔軟で、春と良好な統合を持ち、ストラットよりも安らかなAPIをよりよくサポートしています。
MyBatisはIbatisのアップグレードバージョンです。 Hibernateの古いライバルとして、SQL、ストアドプロシージャ、および高度なマッピングをカスタマイズできる永続的なレイヤーフレームワークです。
Hibernateの主な違いは、MyBatisが半自動化されているのに対し、Hibernateは完全に自動であるため、アプリケーション要件がますます複雑になると、自動化されたSQLはより不器用に見えることです。
しばらく前にプロジェクトに参加して以来、SpringMVCを使用してそれを行うことを望んでいたので、フレームワークを練習態度と統合するゲームをプレイし始めました。しばしばフレームを構築する人は、フレームビルディングのコアが構成ファイルであることを知っている必要があります。そのため、主にいくつかの構成ファイルコードを投稿します。同じことが私にも当てはまります。構成ファイルを書いた後、エラーを実行してJARを追加しました。これが私が使用するjarパッケージです(最小限であるはずです):
注:上の写真にはいくつかの余分な瓶があります。たとえば、私が使用するデータベース接続プールは、Alibabaのドルイドとログフレームベースのログバックであるため、関連するジャーが導入されています。これら2つのフレームワークの使用と構成は非常に簡単ですので、ここでは詳細には記載されていません。
1。SpringMVCを統合します
springmybatis-servlet.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:Context = "http://www.springframework.org/schema/context" xmlns:mvc = "http://www.springframework.org/schema/mvc" xsi:schemalocation = " http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xcsd <! - パッケージ名を自動的にスキャンして、注釈付きコントローラーなどのコンポーネントの自動検出をスプリングサポートします - > <コンテキスト:component-scanベースパッケージ= "com.alibaba.controller" /> <コンテキスト:component-scanベースパッケージ= "com.alibaba.service" />> <! id = "ViewResolver"> <プロパティ名= "prefix" value = "/web-inf/jsp/"/> <プロパティname = "suffix" value = "。jsp"/> <! - 拡張機能に基づいてビュー解釈クラスのロジックを実装するのに便利です - > </bean> <! - インターセプターを構成します。 <MVC:Interceptor> <! - 一致するURLパス - > <MVC:マッピングパス= "/user/**"/> <mvc:マッピングpath = "/test/**"/> <bean> </mvc:interceptor> <!-複数のインターセプターを設定するとき、最初のインターセプターを設定したとき、シーケンスの前後のメソッドを呼び出します。逆の順序で - > </mvc:インターセプター> </beans>
2。mybatisを統合します
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:mybatis = "http://mybatis.org/schema/mybatis-spring" xmlns:context = "http://www.springframework.org/schema/context" xsi:schemalocation = " http://www.springframework.org/schema/beans/spring-beans.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <! - このパッケージの下のクラスは、消費をサポートしているため、@cumpatis appersis appersis appersis appersis appersは、その処理を示しています。クラスを自動的に導入できます - > <mybatis:scan base-package = "com.alibaba.dao"/> <! - 紹介プロパティファイル - > <コンテキスト:classpath:configuration.properties "/> <! - データベース接続 - > <bean id =" bean id = "colad =" init-method = "" unt " value = "$ {jdbc.url}"/> <property name = "username" value = "$ {jdbc.username}"/> <プロパティname = "password" value = "$ {jdbc.password}"/> < name = "maxactive"> <value> 5 </value> </property> <property name = "minidle"> <balue> 1 </value> </property> <! - 接続待機時タイムアウトを取得する時間を設定 - > <プロパティ名 "> <値> <値> 60000 </value> </property> <! name = "filters"> <value> stat> stat </value> </property> <! - 検出インターバルを実行して閉じる必要があるアイドル接続を検出するのにかかる時間を構成します。 name = "minevictableidletimemillis"> <value> 300000 </value> </property> <! - <property name = "validationquery"> <balue> select 'x' </value> </property> <property name = "testwhileidle =" testwhileidle " name = "testonreturn"> <balue> false </value> </property> <property name = "poolpreparedStatements"> <balue> true </value> </property> <property name = "maxopenpreparedStatements"> <value> 20 </value> </property> - > </bean> < name = "dataSource" ref = "dataSource"/> </bean> </beans> 3.web.xmlはSpringMVCとMyBatisを統合します
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/nns/javaee xmlns:web = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"バージョン= "3.0"> <! to / static / directory。たとえば、http://localhost/foo.cssにアクセスしたとき、今http://localhost/static/foo.css-> <! - 静的ファイルをインターセプトしないでください - > <servlet-name>デフォルト</servet-name> <url-pattern/js/*</ur-diptern> <url-pattern>/css/*</url-pattern> <url-pattern>/amiges/*</url-pattern> <url-pattern>/fonts/*</url-pattern> </servlet-mapping> <! - 文字セットの設定 - > <フィルター> <フィルター> <フィルター名> encodingfilter </filter-name> <filter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <init-param> <param-name> encoding </param-name> <param-value> utf-8 </param-value> </init-param> <init-name> farm-name> form-name> form-name> <param-value> true </param-value> </init-param> </filter> <filter-mapping> <filter-name> encodingfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!そこにある関連する豆は、グローバルに定義された豆を無効にします - > <Servlet> <Servlet-Name> SpringMyBatis </servlet-name> <servlet-class> org.springframework.dispatcherservlet </servet-class> <load-on-startup> <Servlet-Name> SpringMyBatis </servlet-name> <! - すべてのリクエストはDispatcherservlet--> <url-pattern>/</url-pattern> </servet-mapping> <context-param> <param> <param> <param> <param> <param> <param> <param> <param-name> <param-value> <リスナー> <リスナークラス> org.springframework.web.context.contextloaderlistener </ristener-class> </ristener> <! - druid web監視 - > <servlet> <servlet-name> druidstatview </servlet-name> <サーブレットクラス> com.alibaba.druid.support.http.statviewservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> druidstatview </servlet-name> <url-pattern>/druid/*</url-perters> </vertertn> </perpertn> </pert-mapping> <location>/error/404.jsp </location> </error-page> <error-page> <error-code> 500 </error-code> <location>/error/500.jsp </location> </error-page> </web-app>
4.logback.xmlログ構成
<?xml version = "1.0" encoding = "utf-8"?> <configuration> <appender name = "stdout"> <encoder> <pattern>%d {hh:mm:ss.sss} [%swrep] level = "trace" /> <logger name = "com.alibaba.controller.testcontroller" level = "trace" /> <logger name = "org.springframework.dispatcherervlet" level = "debug" /> <logger name = "druid.sql" /> Spring-Config、SQLログは表示されません。 LogbackはSLF4Jの実装にすぎません - > <rootレベル= "debug"> <appender-ref ref = "stdout"/> </root> </configuration> 5。configuration.properties configuration
jdbc.url = jdbc/:mysql/:// localhost/:3306/druid?useunicode/= true&charatereCoding/= utf-8&zerodateTimebehavior/= converttonull jdbc.username = root jdbc.password = 123456
6.構築が成功しているかどうかをテストします、背景コード
まず、ログインして、暗号化を使用して、削除できます
パッケージcom.alibaba.controller; javax.annotation.resourceをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 org.apache.commons.codec.digest.digestutilsをインポートします。 org.slf4j.loggerをインポートします。 org.slf4j.loggeractoryをインポートします。 org.springframework.stereotype.controllerをインポートします。 org.springframework.web.bind.annotation.requestmappingをインポートします。 org.springframework.web.bind.annotation.RequestMethodをインポートします。 Import org.springframework.web.bind.annotation.RequestParam; com.alibaba.model.userをインポートします。 com.alibaba.service.userserviceをインポートします。 com.alibaba.util.requestutilをインポートします。 / ** * @author tfj * 2014-7-26 */ @Controller public class SystemController {private final logger log = loggerfactory.getLogger(SystemController.Class); @Resourceプライベートユーザーサービスユーザーサービス。 @RequestMapping(value = "/"、method = requestmethod.get)public string home(){log.info( "return to homepage!"); 「インデックス」を返します。 } @RequestMapping(value = "/test/hello"、method = requestmethod.get)public string testhello(){log.info( "testhelloメソッドを実行!"); 「testhello」を返します。 } @RequestMapping(value = "/login"、method = requestmethod.post)public string testlogin(httpservletrequest request、 @requestparam string username、 @requestparam string password){log.info( "testlogin method!"); user user = userservice.finduserbyname(username); if(user!= null){if(user.getPassWord()。equals(digestutils.md5hex(password))){request.getSession()。 request.getSession()。setAttribute( "user"、username); "redirect:" + requestutil.retrievesavedRequest(); //アクセスページへのスキップ} else {log.info( "password error"); request.getSession()。setAttribute( "message"、 "ユーザー名とパスワードが間違っています。もう一度ログインしてください"); 「ログイン」を返します。 }} else {log.info( "ユーザー名は存在しません"); request.getSession()。setAttribute( "message"、 "ユーザー名は存在しません。もう一度ログインしてください"); 「ログイン」を返します。 }}}私はサービスとモデルについて書くことはありません、私はmybatisのマッパークラスマップについて書きます
<?xml version = "1.0" encoding = "UTF-8"?> < id = "finduserbyname" resultType = "com.alibaba.model.user"> select id、username、sysuser from sysuser where username =#{username} </select> </mapper> 7.フロントデスクJSPは主にログインとログインが成功するページなので、私はそれを書きません
スクリーンショットを投稿する:
この時点で、SpringMVC+MyBatisの統合が成功しました。その後、複雑な機能を追加します
注意すべきこと
1.フレームワークのドルイドとログバックの構成は公式ウェブサイトからコピーされるため、すべてが最も基本的です。読者はそれらを無視するか、C3P0やLog4Jなど、読者がよく知っているデータベースコンポーネントとログフレームワークに置き換えることができます。
2。コードには許可管理が追加されていることは、アクセスする前にログインしてからログイン後にアクセスするページにジャンプする必要があります。SpringMVCの許可管理については、http://www.vevb.com/article/99569.htmをご覧ください。
3.この記事は、テストコードから剥奪された最も単純で最も基本的なコードです。剥奪されていないエリアのいくつかを許してください。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。