spirngMVC(1)-SpringMVCとは

1MVCのレビュー

MVCは、model(Model(マッパーサービス))、view(View(jsp))、controller(Controller(servlet))の略です。ソフトウェア設計仕様で
あり、ビジネスロジック、データ、およびを分離する方法です。コードを整理するための表示
1モデル
データモデルは、表示されるデータを提供するため、データと動作が含まれます。モデルは、モデルデータクエリや、データやビジネスを含むモデルデータステータスの更新などの機能を提供します
。2ビューは表示を
担当します。モデルの一般的なものであり、ユーザーインターフェイス、顧客が見たいもの
3コントローラー
はユーザー要求を受信し、処理(状態変更)のためにモデルに委任し、処理後に返されたモデルデータをビューに返します。ビューは表示を担当します。言い換えれば、コントローラーはディスパッチャーの仕事をしました

プロジェクトは、ビュー、コントロール、モデルの3つの部分に分かれています。次の図に示す
責任分析:
コントローラー:
フォームデータ取得して
ビジネスロジック呼び出し
て指定したページに移動するコントローラー
モデル:
ビジネスロジックをモデル化し
てデータの状態保存する
ビュー:ユーザーが送信する
ページ
ここに画像の説明を挿入
1表示するビューリクエスト2
サーブレットはリクエストされたデータを受信し、対応するビジネスロジックを呼び出しますメソッド
3ビジネス処理が完了したら、更新されたデータをサーブレットに返します。4
サーブレットはJSPに変わり、JSPはページをレンダリングします
。5の更新されたページへの応答フロントエンド

2サーブレットのレビュー

1親プロジェクトとして新しいMavenプロジェクトを作成します

<dependencies>
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>5.1.9.RELEASE</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.5</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet.jsp</groupId>
       <artifactId>jsp-api</artifactId>
       <version>2.2</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId>
       <version>1.2</version>
   </dependency>
</dependencies>

2 Moudleを作成します:springMVC-servlet、Webアプリサポートを追加します
ここに画像の説明を挿入
3サーブレットとjspjarの依存関係をインポートします

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>servlet-api</artifactId>
   <version>2.5</version>
</dependency>
<dependency>
   <groupId>javax.servlet.jsp</groupId>
   <artifactId>jsp-api</artifactId>
   <version>2.2</version>
</dependency>

4ユーザーリクエストを処理するサーブレットクラスを作成します

package com.zs.controller;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet{
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        //取得参数
        String method = req.getParameter("method");
        if (method.equals("add")){
    
    
            req.getSession().setAttribute("msg","执行了add方法");
        }
        if (method.equals("delete")){
    
    
            req.getSession().setAttribute("msg","执行了delete方法");
        }
        //业务逻辑
        //视图跳转
        req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        doGet(req,resp);
    }
}

5 Hello.jspを作成し、WEB-INFディレクトリに新しいjspフォルダを作成し、新しいhello.jspを作成します
ここに画像の説明を挿入

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2021/1/24
  Time: 9:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${
    
    msg}
</body>
</html>

6サーブレットをweb.xmlに登録します

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">

    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.zs.controller.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hellp</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

7 Tomcatを構成し、テストを開始します
http:// localhost:8080 / hello?method = add
ここに画像の説明を挿入
実行プロセス
ここに画像の説明を挿入

3SpringMVCとは

SpringMVCはSpringFrameworkの一部であり、軽量WebはMVCフレームワークのJava実装に基づいています
Spring MVCの特徴:
軽量、習得が容易
、効率的、MVC要求応答フレームに基づく
Springとの良好な互換性、
構成よりもシームレスな統合規則
強力:RESTful、データ検証、フォーマット、ローカリゼーション、テーマなど。
シンプルで柔軟な
Spring Webフレームワークは、DispatcherServlet [SchedulingServlet]を中心に設計されています。

3.1セントラルコントローラーDispatcherServlet

SpringのWebフレームワークは、DispatcherServletを中心に設計されています。DispatcherServletの役割は、要求をさまざまなプロセッサ(コントローラ)に分散することです。アノテーションベースのコントローラ宣言を使用することをお勧めします

3.2HelloMVCプログラムを通じて原則を説明する

1新しいMoudle、springmvc-02を作成します-こんにちは、Webサポートを追加してください!

