Spring MVC インターセプターの詳細な紹介
Spring MVC のインターセプターは HandlerMapping レベルにあり、それぞれの HandlerMapping には独自のインターセプターが存在します。
Spring は springframework.web.servlet を提供します。 .HandlerInterceptor インターフェース、
org.springframework.web.servlet.handler.HandlerInterceptorAdapter アダプター、
このインターフェースを実装するか、このクラスを継承すると、独自のインターセプターを非常に簡単に実装できます。
アクションの前に実行:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
ビューを生成する前に実行
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView);
リソースを解放するために使用できます
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
それぞれ前処理、後処理(サービスが呼び出されModelAndViewが返されるがページは描画されない)、戻り処理(ページは描画された)を実装します
インターセプターをカスタマイズするには、HandlerInterceptor インターフェースを実装する必要があります:
Java コードpublic class MyInteceptor implements HandlerInterceptor { 略。。。 }
Spring MVC には完全なインターセプターがないため、前後のすべてのリクエストをインターセプトすることはできません。
オプション 1、(近似) 合計インターセプタ、すべての URL をインターセプト
Java コード<mvc:interceptors> <bean class="com.app.mvc.MyInteceptor" /> </mvc:interceptors>
なぜ「近似」と呼ばれるのか, before そうは言っても、Spring には完全なインターセプターがありません。
<mvc:interceptors/>
は、HandlerMapping ごとにインターセプターを挿入します。プロセッサを見つけることができる HandlerMapping が常に存在し、最大でも 1 つのプロセッサしか見つからないため、このインターセプタは常に実行されます。完全なインターセプターとして機能します。 REST スタイルの URL の場合、静的リソースもインターセプトされます。 <mvc:interceptors/>
会为每一个HandlerMapping,注入一个拦截器。总有一个HandlerMapping是可以找到处理器的,最多也只找到一个处理器,所以这个拦截器总会被执行的。起到了总拦截器的作用。
如果是REST风格的URL,静态资源也会被拦截。
方案二, (近似) 总拦截器, 拦截匹配的URL。
Xml代码
<mvc:interceptors > <mvc:interceptor> <mvc:mapping path="/user/*" /> <!-- /user/* --> <bean class="com.mvc.MyInteceptor"></bean> </mvc:interceptor> </mvc:interceptors>
就是比 方案一多了一个URL匹配。
如果是REST风格的URL,静态资源也会被拦截。
方案三,HandlerMappint上的拦截器。
如果是REST风格的URL,静态资源就不会被拦截。因为我们精准的注入了拦截器。
Xml代码
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <bean class="com.mvc.MyInteceptor"></bean> </list> </property> </bean>
如果使用了<mvc:annotation-driven />,
它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter 这两个bean,所以就没有机会再给它注入interceptors属性,就无法指定拦截器。
当然我们可以通过人工配置上面的两个Bean,不使用 <mvc:annotation-driven />,就可以 给interceptors属性 注入拦截器了。
其实我也不建议使用 <mvc:annotation-driven />,
而建议手动写详细的配置文件,来替代 <mvc:annotation-driven />
,这就控制力就强了。
如何替换 <mvc:annotation-driven />
?他到底做了什么工作?
一句 <mvc:annotation-driven />
<!-- 注解请求映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors"> <list> <ref bean="logNDCInteceptor"/> <!-- 日志拦截器,这是你自定义的拦截器 --> <ref bean="myRequestHelperInteceptor"/> <!-- RequestHelper拦截器,这是你自定义的拦截器--> <ref bean="myPermissionsInteceptor"/> <!-- 权限拦截器,这是你自定义的拦截器--> <ref bean="myUserInfoInteceptor"/> <!-- 用户信息拦截器,这是你自定义的拦截器--> </list> </property> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="byteArray_hmc" /> <ref bean="string_hmc" /> <ref bean="resource_hmc" /> <ref bean="source_hmc" /> <ref bean="xmlAwareForm_hmc" /> <ref bean="jaxb2RootElement_hmc" /> <ref bean="jackson_hmc" /> </list> </property> </bean> <bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. --> <bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. --> <bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. --> <bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. --> <bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. --> <bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. --> <bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->
は、オプション 1 よりも URL の一致が 1 つ多くなります。 🎜REST スタイルの URL の場合、静的リソースもインターセプトされます。 🎜🎜🎜オプション 3、HandlerMappint のインターセプター。 🎜🎜REST スタイルの URL の場合、静的リソースはインターセプトされません。インターセプターを正確に噴射したからです。 🎜🎜Xml コード 🎜🎜🎜🎜rrreee🎜
<mvc:annotation-driven />,
を使用すると、DefaultAnnotationHandlerMapping と AnnotationMethodHandlerAdapter の 2 つの Bean が自動的に登録されるため、それを与える機会はありません。再度 interceptors 属性を注入することにより、インターセプターを指定することはできません。 🎜🎜 もちろん、<mvc:annotation-driven /> を使用せずに上記 2 つの Bean を手動で設定し、インターセプター属性にインターセプターを挿入することもできます。 🎜🎜🎜実際、<mvc:annotation-driven />
の使用はお勧めしませんが、<mvc:annotation-driven / の代わりに詳細な設定ファイルを手動で記述することをお勧めします。 > ;
を使用すると、より強力な制御が可能になります。 🎜🎜 <annotation-driven></annotation-driven>
を置き換える方法は?彼は一体何をしたのでしょうか? 🎜🎜 1 つの文 <mvc:annotation-driven />
は、実際には次の作業を行います: (独自に定義したインターセプターの追加を除く) 🎜🎜 これらを理解した後、Spring3 MVC を制御できるようになります。これはより強力です。 、どこにでも変更できます。 🎜🎜Xml コード🎜🎜🎜🎜🎜rrreee以上がSpring MVC インターセプターの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









インターネットを利用する際に「wapi」という言葉を目にしたことはあるかもしれませんが、「wapi」が何なのかよく分からないという方もいると思いますので、以下で詳しくご紹介します。 wapi とは: 回答: wapi は、無線 LAN の認証と機密性を確保するためのインフラストラクチャです。一般的にオフィスビルなどの近くでカバーされる赤外線やBluetoothなどの機能と似ています。基本的にこれらは小さな部門によって所有されているため、この機能の範囲はわずか数キロメートルです。 wapi の関連紹介: 1. Wapi は無線 LAN の伝送プロトコルです。 2. この技術により、狭帯域通信の問題を回避し、より良好な通信が可能になります。 3. 信号の送信に必要なコードは 1 つだけです

2023年、AI技術が注目を集め、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。 GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直観的にし、不必要な複雑さを回避することを目的とした「SpringAI」が登場しました。 「SpringAI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。

Spring+AI は業界リーダーとして、強力で柔軟な API と高度な機能を通じてさまざまな業界に最先端のソリューションを提供します。このトピックでは、さまざまな分野での Spring+AI の応用例を詳しく掘り下げ、Spring+AI がどのように特定のニーズを満たし、目標を達成し、これらの教訓をより広範囲のアプリケーションに拡張するかを示します。このトピックが Spring+AI の無限の可能性をより深く理解し、活用するきっかけになれば幸いです。 Spring フレームワークはソフトウェア開発の分野で 20 年以上の歴史があり、Spring Boot 1.0 バージョンがリリースされてから 10 年が経過しました。今、その春に異論を唱える人はいない

PlayerUnknown's Battlegrounds としても知られる Pubg は、2016 年の人気以来、多くのプレイヤーを魅了してきた非常に古典的なシューティング バトル ロイヤル ゲームです。最近win11システムがリリースされた後、多くのプレイヤーがwin11でpubgをプレイしたいと考えています。編集者に従ってwin11でpubgをプレイできるかどうかを確認してみましょう。 win11 で pubg をプレイできますか? 回答: Win11 で pubg をプレイできます。 1. win11の開始当初、win11ではtpmを有効にする必要があったため、多くのプレイヤーがpubgから追放されました。 2. しかし、プレイヤーのフィードバックに基づいて、Blue Hole はこの問題を解決し、win11 で pubg を正常にプレイできるようになりました。 3.居酒屋に出会ったら

Spring プログラムによるトランザクションを実装する方法: 1. TransactionTemplate を使用する; 2. TransactionCallback および TransactionCallbackWithoutResult を使用する; 3. Transactional アノテーションを使用する; 4. TransactionTemplate を @Transactional と組み合わせて使用する; 5. トランザクション マネージャーをカスタマイズする。

最新の win11 にアップデートした後、システムのサウンドが少し変わったように感じますが、調整方法がわからないという人が多いので、このサイトでは、最新の win11 サウンド調整方法を紹介します。操作は難しくなく、選択肢も豊富ですので、ぜひダウンロードして試してみてください。最新のコンピュータ システム Windows 11 のサウンドを調整する方法 1. まず、デスクトップの右下隅にあるサウンド アイコンを右クリックし、「再生設定」を選択します。 2. 次に設定を入力し、再生バーの「スピーカー」をクリックします。 3. 次に、右下の「プロパティ」をクリックします。 4. プロパティの「拡張」オプションバーをクリックします。 5. この時、「すべての効果音を無効にする」の前にある√にチェックが入っている場合は、チェックを外します。 6. その後、以下の効果音を選択して設定し、クリックします。

Spring でトランザクション分離レベルを設定する方法: 1. @Transactional アノテーションを使用します; 2. Spring 構成ファイルに設定します; 3. PlatformTransactionManager を使用します; 4. Java 構成クラスに設定します。詳細な導入方法: 1. @Transactional アノテーションを使用し、トランザクション管理が必要なクラスまたはメソッドに @Transactional アノテーションを追加し、属性に分離レベルを設定します。 2. Spring の設定ファイルなどで

Kuaishou は、ユーザーが他の人と簡単につながることを可能にする人気の短いビデオ ソーシャル プラットフォームです。時間が経つと、ユーザーのプライベート メッセージが見知らぬ人のメッセージでいっぱいになる可能性があり、ユーザー エクスペリエンスに影響を与える可能性があります。では、Kuaishou で見知らぬ人からのプライベートメッセージを削除するにはどうすればよいでしょうか?この記事では、Kuaishouプラットフォームで見知らぬ人からのプライベートメッセージを削除する方法と、見知らぬ人からのメッセージを傍受することが可能かどうかを詳しく紹介します。 1. Kuaishou のプライベートメッセージで見知らぬ人のメッセージをすべて削除するにはどうすればよいですか? 1. まず、Kuaishou APPを開き、パーソナルセンターに入ります。 2. パーソナル センター ページで、[メッセージ] オプションを見つけてクリックして入力します。 3. メッセージ ページで、[プライベート メッセージ] オプションを見つけてクリックして入力します。 4. プライベート メッセージ ページでは、さまざまなメッセージ カテゴリが表示されます。[見知らぬメッセージ] カテゴリを見つけて、
