springboot使用JSP、フィルタ、インターセプタ(インターセプターとフィルタ差フォーカス)
JSPの構成を使用
A
デベロッパーツール(ホットデプロイ)ウェブ(リモート呼び出し、サポートサービス):springbootプロジェクトを作成すると、唯一の達人に2つの依存関係を追加しています
pom.xml作成したプロジェクト<依存性>でJSP依存度を高める必要があります
<! - 整合JSP、需要的依赖- > < 依存> < groupIdを> org.apache.tomcat.embed </ groupIdを> < たartifactId >のtomcat-埋め込む-ジャスパー</ たartifactId > </ 依存関係> < 依存> < groupId >のjavax.servlet </ groupIdを> < たartifactId >のjavax.servlet-API </ たartifactId > </ 依存関係> <依存関係> <groupId >のjavax.servlet </ groupIdを> < たartifactId > JSTL </ たartifactId > </ 依存関係>
二
application.ymlで、表示解像度の増加をファイル(フォーマットを使用してYML簡単に、プロパティが変更された)を
サーバー:
アクセスしたときにポート80を設定する#を省略することができる
ポート:80
#ビューリゾルバの
春:
MVC:
ビュー:
接頭辞:/
サフィックス:.jspファイル
三つ
マークWebアプリケーション。メインのsrc / webappディレクトリの下の確立、そしてプロジェクトの構造は、アイデアは、ラベルされたWebアプリケーションを識別することです
新規ディレクトリプロジェクト構造では、Webアプリケーションなどのsrc /メイン
設立のうち右側には、いくつかの操作を行います。塗布後に終了するには[OK]を適用します。そこにウェブですが、右側の下半分が空の場合、+の下半分の右側をクリックして、あなたが作成したファイルを指定することができます
これは、WebアプリケーションのディレクトリにJSPファイルの設立は、直接アクセスを使用すると、リソースをJSPにナビゲートすることができ、ブラウザでプロジェクトを開始します。
コンフィギュレーション・ファイルapplication.propertiesを変更
サーバー:
アクセスしたときにポート80を設定する#を省略することができる
ポート:80
サーブレット:
コンテキストパス:/
#ビューリゾルバの
春:
MVC:
ビュー:
接頭辞:/
サフィックス:.jspファイル
使用フィルタspringboot
独自に作成するにはまず、フィルタ
パッケージcom.xiaoeyu.springboot4.filter、 インポートのjavax.servlet。* ; インポートにjava.io.IOException; // フィルタはフィルタカスタマイズ実装することにより、 公共の クラスを myFilterを実装は{フィルター / * のみ、* serveletフィルタ予め定められている仕様をこのようTomcatサーブレット・コンテナなどのWebアプリケーションは、単にサーブレット要求に入る前に、サポート、および機能出てきている *ブロッカー:いずれかのWebアプリケーションは、Swingのプログラムは、フレームが春に支持されており、アプリケーションであること春のコンポーネントは、あなたが春にすべてのリソースを使用することができ、オブジェクト IOCインタセプタに注入することにより、このようなサービスオブジェクト、データソース、トランザクション管理など*がすることができます。前と例外がスローされる前と後の方法に飛び込むことができ迎撃した後、より高い柔軟性がある * * / @Override 公共 のボイドのdoFilter(ServletRequestののServletRequest、ServletResponseをServletResponseを、れるFilterChainれるFilterChain)スローのIOException、ServletExceptionが{ するSystem.out.println( "要求サーブレットに到達する前にフィルタを行うのdoFilter" ;) FilterChain.doFilter(のServletRequest、ServletResponseを) するSystem.out.println(「のdoFilter:ままにTomcatサーブレット要求を出た後に容器の前に行わ" ); } }
フィルタ・レジスタはspringbootで使用されています
パッケージcom.xiaoeyu.springboot4.config; インポートcom.xiaoeyu.springboot4.filter.Myfilter; インポートorg.springframework.boot.web.servlet.FilterRegistrationBean; インポートorg.springframework.context.annotation.Bean; インポートorg.springframework.context .annotation.Configuration; // 注釈カテゴリがspringbootフレーム@Beanは、注釈プロセスを開始する構成プロセスを読み取り、設定ファイルの.xmlと同等の構成であり、戻り値は容器IOCに注入されます @構成 パブリック クラスに、FilterConfig { @Bean // Spring構成ファイルの<bean>構成に相当するメソッドは、オブジェクトの値が返され、容器IOC内に注入される パブリックfilterRegistrationBean filterRegistrationBean(){ filterRegistrationBeanビーン = 新しい新FilterRegistrationBean(); bean.setFilter(新しい新しい myFilterを()); // 傍受すなわちどのフィルタ登録フィルタ bean.addUrlPatternsを( "/ *"); // フィルタのパスを遮るように配置された bean.setOrderを(1) ; // ブートシーケンス、正の数、より小さな優先度が設定 戻り 、豆を } }
springboot使用インターセプタ
カスタムインターセプタ
パッケージcom.xiaoeyu.springboot4.interceptor; インポートorg.springframework.web.servlet.HandlerInterceptor; インポートorg.springframework.web.servlet.ModelAndView; インポートするjavax.servlet.http.HttpServletRequest; インポートするjavax.servlet.http.HttpServletResponse; / / インターセプタ、この方法は、コントローラにアクセスする必要がトリガされる パブリック クラス myInterceptor 実装HandlerInterceptor { @Override パブリック ブール preHandleを(要求のHttpServletRequest、HttpServletResponseの応答、オブジェクトハンドラ)がスロー例外{ するSystem.out.println(「preHandle:インターセプターを入力します「コントローラの呼び出しの実装前に、); // falseを要求バックトラックを返しますが、前面表示200ステータスコード後戻りするダウンがないため、すべての要求は、成功することができ 返す trueに; } @Override 公共 無効 postHandle(HttpServletRequestのリクエスト、応答HttpServletResponseの、ハンドラのModelAndViewのModelAndViewオブジェクト)がスロー例外{ するSystem.out.printlnを(「postHandle:リターンのModelAndViewコントローラの実行は、データのModelAndViewを操作する前に、コントローラのロジックは、実行された」); modelAndView.addObject(「名前」、 "postHandle:編集名JRL" ); System.out.printlnは( "postHandle:のModelAndViewでの名前値を変更" ); } @Override 公共 のボイドafterCompletion(HttpServletRequestのリクエスト、レスポンスHttpServletResponseの、ハンドラ、例外EXオブジェクト)スロー例外{ するSystem.out.println(「afterCompletion:クライアントに返す前に戻り、フィルタの後コントローラ(FilterAfter方法の前に行わなければなりません)」); } }
インターセプタはそれにロードされ、springbootで役割を果たすことができます
パッケージcom.xiaoeyu.springboot4.config; インポートcom.xiaoeyu.springboot4.interceptor.Myinterceptor; インポートorg.springframework.context.annotation.Configuration; インポートorg.springframework.web.servlet.config.annotation.InterceptorRegistry; インポートorg.springframework .web.servlet.config.annotation.WebMvcConfigurer; // オブジェクトの実装WebMvcConfigurerの中addInterceptorsメソッドを呼び出し、これはコンフィギュレーションクラスですspringbootを知らせます。インターセプタが血管IOCに注入される添加 @Configuration パブリック クラス InterceptorConfig 実装のWebMvcConfigurer { @Override 公共 ボイド新しい新 {addInterceptors(InterceptorRegistryレジストリ) registry.addInterceptor(。MyInterceptor())addPathPatterns( "/ *"); // 傍受経路 } }
インターセプタによってトリガコントローラ。インターセプタをトリガしない静的なリソースにアクセスできません。
パッケージcom.xiaoeyu.springboot4.controller; インポートorg.springframework.stereotype.Controller; インポートorg.springframework.web.bind.annotation.RequestMapping; インポート; org.springframework.web.servlet.ModelAndView @Controller パブリック クラス{でHelloController / * フロントデスクからURLはlocalhostを通じて/ハロー?名前=風水永康は 、パラメータを渡すと、それを印刷してのModelAndViewを入れ、インターセプタで名前の変更、およびJSPページにジャンプし、結果を表示する* / (@のRequestMapping "/こんにちは" ) 公共のModelAndViewこんにちは(文字列名、のModelAndViewミュージックビデオ){ System.out.printlnは( "名:" + 名); mv.setViewName(「試験」)。 mv.addObject( "名前" 、名); 返すMVを。 } }
これは、直接なtest.jspの文字が変更される可能性があり返された表示データを容易にするためであります
<%@ページのcontentType = " テキスト/ HTML;のcharset = UTF-8 " 言語= " Javaの" %> < HTML > < ヘッド> < タイトル>タイトル</ タイトル> </ ヘッド> < 身体> 私は、JSPページです< BR > のModelAndView = $ {名前}名でデータを取得した< BR > </ ボディ> </ HTML >