ホームページ Java &#&チュートリアル SpringMVCビューとRESTスタイルの詳細な分析(コード付き)

SpringMVCビューとRESTスタイルの詳細な分析(コード付き)

Sep 26, 2018 pm 03:26 PM
springmvc

この記事では SpringMVC ビューと REST スタイルの詳細な分析を紹介します (コード付き)。必要な方は参考にしていただければ幸いです。

ビューリゾルバーとは何ですか?

springMVC がビューを処理するために使用する 2 つの最も重要なインターフェイスは、ViewResolver と View です。

ViewResolver の主な機能は、論理ビュー名を実際のビューに解決することです。SpringMVC では、View オブジェクトをクライアントに提示するために使用され、ViewResolver は論理ビュー名を実際のビューに変換するだけです。オブジェクトに解決される実際のビュー。

View インターフェイスの主な機能は、ビューを処理してクライアントに返すことです。

ビュー パーサーの実行プロセス:

リクエスト メソッドが実行された後、最終的に ModelAndView オブジェクトが返されます。 String 、 View、ModelMap およびその他の型を返す SpingMVC は、最終的にそれらを内部で ModelAndView オブジェクトにアセンブルします。このオブジェクトには、モデル オブジェクトの論理名とビューが含まれます。 StringMVC は、ビュー パーサーを使用して最終ビュー オブジェクトを取得します。最終ビューは、JSP またはその他のファイル形式のビューです。レンダリング プロセッサは、最終的にどの方法が採用されるかには関係なく、モデル データを生成する作業に重点を置き、常に MVC の完全な分離を実現します。

View:

ビューの役割は、モデル データをレンダリングし、モデル内のデータを何らかの形式でユーザーに提示することです。 View Model と特定の実装テクノロジの分離を実現するために、Sping は View インターフェイスを定義します。ビュー オブジェクトはビュー リゾルバによってインスタンス化され、ビューはステートレスであるため、スレッド セーフの問題はありません。

一般的に使用されるビュー実装クラス:

InternalResourceView: JSP リソースをビューにカプセル化し、デフォルトで springmvc によって使用されるビュー パーサーです。

JstlView: jstl パッケージ springmvc を JSP プロジェクトに導入すると、このパーサーが自動的に使用されます。

MapingJackJsonView: Jackson オープン ソース フレームワークの ObjectMapper を通じて、モデルを Json モードで出力します。

#AbstractExcelView: POI に基づいて Excel ドキュメントを構築する Excel ドキュメント ビューの抽象クラス

#AbstractPdfVIew: iText に基づいて Pdf ドキュメントを構築する PDF ドキュメント ビューの抽象クラス

BeanNameViewResolver: 論理ビュー名を Bean に解決します。Bean の ID は論理ビュー名と同じです。

ビュー リゾルバーの役割は比較的単純で、論理ビューを特定のビュー オブジェクトに解析するだけです。すべてのビュー リゾルバーは ViewResolver インターフェイスを実装する必要があります。

JSP は最も一般的に使用されるビュー テクノロジであり、InternalResourceView をビュー パーサーとして使用できます


JSTL タグがプロジェクトに導入されている限り、springmvc はビュー InternalResourceView をそのサブクラスである JstlView に自動的に変換します。

各ビュー パーサーは Ordered インターフェイスを実装し、パーサーの優先順位を設定できる order 属性を開発します。順序が小さいほど、優先順位が高くなります。春 MVC は、解析が成功してビュー オブジェクトが返されるまで、ビュー パーサーの順序の優先順位に従って論理ビュー名を解析します。そうでない場合は、ServletException がスローされます。

カスタム ビュー:

@Component
public class MyView implements View {

    @Override
    public String getContentType() {
        return "text/html";
    }

    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
            response.getWriter().println("<h1>Spring MVC Custom view</h1>");
    }

}
ログイン後にコピー

このカスタム ビューを View インターフェイスに実装し、インターフェイス内の 2 つのメソッドをオーバーライドする必要があります。次に、このクラスを Bean として宣言し、管理のために Spring に渡します。ここでは、beanName リゾルバーを設定します。

<!-- 配置BeanName解析器 -->
    <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
        <property name="order" value="1"/>
    </bean>
ログイン後にコピー

次に、リクエストを書き込みます。このリクエストは、デフォルトでは、最初の文字が小文字でキャメルケースで表示されます。

