一、回顾MVC三层架构
1、什么是MVC三层
MVC是 模型 (Model )、视图 (View )、控制器 (Controller )的简写,是一种软件设计规范。主要作用是降低视图与业务逻辑之间的双向耦合,它不是一种设计模式,而是一种架构模式。 Model(模型) :数据处理模型,提供了要展示的数据,包括了数据和业务行为;View(视图) :负责展示模型,一般就是我们所见到的用户界面,客户想看到的东西;Controller(控制器) :接收用户请求,委托给模型进行处理,将处理后的模型数据返回给视图,视图负责进行渲染展示;
2、MVC模型
二、介绍SpringMVC
SpringMVC是Spring框架的一部分,是基于Java实现MVC设计模式的轻量级Web框架。
1、SpringMVC的优点
轻量级、可适配、非侵入式、简单易学; 高效,是基于请求响应的MVC框架(降低视图层与业务层之间的耦合性、提高可重用性和维护性); 与Spring框架有很好的兼容性; 功能强大、简洁灵活;
2、SpringMVC的实现原理
2.1 相关组件
前端控制器/调度器 (DispatcherServlet
):负责将用户发送的请求拦截下来,分发到各个控制器方法中;处理器映射器 (HandlerMapping
):根据请求的URL 与 @RequestMaping映射进行匹配,匹配成功后会返回具体的Handler(封装了具体的控制器方法);处理器适配器 (HandlerAdapator
):负责调用Handler中的具体方法、返回视图名地址,将其封装到ModelAndView中(封装视图名和request域的数据);视图解析器 (ViewReslover
):根据ModelAndView中的视图名地址,去找到具体的jsp,然后封装到View对象中;视图 (View
):进行视图渲染(将jsp转换成html的内容),最终响应到客户端;
2.2 执行流程
3、基于XML实现的SpringMVC
3.1 添加依赖
< dependency>
< groupId> org.springframework</ groupId>
< artifactId> spring-webmvc</ artifactId>
< version> 5.3.1</ version>
</ dependency>
3.2 编写web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
< web-app xmlns = " http://xmlns.jcp.org/xml/ns/javaee"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version = " 4.0" >
< servlet>
< servlet-name> springmvc</ servlet-name>
< servlet-class> org.springframework.web.servlet.DispatcherServlet</ servlet-class>
< init-param>
< param-name> contextConfigLocation</ param-name>
< param-value> classpath:springmvc.xml</ param-value>
</ init-param>
< load-on-startup> 1</ load-on-startup>
</ servlet>
< servlet-mapping>
< servlet-name> springmvc</ servlet-name>
< url-pattern> /</ url-pattern>
</ servlet-mapping>
< filter>
< filter-name> characterEncodingFilter</ filter-name>
< filter-class> org.springframework.web.filter.CharacterEncodingFilter</ filter-class>
< init-param>
< param-name> encoding</ param-name>
< param-value> UTF-8</ param-value>
</ init-param>
< init-param>
< param-name> forceEncoding</ param-name>
< param-value> true</ param-value>
</ init-param>
</ filter>
< filter-mapping>
< filter-name> characterEncodingFilter</ filter-name>
< url-pattern> /*</ url-pattern>
< servlet-name> springmvc</ servlet-name>
</ filter-mapping>
</ web-app>
3.3 编写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"
xmlns: mvc= " http://www.springframework.org/schema/mvc"
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 http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd" >
< context: component-scan base-package = " org.example" > </ context: component-scan>
</ beans>
3.4 编写控制器类
@Controller
public class HelloController {
@RequestMapping ( "/Hello" )
public String helloWorld ( String name) {
System . out. println ( "hello springmvc:" + name) ;
return "index.jsp" ;
}
}
项目结构 请求地址: http://localhost:8090/springmvc/Hello?name=李四