spring mvc 01——回顧MVC

什麼是MVC

  • MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟件設計規範
  • 是將業務邏輯、數據、顯示分離的方法來組織代碼
  • MVC主要做用是下降了視圖與業務邏輯間的雙向耦合
  • MVC不是一種設計模式,MVC是一種架構模式。不一樣的MVC存在差別
  • 模型(Model):數據模型,提供要展現的數據,所以包含數據和行爲,能夠認爲是領域模型或JavaBean組件(包含數據和行爲),不過如今通常分離開來:Value Object(數據Dao) 和 服務層(行爲Service)。也就是模型提供了模型數據查詢和模型數據的狀態更新等功能,包括數據和業務。
  • View(視圖):負責進行模型的展現,通常就是咱們見到的用戶界面,客戶想看到的東西。
  • Controller(控制器):接收用戶請求,委託給模型進行處理(狀態改變),處理完畢後把返回的模型數據返回給視圖,由視圖負責展現。 也就是說控制器作了個調度員的工做。

最典型的MVC就是JSP + servlet + javabean的模式html

Model1時代

  • 在web早期的開發中,一般採用的都是Model1。
  • Model1中,主要分爲兩層,視圖層和模型層。

Model1優勢:架構簡單,比較適合小型項目開發;前端

Model1缺點:JSP職責不單一,職責太重,不便於維護;vue

Model2時代

Model2把一個項目分紅三部分,包括視圖、控制、模型。java

  1. 用戶發請求
  2. Servlet接收請求數據,並調用對應的業務邏輯方法
  3. 業務處理完畢,返回更新後的數據給servlet
  4. servlet轉向到JSP,由JSP來渲染頁面
  5. 響應給前端更新後的頁面

職責分析:react

Controller:控制器angularjs

  1. 取得表單數據
  2. 調用業務邏輯
  3. 轉向指定的頁面

Model:模型web

  1. 業務邏輯
  2. 保存數據的狀態

View:視圖spring

  1. 顯示頁面

Model2這樣不只提升的代碼的複用率與項目的擴展性,且大大下降了項目的維護成本。Model 1模式的實現比較簡單,適用於快速開發小規模項目,Model1中JSP頁面身兼View和Controller兩種角色,將控制邏輯和表現邏輯混雜在一塊兒,從而致使代碼的重用性很是低,增長了應用的擴展性和維護的難度。Model2消除了Model1的缺點。設計模式

回顧servlet

  1. 新建一個Maven工程當作父工程! pom依賴!api

    <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-01-servlet , 添加Web app的支持!

  3. 導入servlet 和 jsp 的 jar 依賴

    <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. 編寫一個Servlet類,用來處理用戶的請求

    package com.xiaohua.servlet;
    
    //實現Servlet接口
    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

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>huangdajie</title>
    </head>
    <body>
        ${msg}
    </body>
    </html>
  6. 在web.xml中註冊Servlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>HelloServlet</servlet-name>
            <servlet-class>com.xioahua.servlet.HelloServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>HelloServlet</servlet-name>
            <url-pattern>/user</url-pattern>
        </servlet-mapping>
    
    </web-app>
  7. 配置Tomcat,並啓動測試

    • localhost:8080/user?method=add
    • localhost:8080/user?method=delete

MVC框架要作哪些事情

  1. 將url映射到java類或java類的方法 .
  2. 封裝用戶提交的數據 .
  3. 處理請求--調用相關的業務處理--封裝響應數據 .
  4. 將響應的數據進行渲染 . jsp / html 等表示層數據 .

說明:

常見的服務器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常見前端MVC框架:vue、angularjs、react、backbone;由MVC演化出了另一些模式如:MVP、MVVM 等等....

相關文章
相關標籤/搜索