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最終ビューがユーザーに表示されます。