@RequestMapping("myView")    public String myView(){
        System.out.println("myView load ...");        
        return "myView";
    }
ログイン後にコピー

このようにして、カスタム ビューを完成させることができます。

# オフおよびリダイレクト: 戻り文字列に「

redirect :##」が含まれる場合#" または "

forward:" を指定すると、SpringMvc が特別な処理を実行します。 #ビューに直接アクセスする必要がある場合は、次のように構成できます

#

<!– 直接配置对应的视图访问路径 -->
<mvc:view-controller path="/hello" view-name="hello.jsp" />
<!-- 如果配置了mvc-controller会导致其它页面没法正常访问,还需要添加一个标签 -->
<mvc:annotation-driven />
ログイン後にコピー
REST 章

REST (Representational State Transfer): これは、(リソース) プレゼンテーション層の状態転送です。 リソース: ネットワーク上のエンティティ、またはネットワーク上の情報。これは、テキスト、曲、画像などです。各リソースには、特定の固有の URL を指定できます。このリソースに直接アクセスするだけです。 表現層: リソースが表示される形式。 状態転送: リクエストが発行されるたびに、クライアントとサーバー間の対話が行われます。 HTTP プロトコルはステートレス プロトコルです。つまり、すべての状態がサーバー側に保存されます。クライアントがサーバーを操作したい場合は、何らかの手段を使用してサーバーに状態変換を実行する必要があります。この変換はプレゼンテーション層に基づいているため、これがプレゼンテーション層の状態変換です。

在我们的SpringMVC之中支持HTTP四种请求状态,REST规定的HTTP协议中四种表示操作方式的动词

GET请求:获取资源

POST请求:新建资源

PUT:更新资源

DELETE:删除资源

我们需要在WEB.xml中配置实现PUT,DELETE请求方式,大家都知道在我们传统的HTML中只有GET,POST两种请求方式。

<!-- 配置HiddenHttpMethodFilter过滤器实现PUT,DELETE请求 -->
<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>
        org.springframework.web.filter.HiddenHttpMethodFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
ログイン後にコピー

GET请求

GET请求:
<a href="rest/testRest/10">test RestGet请求</a><br><br>

@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
public String testRestGet(@PathVariable Integer id){
    System.out.println("GET请求,获取id为:" + id + "的对象!");
    return SUCCESS;
}
ログイン後にコピー

Post请求

POST请求:
<form action="rest/testRest" method="post">
    <input type="submit" value="post请求" />
</form>

@RequestMapping(value="/testRest",method=RequestMethod.POST)
public String testRestPost(){
    System.out.println("POST请求,添加新的对象!");
    return SUCCESS;
}
ログイン後にコピー

PUT和DELETE请求想要使用必须添加上面的过滤器,并且在Post请求中加上隐藏域name="_method",value="PUT/DELETE"。

PUT,请求其实是由POST请求转换而来的。

PUT请求:
<form action="rest/testRest" method="post">
    <!-- 添加隐藏域,名称为_method,value为请求方式 -->
    <input type="hidden" name="_method" value="PUT" />
    <input type="submit" value="put请求" />
</form>

@RequestMapping(value="/testRest",method=RequestMethod.PUT)
public String testRestPut(){
    System.out.println("PUT请求,更新操作!");
    return SUCCESS;
}
ログイン後にコピー

DELETE请求

DELETE请求:
<form action="rest/testRest/10000" method="post">
    <!-- 添加隐藏域,名称为_method,value为请求方式 -->
    <input type="hidden" name="_method" value="DELETE" />
    <input type="submit" value="delete请求" />
</form>

@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id){
    System.out.println("DELETE请求,删除操作!" + id);
    return SUCCESS;
}
ログイン後にコピー

重复一次第一章的内容在我们springmvc拦截所有请求会导致css,js,图片等不能引入我们可以这样解决:

<!--将非mapping配置下的请求交给默认的Servlet来处理-->
<mvc:default-servlet-handler/>
<!--如果添加了默认servlet,mvc请求将无效,需要添加annotation-driven-->
<mvc:annotation-driven></mvc:annotation-driven>
ログイン後にコピー

