Spring MVCの使用の最初に、簡単な理解
まず、MavenのWebプロジェクトをビルドする、最も簡単なMVCプロジェクトがちょうどだろう
<依存> <groupIdを> org.springframework </ groupIdを> <たartifactId>春webmvc </たartifactId> <バージョン> 5.1.7.RELEASE </バージョン> </依存関係> //注の設定範囲、および自己Tomcatを防ぐために瓶との競合 <依存> <groupIdを>のjavax.servlet </ groupIdを> <たartifactId>のjavax.servlet-API </たartifactId> <バージョン> 4.0.1 </バージョン> <スコープ>提供</スコープ> </依存関係> //該当しない場合は、JSP、あなたが設定することはできません 。<依存> <groupIdを>のjavax.servlet </ groupIdを> <たartifactId> JSTL </たartifactId> <バージョン> 1.2 </ version>の </依存関係>
web.xmlの最も単純な構成
<?xml version = "1.0"エンコード= "UTF-8"?> の<web-appののxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns = "のhttp:// javaのsun.comの/ XML / NS / JavaEEの"のxmlns:ウェブ= "http://java.sun.com/xml/ns/javaee" のxsi:schemaLocationの =" http://java.sun.com/xml/ns / JavaEEのhttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd」 ID = "WebApp_ID"バージョン= "3.0"> <! -ルートIOC - > <表示名>研究Spring MVCの</表示名> の<servlet> の<servlet-name>ののDispatcherServlet </サーブレット名> <servlet- クラス > org.springframework.web.servlet。DispatcherServletの</ servlet- クラス > の<init-param>の <PARAM名> contextConfigLocation </ PARAM名> の<param-value>のクラスパス:/spring-mvc.xml </ PARAM値> </ INIT-param>の </サーブレット> <サーブレットマッピング> <サーブレット名>のDispatcherServlet </サーブレット名> の<url-pattern> / </のurl-pattern> </のservlet-mapping> <歓迎-ファイル・リスト> <歓迎-ファイル> /index.htmlが</歓迎ファイル> </歓迎のファイルリスト> </ web-app>の
web.xmlでの初期化パラメータの特定の名前に合わせて、ディレクトリのXML設定ファイルで作成されたMVCのリソースは、コンポーネント使用されるソースコード解析の最も基本的な構成されています
<?xml version = "1.0"エンコード= "UTF-8"?> <豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org / 2001 / XMLスキーマ・インスタンス" のxmlns:コンテキスト = "http://www.springframework.org/schema/context" のxmlns:MVC = "http://www.springframework.org/schema/mvc" XSI:のschemaLocation =" http://www.springframework.org/schema/beans ます。http:// www.springframework.org/schema/beans/spring-beans.xsd ます。http:// www.springframework.org/schema/context のhttp:// WWW .springframework.org /スキーマ/コンテキスト/春-context.xsd のhttp://www.springframework.org/schema/mvc ます。http:// www.springframework.org/schema/mvc/spring-mvc.xsd "> < 豆の クラス =" org.springframework.web.servlet.handler.SimpleUrlHandlerMapping "> <プロパティ名前= "urlMap"> <小道具> <支えるキー= "/ test.do"> simpleConrol </小道具> </小道具> </ property>の <プロパティ名= "インターセプター" REF = "myHandlerInterceptor"> </ property>の </豆> <! -控制器- > <豆ID = "simpleConrol" クラス = "コントロール。SimpleControl「/> <! -アダプタを実行する- > <豆のクラス= "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <! -资源解析器- > <豆のクラス = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <プロパティ名= "接頭辞"値=" / WEB-INF /ページ/ "/> <プロパティ名= "サフィックス"値="。JSP "/> <プロパティ名= "viewClass"値=" org.springframework.web.servlet.view.JstlView "/> </ビーン> <ビーンID =" myHandlerInterceptor " クラス = "interceptor.MyHandlerInterceptor"> </ビーン> <ビーンクラス =" exceptionResolver。SimpleHandlerExceptionResolver "> </豆> </豆>
以下は、クラスの構成要素であります
コントローラ
インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入org.springframework.web.servlet.ModelAndView。 輸入org.springframework.web.servlet.mvc.Controller。 パブリック クラス SimpleControlが実装コントローラ{ 公共のModelAndViewのhandleRequest(HttpServletRequestのリクエスト、HttpServletResponseの応答)をスロー例外{ int型 A = 1/0 。 ModelAndView MV = 新しいのModelAndView( "テスト" ); mv.addObject(「単語」、「これはテストワードです」); 返すMVを。 } }
HandlerExceptionResolver
インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入org.springframework.web.servlet.HandlerExceptionResolver; 輸入org.springframework.web.servlet.ModelAndView。 パブリック クラス SimpleHandlerExceptionResolverが実装HandlerExceptionResolver { 公共のModelAndView resolveException(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラは、例外例){ のModelAndViewのMV = 新規のModelAndView( "エラー" )。 返すMVを。 } }
HandlerInterceptor
インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入org.springframework.web.servlet.HandlerInterceptor。 輸入org.springframework.web.servlet.ModelAndView。 パブリック クラス MyHandlerInterceptorが実装HandlerInterceptor { パブリック ブール preHandle(HttpServletRequestのリクエストをHttpServletResponseの応答、オブジェクト・ハンドラ)がスロー例外{ するSystem.out.printlnを( "これはMyHandlerInterceptor preHandleです" )。 返す 真; } 公共 のボイドpostHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラのModelAndViewのModelAndView)がスロー例外{ するSystem.out.printlnを( "これはMyHandlerInterceptor postHandleです" )。 } 公共 ボイド afterCompletion(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラは、例外EX)がスロー例外{ するSystem.out.printlnを( "これはMyHandlerInterceptor afterCompletionです" )。 } }
また、カスタム例外とすることができる、特別なリターンコードが返されたときに返された例外のカスタムを
輸入org.springframework.http.HttpStatus。 輸入org.springframework.web.bind.annotation.ResponseStatus。 @ResponseStatus(コード = HttpStatus.INTERNAL_SERVER_ERROR、理由は=「これはmyExceptionある」) パブリック クラス MyExceptionが延び例外{ プライベート 静的 最終 長いのserialVersionUID = 1Lを、 }
一般的に引き継ぐように構成されて
<?xml version = "1.0"エンコード= "GBK"?> <豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001 / XMLスキーマ・インスタンス" のxmlns:コンテキスト = "http://www.springframework.org/schema/context" のxmlns:MVC = "http://www.springframework.org/schema/mvc" XSI:のschemaLocation =" HTTP: //www.springframework.org/schema/beans ます。http:// www.springframework.org/schema/beans/spring-beans.xsd ます。http:// www.springframework.org/schema/context ます。http:// www.springframework .ORG /スキーマ/コンテキスト/バネ文脈。XSD のhttp://www.springframework.org/schema/mvc ます。http:// www.springframework.org/schema/mvc/spring-mvc.xsd "> <コンテキスト:ベース-コンポーネントは、スキャンパッケージ =" com.tuling.mvc.controlを」/ > <! -注解驱动- > <MVC:注釈ドリブン/> <! -视图仓库- > の<bean クラス = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <プロパティ名=」接頭辞"値= "/ WEB-INF /ページ/"/> <プロパティ名= "サフィックス"値="。JSP "/> <プロパティ名=" viewClass " 値 =" org.springframework.web.servlet.view。JstlView "/> </豆> </豆>