第10章 初识Spring MVC框架

目录/Contents

  • 第10章 初识Spring MVC框架
    • 学习目标
    • 学习内容
      • 1 Spring MVC介绍
        • 1.1 Spring MVC概述
          • 1.1.1 Java EE三层架构
          • 1.1.2 Spring MVC在三层架构中的位置
          • 1.1.3 Spring MVC在表现层的作用
        • 1.2 Spring MVC特点
          • 1.2.1 Spring MVC的特点
      • 2 Spring MVC入门程序
        • 2.1 Spring MVC的使用
          • STEP 01
        • 手动设置webapp文件夹
          • 步骤1
          • 步骤2
          • 步骤3
          • 步骤4
          • 步骤5
          • 步骤6
          • STEP 02
        • IDEA中使用插件运行Maven项目
          • 步骤1
          • 步骤2
          • 步骤3
          • STEP 03
          • STEP 04
          • STEP 05
          • STEP 06
          • STEP 07
          • STEP 08
      • 3 Spring MVC工作原理
        • 3.1 Spring MVC三大组件—处理器映射器
        • 3.2 Spring MVC三大组件—处理器适配器
        • 3.3 Spring MVC三大组件—视图解析器
        • 3.4 Spring MVC执行流程
        • 3.5 Spring MVC执行流程详细介绍

第10章 初识Spring MVC框架

学习目标

了解Spring MVC及其特点
掌握Spring MVC入门程序的编写
熟悉Spring MVC的工作原理及执行流程

学习内容

1 Spring MVC介绍

1.1 Spring MVC概述

1.1.1 Java EE三层架构

在JavaEE开发中,系统经典的三层架构包括表现层业务层持久层。三层架构中,每一层各司其职,表现层(Web层)负责接收客户端请求,并向客户端响应结果;业务层(Service层)负责业务逻辑处理,和项目需求息息相关;持久层(Dao层)负责和数据库交互,对数据库表进行增删改查。

1.1.2 Spring MVC在三层架构中的位置

第10章 初识Spring MVC框架_第1张图片

1.1.3 Spring MVC在表现层的作用

Spring MVC作用于三层架构中的表现层,用于接收客户端的请求进行响应。SpringMVC中包含了控制器视图,控制器接收到客户端的请求后对请求数据进行解析和封装,接着将请求交给业务层处理。业务层会对请求进行处理,最后将处理结果返回给表现层。表现层接收到业务层的处理结果后,再由视图对处理结果进行渲染,渲染完成后响应给客户端。

1.2 Spring MVC特点

1.2.1 Spring MVC的特点

(1)Spring MVC是Spring框架的后续产品,可以方便地使用Spring框架所提供的其他功能
(2)Spring MVC使用简单,很容易设计出干净简洁的Web层
(3)Spring MVC支持各种请求资源的映射策略
(4)Spring MVC具有非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API。
(5)Spring MVC支持国际化,可以根据用户区域显示多国语言。
(6)Spring MVC支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。
(7)Spring MVC灵活性强,易扩展

2 Spring MVC入门程序

2.1 Spring MVC的使用

STEP 01

创建项目:在IDEA中,创建一个名称为chapter10的Maven Web项目。

第10章 初识Spring MVC框架_第2张图片

手动设置webapp文件夹

步骤1

单击IDEA工具栏中的File→“Project Structure…”选项,弹出Project Structure对话框。

第10章 初识Spring MVC框架_第3张图片

步骤2

在Modules的设置界面中,单击界面上方的“+”图标,弹出Add下拉菜单。

第10章 初识Spring MVC框架_第4张图片

步骤3

在Modules的设置界面中,单击界面上方的“+”图标,弹出Add下拉菜单。

第10章 初识Spring MVC框架_第5张图片

步骤4

在Add下拉菜单中,单击“Web”选项进入Web Module的设置界面。

第10章 初识Spring MVC框架_第6张图片

步骤5

在Web Module的设置界面中,单击Deployment Descriptors右侧铅笔图样的编辑按钮,弹出Deployment Descriptors Location对话框。

第10章 初识Spring MVC框架_第7张图片

步骤6

在Deployment Descriptors Location对话框中,“Web Module Deployment Descriptor(web.xml):”输入框中可以设置项目web.xml文件的路径。将路径中项目名称后的路径修改为“src\main\webapp\WEB-INF\web.xml”,然后单击“OK”按钮完成web.xml的路径的设置。单击“OK”按钮系统会回步骤4所示的设置界面,在步骤4中单击Web Resource Directories右侧铅笔图样的编辑按钮,弹出Web Resource Directory Path话框。

