Spring Web MVC 简单使用

时间:2020-8-26 作者:admin


1.1 简介

1.1.1 概述

  Spring Web MVC 框架简称 Spring MVC,Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面。实现了 Web 开发中的经典的 MVC(Model-View-
Controller)模式。使用 Spring 可插入的 MVC 架构,从而在使用 Spring 进行 WEB 开发时,可以选择使用 Spring 的 Spring MVC 框架或集成其他 MVC 开发框架, MVC 由以下 3 部分组成:
 ♞ 模型(Model):应用程序的核心功能,管理模块中用到的数据和值。
 ♞ 视图(View):提供模型的展示,管理模型如何显示给用户,它是应用程序的外观。
 ♞ 控制器(Controller):对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。
Spring Web MVC 是基于 Servlet APl 来构建的,自 Spring 框架诞生之日起,就包含在 Spring 中了。要使用 Spring Web MVC 框架的功能,需要添加 spring-webmvc 模块。

1.1.2 Spring MVC 组件

  • DispatcherServlet
    整个流程控制的核心,调用其他组件处理用户的请求,降低了组件之间的耦合性
  • HandleMapping
    根据用户请求找到 Handle
  • HandleAdpater
    执行 Handle
  • ViewResolver
    将结果处理成 View
  • Handle 【自己写的controller层】
    业务逻辑
  • View 【JSP、HTML】
    渲染 View

1.1.3 执行流程

 ♞ 浏览器发送请求到服务器,DispatcherServlet(前端核心控制器) 匹配所有请求
 ♞ DispatcherServlet 将 url 发送给 HandleMapping(处理器映射器)
 ♞ HandleMapping 查找是否有符合该路径的方法,有则将方法全限定名返回给 DispatcherServlet,没有则报 404
 ♞ DispatcherServlet 拿到 HandleMapping 返回的全限定名,将其交给 HandleAdapater(处理器适匹配器)
 ♞ HandleAdpater 拿到全限定名后执行方法
 ♞ 方法返回 视图名称,HandleAdpater 将其返回给 DispatcherServlet
 ♞ DispatcherSerclet 拿到 视图名称 后,将其交给 ViewResolver(视图解析器)
 ♞ ViewResolver 拿到 视图名称 查找是否有匹配的资源
 ♞ 有则将 视图 返回给 DispatcherServlet
 ♞ DispatcherServlet 拿到 视图 后,将其交给 View 渲染,填充数据后,DispatcherServlet 将 视图 响应给浏览器

Spring Web MVC 简单使用

1.2 基本使用

1.2.1 相关依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>

1.2.2 spring 配置(spring-mvc.xml)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 开启注解扫描 -->
    <context:component-scan base-package="com.software.spring"/>

    <!-- 开启 MVC 注解支持 -->
    <mvc:annotation-driven/>

</beans>

1.2.3 配置前端核心控制器(web.xml)

<!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>
	<!-- 配置前端核心控制器 -->
	<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>
	    <!-- 
			load-on-startup 元素标记容器是否应该在 web 应用程序启动的时候就加载这个 servlet,即实例化并调用 init() 方法
			它的值必须是一个整数,表示 servlet 被加载的先后顺序。
			如果该元素的值为负数或者没有设置,则容器会当 servlet 被请求时再加载
			如果值为正整数或者 0 时,表示容器在应用启动时就加载并初始化这个 servlet
			值越小,servlet 的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。
		-->
	    <load-on-startup>0</load-on-startup>
	</servlet>
	<servlet-mapping>
	    <servlet-name>dispatcherServlet</servlet-name>
	    <url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>

1.2.4 @RequestMapping 指定请求路径

/**
 * Created with IntelliJ IDEA.
 *
 * @author Demo_Null
 * @date 2020/8/24
 * @description 控制器
 */
@Controller
public class DemoController {
    /*
	 * value:用于指定请求的 URL。它和 path 属性的作用是一样的
	 * method:用于指定请求的方式
	 * params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的 key 和 value 必须和配置的一模一样
	 * headers:指定限制请求的请求头信息
	 */
	@RequestMapping(value = "/get", method = RequestMethod.GET)
    public void get() {
        System.out.println("请求到了~~~~");
    }
}

1.2.5 项目目录

Spring Web MVC 简单使用

1.2.6 IDEA 启动

☞ 打包项目
Spring Web MVC 简单使用
Spring Web MVC 简单使用
Spring Web MVC 简单使用

☞ 配置 Tomcat
Spring Web MVC 简单使用
Spring Web MVC 简单使用
Spring Web MVC 简单使用
Spring Web MVC 简单使用

☞ 启动项目

  启动项目之后,请求 Tomcat 中配置好的 URL + @RequestMapping 上配置好的请求路径就可以请求到对应的方法。
Spring Web MVC 简单使用

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。