MVC设计模式
Model View Controller,模型视图控制器,是一种用于设计创建web应用程序表现层的模式,MVC中每一个部分各司其职
- Model:数据模型,作用一般情况用于封装数据
- View:jsp或html,用来展示数据
- Controller:处理用户的请求
SpringMVC
Spring为表现层提供了基于MVC设计理念的优秀Web框架
SpringMVC中的组件
- 前端控制器 DispatcherServlet
- 它是整个流程的控制中心
- 处理器映射器 HandlerMapping
- 根据用户请求的地址将请求指向指定的Handler
- 处理器适配器 HandlerAdapter
- 经过适配器才会到真正的Handler(适配器模式)
- 处理器 Handler
- 完成处理请求的工作,开发中具体业务实现的地方
- 视图解析器 View Resolver
- 将处理结果进行生成视图
- 视图 View
- SpringMVC支持多种View视图类型,我们常用jsp。展示给用户的页面,开发中具体的前端页面
快速使用
1、导入SpringMVC需要的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
2、在web.xml中配置SpringMVC的核心控制器
<!-- 配置SpringMVC的核心控制器DispatcherServlet-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始化参数(如:核心配置文件)-->
<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>
3、创建一个Controller
@Controller
public class HelloWordController {
/**
* method:设置请求方式,如果请求方式不同,会报错405
* params:设置请求中的参数,如果不匹配,会报错400
* @return 页面文件的名称,如:返回到名字为success.jsp的页面
*/
@RequestMapping(value = "/hello")
public String hello(){
System.out.println("=============请求到达控制器===========");
return "success";
}
}
4、创建一个view,(WEB-INF下创建一个views目录,创建一个success.jsp页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
</head>
<body>
<h2>SpringMVC HelloWorld</h2>
</body>
</html>
5、配置spring-mvc.xml配置文件
<!-- -->
<context:component-scan base-package="com.zxy.controller"/>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
6、启动tomcat浏览器访问Controller中@RequestMapping中的映射地址:
SpringMVC的执行流程
简单的使用SpringMVC框架,让我们看到了简单的显示,现在来看一下它的具体执行过程
- 用户发送请求至前端控制器DispatcherServlet
- DispatcherServlet收到请求调用处理器映射器HandlerMapping
- HandlerMapping找到具体的处理器,并生成处理器对象,以及处理器拦截器,如果有则生成,并返回给DispatcherServlet
- DispatcherServlet调用处理器适配器HandlerAdapter
- HandlerAdapter经过适配调用具体的处理器Controller
- Controller处理请求后返回一个ModelAndView
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给视图解析器ViewResolver
- ViewResolver解析后,返回具体的View对象
- DispatcherServlet根据View进行渲染(就是将数据填充)
- DispatcherServlet响应给用户
SpringMVC中的注解
@Controller
作用:负责处理DispatcherServlet分发的请求。把用户请求的数据经过业务处理层处理之后封装成一个Model,然后把该Model返回给对应的View进行展示。
@RequestMapping
作用:用于建立请求的URL和处理方法之间的对应关系
位置:
- 类上:请求URL的第一级访问目录,此处不写的话,就像相当于应用的根目录
- 方法上:请求URL的第二级访问目录,与类上的使用@RequestMapping注解的一级目录一起组成访问虚拟路径。
属性:
- value:用于指定请求的URL,它和path属性的作用是一样的
- method:用于指定请求的方式
- params:用于指定限制请求参数的条件,它支持简单的表达式,要求请求参数的key和value必须和配置的一模一样