MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分
M:Model,模型层,指工程中的JavaBean,作用是处理数据
JavaBean分为两类:
一类称为实体类Bean:专门存储业务逻辑的,如Student、User等。
一类称为业务处理Bean:指Service或Dao对象,专门用于处理业务逻辑和数据访问。
V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据。
C:Controller,控制层,指工程中的servlet,作用是接收需求和响应浏览器。
MVC的工作流程:
用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器。
SpringMVC是Spring的一个后续产品,是Spring的一个子项目
SpringMVC是Spring为表述层开发提供的一整套完备的解决方案,在表述层框架历经Strust、WebWork、Strust2等诸多产品的历代更迭之后,目前业务普遍选择了SpringMVC作为JavaEE项目表述层开发的首选方案。
三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet。
Spring 家族原生产品,与IOC容器等基础设施无缝对接
基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案。
代码清新简洁,大幅度提升开发效率
内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
性能卓著,尤其适合现代大型、超大型互联网项目要求
我们需要配置web.xml,即将pom.xml的配置文件设置为war包,而下面的红色目录为web资源的路径。我们将上面的web.xml进行添加之后即可不为红色。
我们进行添加即可如下所示:
点击OK之后即可成功创建。
我们所导入的依赖如下所示:
4.0.0 com.rgf spring_MVC_helloWorld 1.0-SNAPSHOT war 8 8 UTF-8 org.springframework spring-webmvc 5.3.1 ch.qos.logback logback-classic 1.2.3 javax.servlet javax.servlet-api 3.1.0 provided org.thymeleaf thymeleaf-spring5 3.0.12.RELEASE
SpringMVC
org.springframework.web.servlet.DispatcherServlet
SpringMVC
/
由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具体请求的类,即请求控制器
请求控制中每一个处理请求的方法称为控制器方法
因为SpringMVC的控制器由一个POJO(普通的Java类)担任,因此需要通过@Controller注解将其标识为一个控制层组件,交给Spring的IOC容器管理,此时SpringMVC才能够识别控制器的存在。
package com.rgf.controller;
import org.springframework.stereotype.Controller;
@Controller
public class HelloController {
}
2.4创建SpringMVC的配置文件
我们创建的index.html如下所示:
首页
index.html
(1)实现对首页的访问
我们首先进行对tomcat的配置:
我们点击OK即可。
直接运行会出现404,即找不到我们的首页,我们在控制层进行编写如下所示:
package com.rgf.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
//其中/为绝对路径的标志,和http://localhost:8080/SpringMVC/地址一致
@RequestMapping("/")
public String protal(){
//将逻辑视图返回index
return "index";
}
}
运行之后如下所示:
我们将约束添加到模板里面:
xmlns:th="http://www.thymeleaf.org
我们进行尝试跳转如下所示:
首页
index.html
测试SpringMVC
测试绝对路径
我们在控制层里进行调用:
package com.rgf.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
//其中/为绝对路径的标志,和http://localhost:8080/SpringMVC/地址一致
@RequestMapping("/")
public String protal(){
//将逻辑视图返回index
return "index";
}
@RequestMapping("/hello")
public String hello(){
//将逻辑视图返回index
return "success";
}
}
我们跳转后的界面如下所示:
成功
success.html