2SpringMVCの依存関係を必ずインポートしてください。

3 web.xmlを構成し、DispatcherServletを登録します

<!--1.注册DispatcherServlet-->
   <servlet>
       <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:springmvc-servlet.xml</param-value>
       </init-param>
       <!--启动级别-1-->
       <load-on-startup>1</load-on-startup>
   </servlet>

   <!--/ 匹配所有的请求;(不包括.jsp)-->
   <!--/* 匹配所有的请求;(包括.jsp)-->
   <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
       <url-pattern>/</url-pattern>
   </servlet-mapping>

4 SpringMVCの構成ファイルspringmvc-servlet.xmlを記述して、ここでの名前の要件が公式に準拠していることを説明します

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

処理マッパーを追加

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

プロセッサアダプタを追加します

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

ビューリゾルバーを追加

    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

5事業を運営したいコントローラーを書く

package com.zs.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//注意:这里我们先导入Controller接口
public class HelloController implements Controller {
    
    

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    
    
        //ModelAndView 模型和视图
        ModelAndView mv = new ModelAndView();

        //封装对象,放在ModelAndView中。Model
        mv.addObject("msg","HelloSpringMVC!");
        //封装要跳转的视图,放在ModelAndView中
        mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
        return mv;
    }

}

6独自のクラスをSpringIOCコンテナに与え、Beanを登録します

    <!--Handler-->
    <bean id="/hello" class="com.zs.controller.HelloController"/>

7ジャンプするjspページを記述し、ModelandViewに保存されているデータと通常のページを表示します

<%--
  Created by IntelliJ IDEA.
  User: DELL
  Date: 2021/1/24
  Time: 9:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${
    
    msg}
</body>
</html>

7テストを開始するようにTomcatを構成します。
ここに画像の説明を挿入
ここに画像の説明を挿入

3.3SpringMVC実行原理

ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
写真はSpringMVCのより完全なフローチャートを示しています。実線はSpringMVCフレームワークによって提供されるテクノロジーを表しており、開発者が実装する必要はありません。点線は開発者が実装する必要があることを表しています。
実行プロセスの簡単な分析
1のDispatcherServletは、フロントコントローラ表す全体SpringMVCのコントロールセンターです。ユーザーがリクエストを送信すると、DispatcherServletがリクエストを受信し、リクエストをインターセプトします。上記のURLは3つの部分に分割され
ているため、要求されたURLはhttp:// localhost:8080 / SpringMVC / helloであると想定し
ます
。http:// localhost:8080サーバードメイン名
サーバーWebサイトにデプロイされたSpringMVC
helloは、コントローラ
は分析に合格します。上記のURLは次のように表されます。サーバーlocalhost:8080上のSpringMVCサイトのhelloコントローラを要求します。
2 HandlerMappingは、プロセッサマッピングです。DispatcherServletはそれ自体HandlerMappingを呼び出しHandlerMappingはリクエストURLに従ってHandlerを見つけます。
ここに画像の説明を挿入
3 HandlerExecutionは特定のハンドラーを表します。その主な機能は、URLに従ってコントローラーを検索することです。上記のURLでコントローラーが検索されます:hello。
ここに画像の説明を挿入
4HandlerExecutionは、コントローラーマッピングの解析など、解析された情報をDispatcherServletに渡します。
5 HandlerAdapterは、特定のルールに従ってハンドラーを実行するプロセッサーアダプターを表します。
ここに画像の説明を挿入
6ハンドラーにより、特定のコントローラーが実行されます。
ここに画像の説明を挿入
7 Controllerは、ModelAndViewなどの特定の実行情報をHandlerAdapterに返します
ここに画像の説明を挿入
8 HandlerAdapterは、ビューの論理名またはモデルをDispatcherServletに渡します。
9 ** DispatcherServletはビューリゾルバー(ViewResolver)**を呼び出して、HandlerAdapterによって渡された論理ビュー名を解決します。
ここに画像の説明を挿入
10ビューリゾルバーは、解決された論理ビュー名をDispatcherServletに渡します
ここに画像の説明を挿入
11 DispatcherServletは、ビューパーサーによって解析されたビューの結果に従って特定のビューを呼び出します。
12最終ビューがユーザーに表示されます。

おすすめ

転載: blog.csdn.net/zs18753479279/article/details/113066413