什麼是MVC
- MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟體設計規範
- 是将業務邏輯、資料、顯示分離的方法來組織代碼
- MVC主要作用是降低視圖與業務邏輯間的雙向耦合
- MVC不是一種設計模式,MVC是一種架構模式
Model(模型):資料模型,提供要展示的資料,是以包含資料和行為,可以認為是領域模型或JavaBean元件(包含資料和行為),不過現在一般都分離開來:資料層Dao和服務層Service。也就是模型提供了模型資料查詢和模型資料的狀态更新等功能
View(視圖):負責進行模型的展示,一般就是我們見到的使用者界面,客戶想看到的東西
Controller(控制器):接收使用者請求,委托給模型進行處理,處理完畢後把傳回的模型資料傳回給視圖,由視圖負責展示
最典型的MVC就是JSP+servlet+javabean的模式
Controller:控制器
- 取得表單資料
- 調用業務邏輯
- 轉向指定的頁面
Model:模型
- 業務邏輯
- 儲存資料的狀态
view:視圖
- 顯示頁面
回顧Servlet的使用
第一步:建立Maven項目選預設建立,建立好後導入如下依賴
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.0</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.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
第二步:建立Moudle:springmvc-01-servlet添加Web app支援,對項目名點選右鍵------>選擇Add Framework Support
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0EFVNh3aE9keRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxcDN0EDNzATM0ETMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
勾選Web Application再點選ok即可生成web項目
第三步:建立檔案,目錄結構如下
1.編寫HelloServlet
package com.cbbpp.servlet;
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 {
//1.擷取前端的參數
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","執行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","執行了delete方法");
}
//2.調用業務層
//3.視圖轉發或者重定向
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
2.編寫from.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/hello" method="post">
<input type="text" name="method">
<input type="submit">
</form>
</body>
</html>
3.編寫test.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${msg}
</body>
</html>
4.編寫web.xml,映射
<?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>hello</servlet-name>
<servlet-class>com.cbbpp.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
5.綁定tomcat啟動
6.輸入網址進行測試