この記事は、環境の構築から始まり、S2SHの段階的な統合から始まるオンラインモールプロジェクトから始まります。このブログ投稿では、主にStruts2、Hibernate4.3、Spring4.2を統合する方法をまとめたものです。
3つの主要なフレームワークを統合するには、まずさまざまな環境を構築することから始めなければなりません。つまり、まず、春、冬眠、およびstruts2の環境を構築して、問題がないことを確認してから統合する必要があります。このブログ投稿が次の順序は次のとおりです。最初にスプリング環境を構築します - >次に冬眠環境を構築します - > springとhibernate-> struts2環境を構築 - > sprutとstruts2を統合します。
1。プロジェクトJARパッケージ全体の管理
春には多くの瓶パッケージがあります。それらをカテゴリに分類し、それらをユーザーライブラリに追加して簡単に管理し、一目でクリアすることをお勧めします。ここでは、SSH全体に必要な基本的なJARパッケージを要約し、次の画像をご覧ください。
図からわかるように、まずスプリングジャーは、スプリング-4.2.4コア、スプリング-4.2.4-AOP、スプリング4.2.4.4ペルサンス、スプリング4.2.4-4-WEBの4つのカテゴリに分けられます。スプリングのすべてのコアパッケージをコアに入れ、AOPに関連するすべてをAOPに配置し、すべてを永続性(冬眠と統合)に保持し、Web(Struts2と統合された)に関連するすべてをWebに入れます。各部品にはどの瓶パッケージがありますか?以下のスクリーンショットをご覧ください。
注:上記の各カテゴリのパッケージには、元のパッケージのすべての瓶が含まれていません。一部のJARファイルは使用されていません。特定のプロジェクトに必要なときに追加するだけです。上の写真は、プロジェクト環境が最も基本的なJARパッケージを構築できるようにするために必要な最も基本的なJARパッケージです。
2。スプリング環境を構築します
JARパッケージの上記のスクリーンショットは、最後に統合されたすべてのJARパッケージです。最初に環境を構築するとき、それらをすべて追加する必要はありません。少しずつ追加できます。これは、各部分のJARパッケージが何であるかを理解するためのより良いものです。もちろん、それらを一度に追加することも可能です。
2.1構成ファイルBeans.xmlと対応するJARパッケージを追加します
新しいプロジェクトを作成し、ユーザーライブラリに独自のライブラリを追加します。 2つの主要なもの、つまりスプリング4.2.4コアとスプリング4.2.4-AOPがあります。 JARパッケージの追加について詳しく説明しません。追加した後、SRCディレクトリにBeans.xmlファイルを追加します。このファイルにはオンラインで多くのテンプレートがあり、Springから提供される例もあります。コピーを取るだけで、次の写真を参照してください。
2.2スプリングのIOC環境をテストします
Spring IOCが正常かどうかをテストするために、通常のJavaクラスjava.util.dateクラスを書いてみましょう。テストプログラムで正常に注入できる場合、SpringのIOC環境が正常に構築されることを意味します。以下にテストケースを書きましょう。
/** * @Description Todo(Springの注釈デバッグを使用して、Spring3.1以降のみをサポートします)このJARパッケージは、Junit Annotationベースのテストをサポートするために特別に使用されています。 JARパッケージはSpring-4.2.4-Core *このjarパッケージにSpringjunit4classrunner.classがあり、@runwith annotation * * annotation @contextconfigurationを使用することを意味します。 @contextconfiguration(locations = "classpath:beans.xml")public class sshtest {@resource private date; @test // spring iocの開発環境をテストpublic void springioc(){system.out.println(date); }}最後に、それは正常に出力できます:木曜日28日22:45:13 CST 2016。これは、日付オブジェクトが春までに注入されたことを示します。これは、スプリングIOC関数が正常であることを確認します。このため、スプリング環境が構築されています。
3.冬眠環境を構築します
Hibernateの環境構造は、筋肉のリバースエンジニアリングを使用しているため、春よりも複雑です。次の手順に従って、冬眠環境を構築します。
3.1対応するJARパッケージを追加します
ここでは、主にユーザーライブラリに2つのJARパッケージを追加します:hibernate4.3.11およびMySQLドライバーパッケージMySQL-Connector-Java-5.1.26は詳細に説明されていません。
3.2新しいデータベースとテーブルを作成します
存在する場合はデータベースをドロップします。データベースショップのデフォルト文字セットUTF8を作成します。ショップを使用します。存在する場合はテーブルをドロップします。テーブルカテゴリ( /*カテゴリ番号、自動成長* / id int not noll auto_increment、 /*カテゴリ名* /タイプVarchar(20)、 /*カテゴリがホットページにあるかどうか、ホットブールデフォルトのデフォルトが表示される可能性があります。
3.3 dBブラウザはMySQLデータベースに接続します
DBブラウザは、MyEclipseのビューウィンドウを指します。どのデータベースとテーブルがMySQLにあるかを直感的に確認できます。 DBブラウザを開く方法:Window-> Open Perspective-> DBブラウザは、DBブラウザ作業ウィンドウを開きます。 DBブラウザがない場合は、次のとおりです。ウィンドウ - > show view-> other-> dbブラウザーを入力して、開くために見つけます。
開いた後、MySQLデータベースへの接続を開始します。右クリック - > dbブラウザウィンドウの空白スペースで新規、次のダイアログボックスがポップアップします。
記入した後、テストドライバーをクリックしてテストします。テストはテストに合格し、データベース接続ドライバーが構成されていることを示し、それを完了します。このようにして、DBブラウザウィンドウでデータベースMySQL 5.6を見ることができます。右クリックして開き、次のようにデータベース内の既存のライブラリとテーブルが表示されます。
3.4 XMLマッピングファイルとSessionFactoryを作成します
SessionFactoryは、セッションの作成に使用されます。次のように作成します。プロジェクト名を右クリックします - > myeclipse-> hibernate機能を追加します。 Hibernate機能を追加しない場合は、[プロジェクトファセット]をクリックします。> Hibernateファセットをインストールすると、次のウィンドウがポップアップします。
次に、Hibernateのサポートを追加します。つまり、hibernate.cfg.xmlマッピングファイルとMyEclipseにSessionFactoryを追加します。ここでは、主にSessionFactory用のパッケージを作成し、デフォルトのパッケージを使用できません。
次に、ドライバーを追加します。以前にドライバーを構成したことがあるため、ここから新しく構成されたドライバーを直接選択できます。
次に、以前に独自のJAR予約を追加したことがあるので、ここで選択する必要はありません。直接完了するだけです。
このようにして、Hibernate構成ファイルとSessionFactoryの作成を完了します。 MyeClipseによって作成されたSessionFactoryにあるものを簡単に見てみましょう。
public class hibernatesessionfactory {private static finallocal <session> threadlocal = new threadlocal <session>(); // SessionFactoryは、SessionFactoryで使用されます。 // SessionFactory:Session Private static Configuration configuration = new Configuration()のファクトリを作成します。プライベートStatic Serviceregistry Serviceergistry; static {// initialize sessionfactory try {configuration.configure(); serviceregistry = new ServiceregistryBuilder()。applySettings(configuration.getProperties())。 sessionfactory = configuration.buildsessionfactory(serviceregistry); // hibernate4でセッションファクトリーを作成する方法e.printstacktrace(); }} private hibernatesessionFactory(){//プライベートコンストラクターメソッドは、新しいオブジェクトのリリースを防ぎ、SessionFactory Singleton} public Static Session getsession()throws hibernateException {session session =(session)threadlocal.get(); //スレッドプールからセッションを取得するif(session == null ||!session.isopen()){//スレッドプールが空である場合、またはセッションの開きが失敗した場合(sessionfactory == null){rebuildSessionFactory(); // sessionFactoryが空の場合、静的部分と同じで再び作成します} session =(sessionfactory!= null)? sessionfactory.opensession():null; // SessionFactoryは空ではなく、セッションスレッドロカル.set(session)を作成します。 //次に、このセッションをスレッドプールに入れて、次回}セッションを返します。 } public static void rebuildSessionFactory(){try {configuration.configure(); serviceregistry = new ServiceregistryBuilder()。applySettings(configuration.getProperties())。 sessionfactory = configuration.buildsessionfactory(serviceregistry); } catch(Exception E){System.err.println( "%%%%%エラーセッションファクターの作成%%%%%"); e.printstacktrace(); }} public static void closessession()throws hibernateException {session session =(session)threadlocal.get(); threadlocal.set(null); if(session!= null){session.close(); }} public static org.hibernate.sessionFactory getSessionFactory(){//パブリックインターフェイスを提供して、外の世界がこのSingleton SessionFactory Return SessionFactoryを取得できるようにします。 } public static configuration getConfiguration(){return Configuration; }} Singleton Pattern and Thread Poolingテクノロジーが主に使用されていることが作成されたHibernatesessionFactoryから見ることができます。理解するのは難しくありません。
3.5リバースエンジニアリングを介してファイルをマッピングするモデルとORMのマッピング
次に、リバースエンジニアリングの使用を開始して、インスタンスオブジェクト、つまりデータベーステーブルに対応するモデルを作成します。 DB Browseraウィンドウで、作成したばかりのテーブルショップを右クリックして、Hibernate Reverse Engineeringを選択して作成を開始します。
構成ファイルに基づいて、注釈に基づいて、作成するには2つの方法があります。開発者の気分に依存します。あなたは選択できます:
次に、次のステップで、ネイティブのプライマリキー自動インクリメントメソッドを選択し、リバースエンジニアリングを完了してモデルとORMマッピングを作成します。
完了後、カテゴリのモデルが生成され、対応するマッピングもhibernate.cfg.xmlファイルで生成されます。構成ファイルと注釈に基づく注釈に基づく以前のマッピングは異なります。
3.6 Hibernate Persistent Databaseのテスト
春と統合されていないため、冬眠環境の単純な構造であるため、注釈を使用する必要はありません。直接新しいサービスによってデータベースへのデータ入力を実行します。
最初にカテゴリサービスインターフェイスと実装クラスを書きます。
public Interface categoryService {public void Save(カテゴリカテゴリ); // Hibernate環境のテストに使用}パブリッククラスCategoryServiceImplを実装しているcategoryservice {@override // spring public void save(category category)との統合はありません(//セッションセッション= hibernatesessionfactory.getSession(); try {//手動トランザクションsession.getTransaction()。begin(); //ビジネスロジックsession.save(category); // session.getTransaction()。commive()を手動で送信します。 } catch(例外e){session.getTransaction()。rollback();新しいruntimeexception(e); }最後に{hibernatesessionfactory.closessess(); }}}以下は、今すぐテストケースに冬眠のテストを追加するためです。
@runwith(springjunit4classrunner.class)@contextconfiguration(locations = "classpath:beans.xml")public class sshtest {@resource private date; @test // spring iocの開発環境をテストpublic void springioc(){system.out.println(date); } @test //テスト /hibernateの開発環境をテストします。統合がないため、新しいpublic void hihernate(){categoryservice categoryservice = new categoryserviceimpl();カテゴリcategory = new Category( "Men's Casuary"、true); categoryservice.save(category); }}データベースを確認したところ、挿入されたばかりのアイテムが多すぎることがわかりました。つまり、冬眠環境に問題はありませんでした。この時点で、冬眠開発環境を構築しました。
4.春と冬眠を統合します
春と冬眠用の開発環境を構築した後、2つを統合し始めました。 SpringとHibernateを統合した後、AOPを使用して、Springが冬眠トランザクションを管理できるようにすることができます。 SpringとHibernateの統合は、主に2つの側面から始まります。1つは必要なJarパッケージをインポートすることであり、もう1つはBeans.xmlファイルを構成することです。以下に、春と冬眠を段階的に統合します。
4.1対応するJARパッケージをインポートします
SpringとHibernate、Spring4.2.4-Persistence、C3P0-0.9.5.1を統合するときにインポートする必要がある2つの主要なJARパッケージがあります。各JARパッケージの特定のJARファイルについては、上記のスクリーンショットを参照してください。ここでは説明しません。次に、beans.xmlファイルの構成を開始します。
4.2データソースDataSourceの構成
最初にDataSourceを構成し、次にhibernate.cfg.xmlの対応する部分を殺すことができます。春に構成されているため、春はこのDataSourceを初期化します。これは、これが完了するために春に任され、hibernate.cfg.xmlの対応する部分を削除することができます。次のように:
<! - com.mchange.v2.c3p0.combopooleddatasourceクラスは、c3p0-0.9.5.1.jarパッケージのcom.mchange.v2.c3p0パッケージにあります - > <bean id = "datasource"> <プロパティネーム= "driverclass" value = "com.mysql.jdbc.driver" /< value = "jdbc:mysql:// localhost:3306/shop"/> <property name = "user" value = "root"/> <property name = "property name" value = "root"/> </bean>
hibernate.cfg.xmlで殺す必要がある部分:
4.3 SessionFactoryの構成
SessionFactoryは、セッションを生成するように構成されています。さらに、hibernateTemplateも可能です。ただし、HibernateTemplateはSpringで提供され、Springに依存するため、HebernateTemplateの代わりにSessionFactoryが使用されます。いつかスプリングが使用されない場合、エラーが報告されます。 SessionFactoryはHibernateによって提供されますが、問題ありません。 hibernateTemplateは依存しすぎています。特定の構成を見てみましょう。
<! - org.springframework.orm.hibernate4.localsessionfactorybean class in org.springframework.orm.hibernate4 Spring-orm-4.2.4.Release.jarパッケージのパッケージ - > <Bean Id = "SessionFactory"> <Propetition name = "DataSource" sufistasoulce " /< value = "classpath:hibernate.cfg.xml" /> <! - hibernate構成ファイルをロード - > < /bean>
SessionFactoryでDataSourceを使用して、REF属性を使用してDataSourceを参照しました。ここでは、構成を使用していません。 hibernate.cfg.xmlファイルを直接ロードし、Hibernate構成ファイルの構成を使用して、より簡潔で便利にします。
4.4トランザクションマネージャーの構成
Configuration Transaction ManagerはSessionFactoryの管理に使用されるため、SessionFactoryによって生成されたすべてのセッションが宣言的に管理されます。構成は次のとおりです。
<! - org.springframework.orm.hibernate4.hibernateTransactionManagerクラスSpring-Orm-4.2.4.Release.jarパッケージin org.springframework.hibernate4パッケージ - > <bean id = "transactionmanager"> <property name = "sessionfactory
同様に、設定されたSessionFactoryを使用して、REF属性を使用して参照できます。この時点で、上からずっとずっと一連の操作であり、それらを1つずつ引用していることがわかります。
4.5アドバイスの構成(通知)
アドバイスを構成する目的は、どのメソッドがどのタイプのトランザクションモードを必要とするかを指定することです。構成を参照してください:
<TX:アドバイスID = "アドバイス" Transaction-Manager = "TransactionManager"> <TX:aTtributes> <tx:method name = "save*" propagation = "/> <tx:属性> </tx:属性> </tx:アドバイス>
必須とは、トランザクションがある場合、現在のトランザクションがサポートされることを意味します。いなくても、新しいトランザクションが作成されます。このトランザクションモードは、保存、更新、削除から始まるすべてのメソッドに適用されます。つまり、データベースを追加、削除、変更するときにトランザクションサポートが必要です。サポートとは、トランザクションがある場合、現在のトランザクションがサポートされ、誰もいない場合は問題ありません。
4.6 AOPファセットの構成
<aop:config> <! - トランザクションを入力するパッケージクラスを構成 - > <aop:pointcut id = "pointcut" expression = "execution(*cn.it.shop.service.impl。*(..)" /> <aop:Advisor Advice-Ref = "PointCut-Ref =" Pointcut " />> <! yahei; "> and pointcut anop> <! - aop:pointcutはaop:アドバイザーに記述する必要があります。
AOPは、接線指向のプログラミングです。 AOP:ポイントカットは接線を定義します。式プロパティの構成は、CN.it.shop.service.implパッケージに基づくすべてのメソッドが、返品値とパラメーターに関係なく、トランザクションを入力する必要があることを意味します。このパッケージはDAOレイヤーに属し、データベースを直接操作します。 AOP:アドバイスは通知とセクションを組み合わせています。上記で構成されたアドバイスとポイントカットを直接使用して紹介できます。この構成の後、CN.it.shop.service.implパッケージに基づくすべてのメソッドがトランザクション管理に入る必要があることを意味します。具体的には、保存、更新、および削除から始まるメソッドは、リクエアされた方法を使用し、その他のメソッドはサポート方法を使用します。これにより、この構成の意味を簡単に理解できます。
4.7テスト統合結果
以前にHibernate環境を構築したとき、データベースを操作するためのサービスを直接新しく新しいものであるとテストしました。ここで、Beans.xmlを構成した後、Springは冬眠トランザクションを管理できます。したがって、現在のテストでは、スプリング管理にサービスを引き渡し、春まで注入し、SessionFactoryに依存する必要があります。データをデータベースに挿入できる場合、トランザクションが問題ないことを意味します。
まず、このサービスをSpringの構成ファイルBeans.xmlで一致させる必要があります。
次のようにコードをコピーします:<bean id = "CategoryService">
<プロパティ名= "sessionfactory" ref = "sessionfactory" /> <! - 依存関係セッションファクトリーは、以前に装備していたセッションファクトリーを使用します - >
</bean>
第二に、統合状況をテストするには、CategoryServiceインターフェイスとその実装クラスカテゴリServiceImplにメソッドを追加する必要があります。
public Interface categoryService {public void Save(カテゴリカテゴリ); // Hibernate Environment Public Void Update(カテゴリカテゴリ)のテストに使用されます。 // springとhibernateの統合をテストするために使用try {//手動トランザクションsession.getTransaction()。begin(); //ビジネスロジックsession.save(category); // session.getTransaction()。commive()を手動で送信します。 } catch(例外e){session.getTransaction()。rollback();新しいruntimeexception(e); }最後に{hibernatesessionfactory.closessess(); }} /*スプリングと冬眠* / private sessionfactory sessionFactory; // sessionfactoryを定義する// sessionfactoryを使用する必要がある場合、SpringはSessionFactoryをpublic void setSessionFactory(SessionFactoryFactory)に挿入します{this.sessionFactory = sessionFactory; }保護されたセッションgetSession(){//現在のスレッドからセッションを取得します。そうでない場合は、新しいセッションを作成します。SessionFactory.getCurrentssession(); } @Override //春と冬眠後の状況は統合されたpublic void update(category category){getsession()。update(category); }}これで、テストメソッドをテストクラスに追加して、スプリングと冬眠の統合後に結果をテストできます。
@runwith(springjunit4classrunner.class)@contextconfiguration(locations = "classpath:beans.xml")public class sshtest {@resource private date; @Resource Private CategoryService CategoryService; @test // test spring ioc開発環境public void springioc(){system.out.println(date); } @test // test // hibernateの開発環境をテストします。統合がないため、新しいpublic void hihernate(){categoryservice categoryservice = new categoryserviceimpl();カテゴリcategory = new Category( "Men's Casuary"、true); categoryservice.save(category); } @test // public void hibernateandspring(){categoryservice.update(new category(1、 "casuare women's"、true)); //上から春から注入されたカテゴリセルビス}}次に、データベースを確認して、ID = 1のカテゴリがカジュアルな女性のスタイルに変更されていることを発見しました。つまり、アップデートが成功したことを意味します。この時点で、春と冬眠が正常に統合されています。
5. struts2環境を構築します
5.1対応する構成とJARパッケージを追加します
Struts2がStruts2.3.41のライブラリで実行されるために必要なJARパッケージを入れたので、直接紹介することはできます。繰り返しません。さらに、web.xmlファイルを次のように構成する必要があります。
<?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 xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/ns/javaee/web-app_0.0.0.xsd" "id" "id" id "id" webaee/wweb-app_0.xsdd <display-name> e_shop </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <filter> struts2 </filter-name> <filter-class> <フィルターマッピング> <filter-name> struts2 </filter-name> <url-pattern>*。アクション</url-pattern> </filter-mapping> </web-app>
上記のように、strutSprepareandexecutefilterフィルターを構成し、フィルターのURLパターンを *.Actionに設定します。つまり、すべてのフィルターを最初に通過します。これはStruts2の入り口でもあります。
5.2アクションを作成し、struts.xmlファイルに構成します
次のようにアクションを作成します。
パブリッククラスのカテゴリ作用は、ActionSupportを拡張します{private categoryservice categoryservice; // categoryserviceは、Spring public void setcategoryService(categoryservice categoryservice)との統合の前後に違いを直感的に確認するように設定されています{this.categoryService = categoryService; } public String update(){System.out.println( "----更新----"); system.out.println(categoryservice); //異なるリターン「インデックス」を出力します。 } public string save(){system.out.println( "---- save ----"); system.out.println(categoryservice); //統合前後の異なるリターン「インデックス」を開きます。 }}次に、struts.xmlファイルを構成します。これは、srcディレクトリに配置されています。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype struts public " - // apacheソフトウェア財団// dtd struts構成2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd" category_update.actiocan:アクセス更新方法 - > <アクションname = "category_*" method = "{1}"> <result name = "index">/index.jsp </result> </action> </package> </struts> 5.3 Struts2環境のテスト
テスト方法は次のとおりです。JSPアクセスアクションを作成し、アクションを作成できる場合、Struts2環境が問題ないことを意味します。つまり、struts2の一連のプロセスは正常に完了できます:jsp - > struts.xml-> action-> struts.xml-> jsp。簡単なindex.jspを書きましょう
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "UTF-8"%> <!doctype html public " - // w3c // dtd html 4.01 transitional // en"> <html> <head> <title> jsp 'index.jsp' fire <アクセス - > </span> <a href = "$ {pagecontext.request.contextpath}/category_update.action">アクセス更新</a> <a href = "category_save.action">アクセス保存</a> </body> </html>次に、次のプロジェクトを展開し、Tomcatサーバーを開き、http:// localhost:8080/e_shop/index.jspをブラウザに入力します。通常のJSPページが表示され、2つのボタンをクリックして、index.jspにジャンプしてから、コンソールの出力情報を見てみましょう。
- -アップデート - -
ヌル
- -保存 - -
ヌル
これは、Struts2のラインが完了しており、環境に問題がないことを示しています。この時点で、Struts2開発環境が構築されました。
コンソールはnullを出力することがわかります。つまり、カテゴリサービスが空であることを意味します。つまり、春と統合されておらず、注入されていないため、nullは正常であるため、カテゴリサービスをまったく持っていません。コンソールからの情報出力に沿って跳ね上がると、メッセージが見つかります。ブラケットによると、StrutsはStruts2によって生成される前にStruts2によって生成されます。
6。スプリングとstruts2の統合
6.1対応するJARパッケージを追加します
SpringとStruts2が統合されると、JARパッケージは主にStruts2-Spring-Plugin-2.3.24.1.jarを含むSpruts2.2.4-Webです。ガイドパッケージについては再び説明しません。
6.2アクションとその依存関係をスプリング管理に任せます
Springの構成ファイルBeans.xmlでアクションとその依存関係を構成します。現在、次のように構成されているアクションは1つだけです。
<bean id = "date" /> <bean id = "categoryaction" scope = "prototype"> <プロパティ名= "categoryservice" ref = "categoryservice" /> <! - 依存するカテゴリサービスは上記と冬眠を統合するときに構成されます - > < /bean>
6.3 struts.xmlの構成を変更します
struts.xmlでは、クラス属性が特定のアクションの完全に適格な名前に対応することがわかります。次に、クラス属性の値をSpringの設定されたアクションのID値、つまりカテゴリに次のように変更します。
<struts> <パッケージname = "shop" extends = "struts-default"> <! - クラスは、春に設定されたアクションのID値に対応します。
6.4リスナーを構成します
Web.xmlでリスナーContextLoaderListenerを構成して、サーバーの起動時にSpring構成ファイルをロードできるようにします。次のように:
<?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 xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/ns/javaee/web-app_0.0.0.xsd" "id" "id" id "id" webaee/wweb-app_0.xsdd <display-name> e_shop </display-name> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <filter> struts2 </filter-name> <filter-class> <フィルターマッピング> <filter-name> struts2 </filter-name> <url-pattern>*。アクション</url-pattern> </filter-mapping> <! - web.xmlのリスナーの起動の優先順位はフィルターよりも高いため、以下に一致しているかどうかは関係ありません - > <リスナー> <リスナークラス> org.springframework.web.context.contextloaderlistener </ristener-class> </ristener> <context-param> <param-name> contextconfiglocation </param-name> <param-value> classpath:beans.xml </parmalue
6.5テスト統合結果
次のように、データベースを更新するためにアクションに新しいステートメントを追加します。
パブリッククラスのカテゴリ作用は、ActionSupportを拡張します{プライベートカテゴリカテゴリ; //プライベートメンバー変数を設定して、URLによって提起されたパラメーターを受信します。 GETおよびSETメソッドを以下に記述する必要があることに注意してください。プライベートカテゴリサービスカテゴリサービス。 public void setCategoryService(CategoryService CategoryService){this.categoryService = categoryService; } public string update(){System.out.println( "--- update ---"); System.out.println(categoryService); // Springと統合されているため、このカテゴリサービスを取得できます。カテゴリService.update(category)を印刷した後はnullではありません。 //新しいステートメントを追加して、データベースの返された「インデックス」を更新します。 } public string save(){system.out.println(categoryservice); 「インデックス」を返します。 } public category getCategory(){return category; } public void setCategory(カテゴリカテゴリ){this.category = category; }}次に、次のようにindex.jspファイルを変更します。
<%@ページ言語= "java" import = "java.util。*" pageencoding = "utf-8"%> <!doctype html public " - // w3c // dtd html 4.01 transitional // en"> <html> <head> <title 'index.jsp'開始ページhref = "$ {pagecontext.request.contextpath} /category_update.action?category.id=2&category.type=gga&category.hot=false">アクセスアップデート</a> <a href = "category_save.action"次に、次のプロジェクトを展開し、Tomcatサーバーを開き、http:// localhost:8080/e_shop/index.jspをブラウザに入力します。通常のJSPページが表示され、index.jspにジャンプしてからジャンプしてから、コンソールの出力情報を見てみましょう。
---更新--- CN.IT.SHOP.SERVICE.IMPL.CAGETORYSERVICEIMPL@7C5ECF80 HIBERNATE:更新カテゴリSET HOT =?、TYPE =?どこでid =?
CategoryServiceオブジェクトの情報を出力でき、更新ステートメントを実行するときにSQLステートメントを出力することもできます。次に、データベースを照会し、ID = 2のデータのタイプがGGAに更新され、HOTがFALSEに更新されていることがわかります。コンソールからの情報出力を上向きにフリップすると、ブラケットが湧き出る(com.opensymphony.xwork2.objectfactory)for(com.opensymphony.xwork2.objectfactory)を選択するメッセージが見つかります。上記の状況と比較して、Struts2がSpringと統合された後、アクションは管理のためにSpringに引き渡されることがわかります。
この時点で、struts2、hibernate4、およびspring4の統合が完了しており、次にSSH環境でそれを開発できます!
この記事で紹介されたSSH統合に必要な完全なJARパッケージ:無料ダウンロード
ソースコードのダウンロードプロジェクト全体のアドレス://www.vevb.com/article/86099.htm
元のアドレス:http://blog.csdn.net/eson_15/article/details/51277324
(注:最後に、プロジェクト全体のソースコードのダウンロードが提供されます!誰もが収集またはフォローすることを歓迎します)
上記は、この記事のコンテンツ全体です。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。