第10章 初识Spring MVC框架_第8张图片

STEP 02

引入Maven依赖:项目创建完成后,为保障项目的正常运行,需要导入项目所需的依赖到项目的pom.xml文件中。

<!– 这里只展示了其中一个JAR包-->
<!--Spring核心类-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
</dependency>

需要注意的是,要在IDEA中使用插件运行Maven项目,除了需要在pom.xml文件中配置对应的插件外,还需要在IDEA中进行项目运行的相关配置。

IDEA中使用插件运行Maven项目

步骤1

单击IDEA工具栏中的“Run”→“Edit Configurations…”选项,弹出Run/Debug Configurations对话框。

第10章 初识Spring MVC框架_第9张图片

步骤2

在Run/Debug Configurations对话框中,单击左上角的“+”按钮,弹出Add New Configurations菜单列表。

第10章 初识Spring MVC框架_第10张图片

步骤3

在Add New Configurations菜单列表中,单击左侧菜单中的“Maven”选项,进入Maven指令的配置界面。

第10章 初识Spring MVC框架_第11张图片

STEP 03

配置前端控制器:在项目的web.xml文件中进行Spring MVC前端控制器的配置。

<servlet> <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
   <!-- 配置初始化参数,读取Spring MVC的配置文件 --><init-param> 
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>	</servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>	
</servlet-mapping>
STEP 04

配置处理器映射信息和视图解析器:创建Spring MVC的配置文件spring-mvc.xml,用于配置处理器映射信息和视图解析器。

<!-- 配置 Spring MVC要扫描的包 -->
<context:component-scan basepackage="com.itheima.controller"/>
<!-- 配置视图解析器 -->
<bean class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
</bean>
STEP 05

创建处理器:创建处理器FirstController类,用于处理客户端的请求并指定响应时转跳的页面。

//设置当前类为处理器类
@Controller
public class FirstController {
    // 设定当前方法的访问映射地址
    @RequestMapping("/firstController")
    // 设置当前方法返回值类型为String,用于指定请求完成后跳转的页面
    public String sayHello() {
        System.out.println("访问到FirstController!");
        // 设定具体跳转的页面
        return "success";	 }
}
STEP 06

创建视图(View)页面:创建名称为page的文件夹,并在page文件夹下创建名称为success的jsp文件,用于对客户端请求进行处理后的视图展示。

<html>
<body>
<h2>Spring MVC FirstController!h2>
body>
html>
STEP 07

启动项目,测试应用:项目启动成功后,在浏览器中对处理器进行请求访问,访问地址http://localhost:8080/chapter10/firstController,访问后,IDEA控制台打印信息“访问到FirstController!”,并且浏览器跳转到success.jsp页面中,页面内容如下所示。

第10章 初识Spring MVC框架_第12张图片

STEP 08

项目最终目录和文件组成

第10章 初识Spring MVC框架_第13张图片

3 Spring MVC工作原理

3.1 Spring MVC三大组件—处理器映射器

处理器映射器可以理解为一个Map,HandlerMapping负责根据用户请求的URL找到Handler(处理器),Spring
MVC提供了不同的映射器来实现不同的映射方式。

3.2 Spring MVC三大组件—处理器适配器

处理器适配器作用是根据处理器映射器找到的处理器 Handler 信息,去执行相关的 Handler。不同的处理器映射器映射出来的Handler对象是不一样的,不同的映射由不同的适配器来负责解析。

3.3 Spring MVC三大组件—视图解析器

视图解析器进行视图解析,首先将逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象返回。

3.4 Spring MVC执行流程

第10章 初识Spring MVC框架_第14张图片

3.5 Spring MVC执行流程详细介绍

(1)用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet拦截。
(2)DispatcherServlet拦截到请求后,会调用HandlerMapping(处理器映射器)。
(3)处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
(4)DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)。
(5) HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器。
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名。
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet。
(8)前端控制器请求视图解析器根据逻辑视图名解析真正的视图。
(9)ViewResolver解析后,会向DispatcherServlet中返回具体的View(视图)。
(10)DispatcherServlet对View进行渲染(即将模型数据填充至视图中)。
(11)前端控制器向用户响应结果。
在上述执行过程中,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver对象的工作是在框架内部执行的,开发人员只需要配置DispatcherServlet,完成Controller中的业务处理并在视图中(View)中展示相应信息。

你可能感兴趣的:(spring,mvc,java)