回顧MVC
什么是MVC
MVC是模型(Model)奴艾、視圖(View)净当、控制器(Controller)的簡寫,是一種軟件設(shè)計規(guī)范蕴潦。
是將業(yè)務(wù)邏輯像啼、數(shù)據(jù)、顯示分離的方法來組織代碼潭苞。
MVC主要作用是降低了視圖與業(yè)務(wù)邏輯間的雙向偶合忽冻。
MVC不是一種設(shè)計模式,MVC是一種架構(gòu)模式此疹。當然不同的MVC存在差異僧诚。
Model(模型):數(shù)據(jù)模型遮婶,提供要展示的數(shù)據(jù),因此包含數(shù)據(jù)和行為湖笨,可以認為是領(lǐng)域模型或JavaBean組件(包含數(shù)據(jù)和行為)旗扑,不過現(xiàn)在一般都分離開來:Value Object(數(shù)據(jù)Dao) 和 服務(wù)層(行為Service)。也就是模型提供了模型數(shù)據(jù)查詢和模型數(shù)據(jù)的狀態(tài)更新等功能赶么,包括數(shù)據(jù)和業(yè)務(wù)肩豁。
View(視圖):負責進行模型的展示,一般就是我們見到的用戶界面辫呻,客戶想看到的東西清钥。
Controller(控制器):接收用戶請求,委托給模型進行處理(狀態(tài)改變)放闺,處理完畢后把返回的模型數(shù)據(jù)返回給視圖祟昭,由視圖負責展示。也就是說控制器做了個調(diào)度員的工作怖侦。
最典型的MVC就是JSP + servlet + javabean的模式篡悟。
Model2時代
1、用戶發(fā)請求
2匾寝、Servlet接收請求數(shù)據(jù)搬葬,并調(diào)用對應(yīng)的業(yè)務(wù)邏輯方法
3、業(yè)務(wù)處理完畢艳悔,返回更新后的數(shù)據(jù)給servlet
4急凰、servlet轉(zhuǎn)向到JSP,由JSP來渲染頁面
5猜年、響應(yīng)給前端更新后的頁面
職責分析:
Controller:控制器
取得表單數(shù)據(jù)
調(diào)用業(yè)務(wù)邏輯
轉(zhuǎn)向指定的頁面
Model:模型
業(yè)務(wù)邏輯
保存數(shù)據(jù)的狀態(tài)
View:視圖
顯示頁面
回顧Servlet
1抡锈、新建一個Maven工程當做父工程!pom依賴乔外!
<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類,用來處理用戶的請求
package com.kuang.servlet;
//實現(xiàn)Servlet接口
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//取得參數(shù)
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","執(zhí)行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","執(zhí)行了delete方法");
}
//業(yè)務(wù)邏輯
//視圖跳轉(zhuǎn)
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
前端要跳轉(zhuǎn)的頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Kuangshen</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.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
7莲组、配置tomcat并啟動