MVC是一种软件架构的思想,将软件按照模型,视图,控制器来划分
M:Model,模型层,指工程中的JavaBean,作用是处理数据
JavaBean分为俩类:
·一类称为实体类Bean:专门用来存储业务数据,如Stuent,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的笔记(适合有JavaEE基础的童鞋们学习参考)
Spring5 学习总结—框架概述,入门案例,IOC容器_Love Life .的博客-CSDN博客Spring 框架概述Spring 是轻量级的开源的 JavaEE框架Spring 可以解决企业应用开发的复杂性Spring 有俩个核心部分 : IOC 和 AopIOC :控制反转,把创建对象过程交给 Spring 进行管理Aop :面向切面,不修改源代码进行功能增强Spring 特点:方便解耦,简化开发Aop 编程支持方便程序的测试方便和其它框架进行整合 如:MyBat...https://blog.csdn.net/m0_52901132/article/details/124042028?spm=1001.2014.3001.5501Spring5 学习总结-AOP_Love Life .的博客-CSDN博客AOP概念1.什么是AOP 1.1 面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的 耦合度降低 ,提高程序的可重用性,同时提高了开发的效率。 1.2 通俗地讲:不通过修改源代码方式,在主干功能中添加新功能。AOP底层原理1.AOP底层使用动态代理有俩种情况动态代理第一种,有接口情况,使用JDK动态代理...https://blog.csdn.net/m0_52901132/article/details/124081549?spm=1001.2014.3001.5501Spring5 学习总结—JdbcTemplate,事务管理_Love Life .的博客-CSDN博客JdbcTemplate(概念和准备)1.什么是JdbcTemplate1.1 Spring框架对JDBC进行封装,使用 JdbcTemplate 方便实现对数据库操作2.准备工作 2.1 导入依赖
·Spring家族原生产品,与IOC容器等基础措施无缝对接
·基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
·表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
·代码清新简洁,大幅度提升开发效率
·内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
·性能卓著,尤其适合现代大型,超大型互联网项目需求
IDEA : 2021.3.2
构建工具:maven-3.3.9
服务器:tomcat-8.5.72
Spring版本:5.3.1
在这里我们有俩种方式为Maven项目添加Web模块
当我们使用模板添加web模块时这时idea会为我们的项目下载对应的插件,下载完之后,这时pom.xml就会有对应的web模块插件,idea会自动为我们创建src/main/webapp/WEB-INF/web.xml,idea也会自动再pom.xml设置打包方式为war,
war ,这时我们就可以进行下一步添加依赖了,依赖在下方
这时就有了web.xml文件,我们需要手动在pom.xml文件设置打包方式为war
依赖:
junit
junit
4.11
test
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的前端控制器DispatcherServlet
springMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springMVC.xml
1
springMVC
/
在这里可以通过在SpringMVC核心配置文件配置bean创建也可以通过注解扫描创建,在这里我使用的是注解扫描创建
Spring针对Bean管理创建对象提供注解:
@Componet:泛指各种组件
@Service:用于标注服务层
@Controller:用于标注控制层
@Repository:用于标注数据访问层,即DAO
在src/main/java新建包com.example.mvc.controller.TestController
package com.example.mvc.controller;
import org.springframework.stereotype.Controller;
/**
* @author Mr.Zhou
* @version ...
* @ClassName HelloController.java
* @Description TODO
* @createTime 2022年04月12日 11:35:00
*/
@Controller
public class TestController{
}
b>webapp目录下新建template文件夹,在template文件夹下新建HTML页面_index.html
Title
首页
c>在TestController.java添加
package com.example.mvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author Mr.Zhou
* @version ...
* @ClassName TestController.java
* @Description TODO
* @createTime 2022年04月12日 13:53:00
*/
@Controller
public class TestController {
// 控制器方法
@RequestMapping("/")
public String index(){
// 返回视图名称
return "index";
}
/*
但浏览器发送请求到服务器,由DispatchServlet接收了请求,
就会将请求地址控制器方法所使用的注解@RequestMapping("/")的值进行匹配,
如果匹配成功,那么当前这个index方法就是处理请求的方法,index方法里返回的字符串被称为视图名称,
由视图解析器解析,加上视图前缀,加上视图后缀,找到相应的页面,
最后通过thymeleaf解析响应浏览器
*/
}
d>测试运行
end简述一下流程
浏览器发送请求,若请求的地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatchServlet(也就是在web.xml文件配置的前端控制器)处理,前端控制器会读取SpringMVC的核心配置文件springMVC.xml,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法,处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析(也就是在SpringMVC核心配置文件配置的视图解析器),加上前缀和后缀组成视图的路径,最终转发到视图所对应的页面。