SpringMVC简单介绍及使用

127 阅读4分钟

1、回顾MVC三层架构

1.1、MVC三层是什么

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。就是将业务逻辑、数据、显示分离的方法来组织代码。MVC主要作用是降低了视图与业务逻辑间的双向偶合。MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。 Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

其实在最早期的时候还有model1和model2的设计模型最典型的MVC就是JSP + servlet + javabean的模式。

在这里插入图片描述

servlet作为控制器的代码展示:

HelloServlet.java

1 package cn.tulingxueyuan.controller;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.http.HttpServlet;
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7 import java.io.IOException;
8
9 public class HelloServlet extends HttpServlet {
10 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
11 String method = request.getParameter("method");
12 if (method.equals("add")){
13 request.getSession().setAttribute("msg","add");
14 }else if(method.equals("sub")){
15 request.getSession().setAttribute("msg","sub");
16 }
17 request.getRequestDispatcher("index.jsp").forward(request,response);
18 }
19
20 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21 this.doPost(request, response);
22 }
23 }
24 web.xml
25 <?xml version="1.0" encoding="UTF‐8"?>
26 <web‐app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
27 xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
28 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jc p.org/xml/ns/javaee/web‐app_4_0.xsd"
29 version="4.0">
30
31 <servlet>
32 <servlet‐name>HelloServlet</servlet‐name>
33 <servlet‐class>cn.tulingxueyuan.controller.HelloServlet</servlet‐class>
34 </servlet>
35 <servlet‐mapping>
36 <servlet‐name>HelloServlet</servlet‐name>
37 <url‐pattern>/user</url‐pattern>
38 </servlet‐mapping>
39 </web‐app>
40 index.jsp
41 <%@ page contentType="text/html;charset=UTF‐8" language="java" %>
42 <html>
43 <head>
44 <title>$Title$</title>
45 </head>
46 <body>
47 ${msg}
48 </body>
49 </html>

输入网址:http://localhost:8080/servlet_demo_war_exploded/user? method=add

2、SpringMVC

2.1、SpringMVC的介绍

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.

Spring Web MVC是构建在Servlet API上的原始Web框架,从一开始就包含在Spring Framework中。正式名称 “Spring Web MVC,” 来自其源模块(spring-webmvc)的名称,但它通常被称为“Spring MVC”。 简而言之,springMVC是Spring框架的一部分,是基于java实现的一个轻量级web框架。

学习SpringMVC框架最核心的就是DispatcherServlet的设计,掌握好DispatcherServlet是掌握SpringMVC的核心关键。

2.2、SpringMVC的优点

1.轻量级、可适配、非侵入,简单易学 2.高效 , 基于请求响应的MVC框架(解耦、可重用、提高维护性) 3.与Spring兼容性好,无缝结合 4.约定优于配置 5.功能强大:灵活的URL映射、RESTful、数据验证、格式化、本地化、主题标签库等 6.简洁灵活

2.3、SpringMVC的实现原理

springmvc的mvc模式:

DispatcherServlet(前端控制器) Spring的web框架围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。 Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。 ​在这里插入图片描述

SpringMVC的具体执行流程:

当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。

文章分享就到这里了,本文主要还是起一个抛砖引玉的作用,想要完全理解运用springMVC还远远不够,小编在此也整理了一套令大家快速理解springMVC的资料! 了解更多Java知识可关注微信公众号“老周扯IT”

QQ截图20220731153029.png