SpringMVC 概述:
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架
三层架构
- 表现层:负责数据展示
- 业务层:负责业务处理
- 数据层:负责数据操作
MVC(Model View Controller)
:一种用于设计创建Web应用程序表现层的模式
- Model(模型):数据模型,用于封装数据
- View(视图):页面视图,用于展示数据
- jsp
- html
Controller(控制器
):处理用户交互的调度器,用于根据用户需求处理程序逻辑
- Servlet
- SpringMVC
SpringMVC优点
- 使用简单
- 性能突出(相比现有的框架)- 灵活性强
入门案例(XML格式)
1、导入SpringMVC相关坐标
<dependencies><!-- servlet3.1规范的坐标 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--jsp坐标--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1</version><scope>provided</scope></dependency><!--spring的坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.9.RELEASE</version></dependency><!--spring web的坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.9.RELEASE</version></dependency><!--springmvc的坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency></dependencies>
2、spring-mvc.xml扫描包配置,相当于applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--扫描加载所有的控制类类--><context:component-scan base-package="com.itzhuzhu"/></beans>
3、web.xml中配置SpringMVC核心控制器,用于将请求转发到对应的具体业务处理器Controller中(等同于Servlet配置)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><!--springMVC核心控制器,加载spring的配置文件--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--初始化的时候加载spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
4、设定具体Controller的访问路径(等同于Servlet在web.xml中的配置)
//设置当前类为Spring的控制器类
@Controller
public class UserController {//设置当前方法返回值类型为String,用于指定请求完成后跳转的页面@RequestMapping("/save")public String save() {System.out.println("user mvc controller is running ...");//设定具体跳转的页面return "success.jsp"; //success.jsp里随便搞个标签就行}
}
项目启动访问:http://localhost:8080/save
就可以跳转到页面了
入门案例执行流程分析
服务器启动:
- 加载
web.xml
中DispatcherServlet
- 读取
spring-mvc.xml
中的配置,加载所有com.itzhuzhu
包中所有标记为bean的类 - 读取bean中方法上方标注
@RequestMapping
的内容
处理请求:
DispatcherServlet
配置拦截所有请求/
- 使用请求路径与所有加载的
@RequestMapping
的内容进行比对 - 执行对应的方法
- 根据方法的返回值在webapp目录中查找对应的页面并展示
SpringMVC 技术架构图:
用去医院看病的流程举例子,然后通过这个例子,再去看SpringMVC的架构图
DispatcherServlet:
前端控制器, 是整体流程控制的中心,由其调用其它组件处理用户的请求, 有
效的降低了组件间的耦合性HandlerMapping:
处理器映射器, 负责根据用户请求找到对应具体的Handler处理器Handler:
处理器,业务处理的核心类,通常由开发者编写,描述具体的业务HandlAdapter:
处理器适配器,通过它对处理器进行执行View Resolver:
视图解析器, 将处理结果生成View视图View:
视图,最终产出结果, 常用视图如jsp、 html