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视图,渲染数据后最终响应给浏览器
首先添加依赖:
org.springframework
spring-webmvc
5.3.21
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
依赖中提到的serclet-api,tomcat,依赖中封装了servlet-api和jsp-api,因此这里使用了,provided
作用是:在打包成war包的时候,该依赖不会被打包进去。
创建web.xml文件,该文件是mvc的入口,我们在其中注册前端控制器,监听器,过滤器等,
所有的请求都被前端控制器处理。
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
springmvc
/
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encoding
/*
15
“/”所匹配的请求可以是/login或.html或.js或.css方式的请求路径 但是/不能匹配.jsp请求路径的请求,
原因:jsp本质就是一个servlet,他会经过指定的servlet处理,不需要前端控制器解析,如果经过springmvc处理,mvc会将jsp当做普通的请求处理,不会找到相对应的jsp页面。
“/*”则代表的是所有的请求包括“.jsp”。
配置文件配置方式有两种,默认的配置方式,是放在webapp目录下的,WEB-INF目录下,但是,spring的规范是将配置文件统一放在resources下,因此在此我们使用另外的配置方式--->扩展配置方式,在此我们需要自定义配置文件的位置,我们使用init-param标签,改标签意为初始化参数,他是伴随着servlet的初始化而初始化的,功能是,配置springMVC的位置,param-name中的名称一定是前端控制器中定义好的,我们为之赋值(contextConfigLocation),反之,则不会生效。
1
配置前端控制器DispatcherServlet的初始化时间提前到服务器启动时。 why? 我们当前要将所有的浏览器请求交给前端控制器处理,我们必须现在web.xml中注册才能处理请求。
在resources文件中创建springmvc配置文件:
配置视图解析器,这里使用Thymeleaf视图解析器,这个是可以直接照搬的:
text/html
application/json
在WEB-INF下 创建templates文件夹,index.html,WEB-INF下的文件,是不能直接访问的,包括,在webapp下也是不能访问的,必须要通过视图解析器,解析视图。
创建测试案例:
@Controller
public class HelloController {
//注解:请求映射
@RequestMapping("/")
// 我们的访问路径是文件夹下的index.html
public String index(){
//返回视图名称
return "index";
}
}