以上がSpringMVCビューとRESTスタイルの詳細な分析(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivo​​tal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC の違いは何ですか? Dec 29, 2023 am 10:46 AM

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC は、Web アプリケーションを構築するための 2 つの非常に人気のある Java 開発フレームワークです。これらは別々に使用されることが多いですが、両者の違いは明らかです。まず、SpringBoot は Spring フレームワークの拡張版または強化版とみなすことができます。 Spring アプリケーションの初期化と構成プロセスを簡素化し、開発者を支援するように設計されています。

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC の違いは何ですか? Dec 29, 2023 pm 05:19 PM

SpringBootとSpringMVCはJava開発でよく使われるフレームワークで、どちらもSpringフレームワークで提供されていますが、機能や使用方法にいくつかの違いがあります。この記事では、SpringBootとSpringMVCそれぞれの特徴と違いを紹介します。 1. SpringBoot の特徴: 構成の簡素化: SpringBoot は、構成より規約の原則により、プロジェクトの構成プロセスを大幅に簡素化します。プロジェクトや開発者に必要なパラメータを自動的に設定できます。

spring と springmvc の違いは何ですか spring と springmvc の違いは何ですか Dec 29, 2023 pm 05:02 PM

spring と springmvc の違い: 1. 位置付けと機能、2. コア機能、3. アプリケーション領域、4. 拡張性。詳細な紹介: 1. 位置付けと機能 Spring は、依存関係の注入、アスペクト指向プログラミング、トランザクション管理などの機能を提供する包括的なアプリケーション開発フレームワークであり、エンタープライズ レベルのアプリケーションの開発を簡素化するように設計されており、Spring MVC はそのSpring フレームワーク。そのモジュールは Web アプリケーションの開発に使用され、MVC パターンを実装します。2. コア機能など。

springboot と springmvc の違いは何ですか springboot と springmvc の違いは何ですか Jun 07, 2023 am 10:10 AM

springboot と springmvc の違いは、1. 意味の違い、2. 構成の違い、3. 依存関係の違い、4. 開発時間の違い、5. 生産性の違い、6. JAR パッケージ化機能の実装方法の違い、7. バッチ処理の有無です。提供される機能、8. さまざまな機能、9. さまざまなコミュニティおよびドキュメントのサポート、10. デプロイメント記述子が必要かどうか。

JavaのSpringMVCインターセプターの使い方 JavaのSpringMVCインターセプターの使い方 May 13, 2023 pm 02:55 PM

インターセプタの役割 SpringMVC のインターセプタは、サーブレット開発におけるフィルタに似ており、プロセッサの前処理と後処理に使用されます。インターセプタが一定の順序でチェーン状に接続されており、このチェーンをインターセプタチェーン(InterceptorChain)と呼びます。インターセプトされたメソッドまたはフィールドにアクセスすると、インターセプター チェーン内のインターセプターが、以前に定義された順序で呼び出されます。インターセプターは、AOP のアイデアを具体的に実装したものでもあります。インターセプターとフィルターの違い: フィルター (フィルター) インターセプター (インターセプター) の使用範囲はサーブレット仕様の一部であり、任意の JavaWeb プロジェクトで使用できます。

Java API開発におけるWebサービス処理にSpringMVCを利用する Java API開発におけるWebサービス処理にSpringMVCを利用する Jun 17, 2023 pm 11:38 PM

インターネットの発展に伴い、Web サービスはますます一般的になってきています。アプリケーション プログラミング インターフェイスとして、JavaAPI はさまざまなアプリケーション シナリオに適応するために新しいバージョンを常にリリースしています。 SpringMVC は、人気のあるオープンソース フレームワークとして、Web アプリケーションを簡単に構築するのに役立ちます。この記事では、SpringMVC の設定、コントローラーの作成、使用方法など、JavaAPI 開発における Web サービス処理に SpringMVC を使用する方法を詳しく説明します。

SpringBoot と SpringMVC の類似点と相違点を比較する SpringBoot と SpringMVC の類似点と相違点を比較する Dec 29, 2023 am 08:30 AM

SpringBoot と SpringMVC の類似点と相違点の分析 SpringBoot と SpringMVC は、Java 分野では非常に重要な開発フレームワークです。どちらも Spring フレームワークの一部ですが、使用方法と機能には明らかな違いがいくつかあります。この記事では、SpringBoot と SpringMVC を比較し、それらの類似点と相違点を分析します。まず、SpringBoot について学びましょう。スプリングボー

See all articles