1はじめに
MVCフレームワークとは何ですか
MVCのフルネームはモデルビューコントローラーであり、モデルビューコントローラーの略語です。ソフトウェア設計モデルです。ビジネスロジック、データ、インターフェイスディスプレイの分離方法を使用してコードを整理し、ビジネスロジックをコンポーネントに収集します。インターフェイスとユーザーのインタラクションを改善およびパーソナライズしている間、ビジネスロジックを書き直す必要はありません。 MVCは、論理的なグラフィカルユーザーインターフェイス構造に従来の入力、処理、および出力機能をマッピングするために独自に開発されています。
Model-View-Controller(MVC)は、設計インターフェイスアプリケーションに基づいたよく知られた設計パターンです。主に、アプリケーションでのモデル、ビュー、コントローラーの役割を分離することにより、ビジネスロジックをインターフェイスから切り離します。通常、モデルはビューレイヤーのアプリケーションデータをカプセル化する責任があります。ビューにはこのデータのみが表示され、ビジネスロジックは含まれていません。コントローラーは、ユーザーからリクエストを受信し、ビジネスロジックを処理するためのバックグラウンドサービス(マネージャーまたはDAO)を呼び出す責任があります。処理後、バックグラウンドビジネスレイヤーは、ビューレイヤーに表示されるデータを返す場合があります。コントローラーはこのデータを収集し、ビューレイヤーに表示されるモデルを準備します。 MVCモデルの中心的なアイデアは、ビジネスロジックをインターフェイスから分離し、互いに影響を与えることなく個別に変更できるようにすることです。
SpringMVCアプリケーションでは、モデルは通常、POJOオブジェクトで構成されており、ビジネスレイヤーで処理され、持続層に持続します。ビューは通常、JSP Standard Tag Library(JSTL)に記載されているJSPテンプレートです。コントローラー部品はDispatcherServletによって管理されており、このチュートリアルで詳細を確認します。
一部の開発者は、ビジネス層とDAO層のクラスがMVCモデルコンポーネントの一部であると考えています。私はこれについて異なる意見を持っています。ビジネスレイヤーとDAOレイヤークラスがMVCフレームワークの一部であるとは思いません。通常、Webアプリケーションは3層アーキテクチャ、つまりデータサービスの表現です。 MVCは実際にはプレゼンテーションレイヤーの一部です。
ディスパッチャーサーブレット(スプリングコントローラー)
最もシンプルなSpring MVCアプリケーションでは、コントローラーがJava Web展開説明ファイル(つまり、Web.xmlファイル)で構成する必要がある唯一のサーブレットです。スプリングMVCコントローラー - 一般にディスパッチャーサーブレットとして知られているため、フロントエンドコントローラーの設計パターンを実装します。また、各Webリクエストは、リクエストライフサイクル全体を管理できるように、それを通過する必要があります。
WebリクエストがSpring MVCアプリケーションに送信されると、ディスパッチャーサーブレットが最初にリクエストを受信します。次に、Spring Webアプリケーションコンテキスト(実際のリクエスト処理コントローラーやビューリゾルバーなど)で構成されたコンポーネントを編成するか、アノテーション構成を使用します。これらはすべてリクエストを処理する必要があります。
スプリング3.0のコントローラークラスを定義します。これは、@Controllerアノテーションでマークする必要があります。 @Controller Annotationを備えたコントローラーがリクエストを受信すると、リクエストを処理する適切なハンドラーメソッドが探しられます。これには、コントローラーが1つ以上のハンドラーマッピングを介して各リクエストをハンドラーメソッドにマッピングする必要があります。これを行うには、コントローラークラスの方法を@RequestMapping Annotationで装飾する必要があります。
ハンドラーメソッドがリクエストを処理した後、ハンドラーメソッドの戻り値と同じビュー名でビューにコントロールを委任します。柔軟な方法を提供するために、ハンドラーメソッドの返品値は、ビューの実装を表すのではなく、論理的なビュー、つまりファイル拡張機能はありません。これらの論理ビューを正しい実装にマップし、これらの実装をコンテキストファイルに書き込むことができ、ハンドラークラスを要求するコードを変更せずにビューレイヤーコードを簡単に変更できるようにします。
論理名の正しいファイルを一致させることは、ビューリゾルバーの責任です。コントローラークラスがビューの実装にビュー名を解析したら。ビューによって実装されたデザインに従って、対応するオブジェクトをレンダリングします。
2瓶パッケージをインポートします
少なくともこれらがあるはずです。
3つの構成ファイル
3.1 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> springmvc_helloworld </display-name> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> index.htm </welcome-file> <welcome-file> index.jsp </welcome-file> <welcome-file> default.html < <welcome-file> default.jsp </welcome-file> </welcome-file-list> <! - spring mvc-> <! - 初期化後、DispatcherServletは/web-inf/下のspringmvc-servlet.xmlファイルを直接探します。サーブレット名のパラメーター定義は、XMLファイルに対応する必要があります - > <Servlet> <Servlet-Name> SpringMVC </servlet-name> <servlet-class> org.springframework.dispatcherservlet </servet-class> <load-on-startup> <Servlet-Name> springMVC </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name> contextconfiglocation </param-name> <param-value> classpath:applicationcontext.xml </param-value> <リスナークラス> org.springframework.web.context.contextloaderlistener </ristener-class> </ristener> </web-app>
3.2 SpringMVC-Servlet.xml
このファイルの名前は、Web.xmlで構成されたDispatcherServletの<Servlet-Name> </servlet-name>によって決定されます。パスはコンテキスト/web-inf/にあります。これは、主に論理ビュー名とコントローラーによって返される物理ビューとの間に対応する関係を構成します。
<?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:aop = "http://www.springframework.org/schema/aop" xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:context = "http://www.springfrimework xsi:schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <! - 自動スキャンパッケージ - > ID = "ViewResolver"> <プロパティ名= "ViewClass" Value = "org.springframework.web.servlet.view.jstlview" /> <! - コントローラーは、物理的なビューに戻る後に論理ビュー名を返します - > <プロパティ名= "property name =" prefix "value =" /jsp /jsp /" /" </bean> </bean>
4ドメインクラスを書きます
いくつかの提出データをカプセル化するために使用されます
パッケージcom.lin.helloworld.domain; public class helloworld {private string data; public helloworld(){super();} public helloworld(} public helloworld(string data){super(); this.data = data;} public string getdata(){return data;} public void setdata(wublide = public data; 「HelloWorld [data = " + data +"] ";}} 5書き込みコントローラー
これはMVCのコントローラーです。 Struts2とは異なるのは、メソッドレベルのインターセプトであり、Struts2がクラスレベルのインターセプトであることです。
パッケージcom.lin.helloworld.controller; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.annotation.Requestmapt. com.lin.helloworld.domain.helloworld; @controllerpublic class helloworldcontroller {// here/helloはstruts2のアクションと同等です。 namemodelandview modelandview = new ModelandView( "Helloworld"、 "msg"、 "helloworld !!!"); return modelandview;} // viewにオブジェクトを返す//@modelattribute( "obj")は、struts2のアクションクラスのアクションクラスのフィールドに相当します。フォームの提出:<入力名= "obj.data" //送信データはOBJオブジェクトのデータにカプセル化されています// springmvcは:<input name = "data" //提出されたデータはobjオブジェクトのデータにカプセル化されています。 helloworld(@modelattribute( "obj")helloworld obj){system.out.println(obj.tostring()); modelandview modelandview = new modelandview( "helloworld"、 "obj"、obj); return modelandview;}}}6つのビュー
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "Utf-8"%> <%string path = request.getContextpath(); string basepath = request.getscheme()+"://"+request.getServername()+":"+request.getServerport( " - // w3c // dtd html 4.01 transitional // en"> <html> <head> <head> <base href = "<%= basepath%>" rel = "real =" letional nofollow "> <title> my jsp 'helloworld.jsp'スタートページ</title> <meta http-equiv =" pragma ">" http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "content =" 0 "> <meta http-equiv =" keyword1、keyword3 "keyword3"> <meta http-equiv = "content =" type = "text/css" href = "styles.css" rel = "external nofollow"> - > </head> <body> helloworld!これはスプリングMVCフレームワークの例です。 name = "data"はオブジェクトの提出されたものに自動的に対応します - > <入力タイプ= "テキスト" name = "data" size = "30"/> <br/> <入力タイプ= "value =" submit "/> </form> <hr/> $ {obj.data} </body> </html>7ディレクトリ構造
要約します
上記は、この記事のSpringMVCエントリの例に関するすべてです。誰にとっても役立つことを願っています。興味のある友達は引き続きこのサイトを参照できます:
springMVCシンプルログイン例のJavaプログラミングの実装
SpringMVCプログラミングは、コントローラーインターフェイスを使用してコントローラーインスタンスコードを実装しています
SpringMVCインターセプターが監視セッションが期限切れになるかどうかの詳細な説明
欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました。