网站首页 > 精选教程 正文
Spring MVC(ModelViewController模型视图控制器)全称Spring Web MVC,是Spring Framework提供的Web组件,提供前端路由映射、视图解析等功能。
核心组件:
- DispatcherServlet:前端控制器,负责调度其他模块执行,核心模块
- Handler:处理器,完成具体的业务逻辑,相当于Servlet
- HandlerMapping:处理器映射器,DispatcherServlet通过HandlerMapping找到具体的Handler
- HandlerInterceptor:处理器拦截器,是一个接口,需要拦截处理时可实现该接口
- HandlerExecutionChain:处理器执行链,包含两部分:Handler和HandlerInterceptor
- HandlerAdapter:处理器适配器,Handler执行前,需要进行的验证,包括表单数据验证、数据类型转换、表单数据封装到POJO
- ModelAndView:封装了数据模型和视图信息
- ViewResolver:视图解析器,DispatcherServlet通过ViewResolver把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端
工作流程:
- 首先客户端发送请求
- 前端控制器收到请求后并通过处理器映射器找到对应的处理器,处理器和处理器拦截器以处理器执行链的形式返回给前端控制器
- 前端控制器通过处理器适配器,调用处理器执行业务逻辑,并返回数据模型和视图信息
- 前端控制器把获取的数据和视图信息通过视图解析器,解析渲染视图并返回
- 前端控制器把渲染后的视图返给客户端
画了一个简单流程图,以供学习参考
开发流程:
- 创建一个Maven工程、并引入MVC依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.19</version>
</dependency>
- 在web.xml中配置DispatcherServlet
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<!-- 配置核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- springmvc配置文件加载路径
1)默认情况下,读取WEB-INF下面的文件
2)可以改为加载类路径下(resources目录),加上classpath:
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--
DispatcherServlet对象创建时间问题
1)默认情况下,第一次访问该Servlet的创建对象,意味着在这个时间才去加载springMVC.xml
2)可以改变为在项目启动时候就创建该Servlet,提高用户访问体验。
<load-on-startup>1</load-on-startup>
数值越大,对象创建优先级越低! (数值越低,越先创建)
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!--/ 匹配所有的请求;(不包括.jsp)-->
<!--/* 匹配所有的请求;(包括.jsp)-->
<!--*.do拦截以do结尾的请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- 创建springmvc.xml并进行配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置自动扫包 -->
<context:component-scan base-package="com.zyh.controller"></context:component-scan>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--给逻辑视图加上前缀和后缀 -->
<!--前缀-->
<property name="prefix" value="/"></property>
<!--后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
- 创建index.jsp页面
- 创建Controller
@Controller
public class HelloHandler {
/**
* 当客户端访问index请求时
* 直接自动关联到这个方法
* 执行这个方法后,会返回结果
* @return
*/
@RequestMapping("/index")
public String index(){
System.out.println("接收到了请求");
//返回逻辑视图 逻辑视图相当于视图的别名 通过这个找到物理视图,也就是真正的视图
//这里返回的只是页面的名称,不是完整的页面访问路径
return "index";
}
}
猜你喜欢
- 2025-05-02 Java基础入门指南(java 基本入门)
- 2025-05-02 现在Java桌面应用程序能做到什么程度(SpringBoot+JavaFX2开发)
- 2025-05-02 基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构(附源码)
- 2025-05-02 SSM三大框架整合详细教程(ssm框架流程简单说明)
- 2025-05-02 elasticsearch 中文分词(elasticsearch 分词词性权重)
- 2025-05-02 最简洁详细的SSM框架整合(ssm框架完整的功能流程)
- 2025-05-02 Spring框架系列(5) - 深入浅出SpringMVC请求流程和案例
- 2025-05-02 Java-Maven详解(java maven工程)
- 2025-05-02 深入详解美团点评CAT跨语言服务监控(二) CAT服务端初始化
- 2025-05-02 [应用篇]第四篇 JSTL之C标签介绍.md
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)