springbootのJSP、フィルター、インターセプター

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 >

 

おすすめ

転載: www.cnblogs.com/xiaoeyu/p/10414122.html
おすすめ