[共通MVCアーキテクチャ]
外部HTTP要求は、第1のコントローラに到着、データCURD操作後、クライアントを表示するビュー、ビューのレンダリングHTMLを返します。
[コントローラメソッドにルートをバインドするには?]
1.コントローラを作成します。
@Controller パブリック クラスUserControllerで{ ... }
2.コントローラメソッドを作成し、@RequestMappingをマークするために注釈を使用
@RequestMapping( "/ユーザー/リスト" ) 公共 ボイドのUserList(){ ... }
このように3、あなたはユーザリスト方式のUserControllerでは/プロジェクト名/ユーザー/リスト・パスにバインドするだろう
[用途] JSP
1. [追加]は、JSPを頼ります
< 依存> < groupIdを>のjavax.servlet </ groupIdを> < たartifactId > JSTL </ たartifactId > < バージョン> 1.2 </ バージョン> </ 依存関係>
2.構成クラスを追加します。
@Bean 公共ViewResolver jspViewResolver(){ InternalResourceViewResolverレゾルバ = 新しいInternalResourceViewResolver()。
resolver.setViewClass(JstlView。クラス); resolver.setPrefix( "/ WEB-INF / JSP /" )。 resolver.setSuffix( ".jspという" ); リターンリゾルバ。 }
3. JSP WEN-INF / JSP /の下にファイルを作成します。
< HTML > < 身体> 多くのユーザーがあります。 </ ボディ> </ HTML >
4.コントローラを使用してください
@RequestMapping( "/ユーザー/リスト")
パブリック文字列USERLIST(){
「my_friends」を返します。
}
[表示するコントローラからパラメータを渡します]
コントローラパラメータ追加モデルのための方法であって
( "/ユーザー/リスト"を@RequestMapping ) 公共 ボイドUSERLIST(モデルモデル){ ...
2.使用model.addAttribute(文字列キー、文字列値)
model.addAttribute( "nbUsers"、13);
JSPで3.属性、$属性を取得使用して
< P > $ {} nbUsersユーザーがあります。</ P >は、
[取得パスのパラメータ
名前に/ユーザー/ 5/5とどのように名前のためにそれを得ますか?
{}ルーティングアドレスマッチングを達成することができる使用。
@RequestMapping( "/ユーザ/ {ID} / {フィールド}" ) 公共 ボイド showUserField(@PathVariable( "ID")長期のuserId、@PathVariable( "フィールド" )は、文字列フィールド){ ... }
{}実際のパラメータと一致するように@RequestMappingに@PathVariable(「フィールド名」)を使用して、一致する関連ルーティングパラメータを使用
【本制御のすべてのメソッドのために同じプレフィックスをマップ]
1. Controllerクラス自体は注釈を付けます
@コントローラ @RequestMapping( "/ユーザ" ) パブリック クラスUserControllerで{ ... }
2.アクションメソッドは、独自の接頭辞/ユーザーをもたらします
@RequestMapping( "/リスト" ) 公共 ボイドのUserList(){ ... }
/ユーザー/リストの実際のルート
@RequestMapping( "追加/" ) 公共 ボイドアドユーザー(){ ... }
用/ユーザー/追加実際のルート
使用インターセプター]は実行方法の前および後に制御を行います
完全な遮断プロセス:
1.インターセプター、継承HandlerInterceptorAdapterを作成します。
パブリック クラス PerformanceInterceptorは延び HandlerInterceptorAdapterを{
2.書き換えに関連する方法
@Override パブリック ブール preHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ)がスロー{例外 ... 返す 真; } @オーバーライド 公共 ボイド postHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラのModelAndViewのModelAndView)がスロー{例外 ... } @オーバーライド public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { ... }
3. 创建配置类
@Configuration @EnableWebMvc public class AppConfig extends WebMvcConfigurerAdapter{ ...
4. 创建Bean
@Bean public HandlerInterceptor performanceInterceptor() { PerformanceInterceptor interceptor; interceptor = new PerformanceInterceptor(); return interceptor; }
5. 注册拦截器
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(performanceInterceptor()); }
也可以在注册拦截器的时候配置拦截器适用的路由(对于局部拦截器而言):
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(performanceInterceptor()).addPathPatterns("/home", "/user/*"); }