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

この記事では 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 id="Spring-nbsp-MVC-nbsp-Custom-nbsp-view">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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Mac版

SublimeText3 Mac版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。