springMVC 入门 SpringMVC搭建及执行过程

137 阅读3分钟

web servlet springmvc

Spring Web MVC是构建在Servlet API上的原始Web框架,从一开始就包含在Spring Framework中。 正式名称 “Spring Web MVC,” 来自其源模块(spring-webmvc)的名称,但它通常被称为“Spring MVC”。

Spring 5.0 引入了一个反应堆栈Web框架 Spring WebFlux 基于 spring-webflux

web reactive 响应式 需要了解网络编程 和 Native

image.png

需要引入 spring-web 和 spring-webmvc

SpringMVC是Spring框架的一部分 是基于Java实现的一个轻量级Web框架。 学习SpringMVC框架的核心就是DispatcherServlet的设计,掌握好DispatcherServlet是掌握SpringMVC的核心关键。


SpringMVC 的 优点

1、轻量级 可适配 非侵入 简单易学

2、高效 基于请求响应的MVC框架(解耦 可重用 提高维护性)。

3、与Spring兼容性好 无缝结合

4、约定优于配置

5、功能强大:灵活的URL映射、RESTful、数据验证、格式化、本地化、主题标签库等

6、简洁灵活


DispatcherServlet 前端控制器 1、作用是 将请求分发到不同的处理器 2、Spring 2.5开始 使用java5或者以上版本的用户可以采用基于注解的controller声明方式。 3、以请求为驱动 围绕一个中心Servlet分派请求及提供其他功能, 4、DispatcherServlet是一个Servlet(它继承自HttpServlet基类)。

image.png

image.png

DispatcherServlet :前端调度器 负责将请求拦截下来分发到各控制器方法中

HandlerMapping:负责根据请求的URL和配置@RequestMapping映射去匹配 匹配到会返回Handler方法
HandlerAdaper: 负责调用Handlerder具体方法 返回视图的名字 Handler将它封装到ModelAndView(封装视图名 request域数据)
ViewResolver :根据ModelAndView 里面的视图名地址去找到具体的jsp 封装在View对象中

View:进行视图渲染(将JSP渲染成html内容) 最终respons返回到客户端

搭建SpringMVC项目

1、pom.xml 加入 spring web mvc 依赖关系

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.25</version>
    </dependency>

</dependencies>

image.png

Spring5的文档认为您是在Spring boot基础上进行学习的

2、项目加入Web支持。

项目文件夹 ->右键 add FrameWork Support ->java ee 的 web application 。

3、配置web.xml URL映射关系

配置前端控制器、核心调度器、分发器目的:接受所有除了.jsp的请求,都交给springmvc去处理。

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<!--
        /       通常写这个   除了JSP的请求都会匹配
        /*      所有的请求都会匹配
        *.do  
        *.action     URL 结尾 .do .cation进行匹配
        /request/*   要进行约定 把所有的jsp放到/views/中  servlet请求都放到/request/
-->
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

4、创建spring xml配置文件 并开启注解

<context:component-scan base-package="com.kdy"></context:component-scan>

5、添加DispathcerServlet的配置文件

<servlet>
   <servlet-name>hello</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!--告诉DispatcherServlet的配置文件位置
   不配置的时候  会在WEB-INF 里面去找 [servlet-name]-servlet.xml文件 
   --->
   <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath:spring.xml</param-value>
   </init-param>
   <!--启动Tomcat的时候就会创建Servlet(会自动调用servlet的构造函数main()方法 初始化DispatcherServlet 并 加载spring上下文 )-->
   <load-on-startup>1</load-on-startup>
</servlet>

6、创建控制器

package com.kdy.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloMvc {
    //将url请求映射给对应的方法  
    //springmvc 自动匹配参数值
    @RequestMapping("/good")
    public String helloWord(String name){
        System.out.println("hello MVC :"+name);
        //响应
        //redirect 302重定向  不写默认转发
        return "redirect:index.jsp";
    }
}

7、添加依赖关系

Project Structure ->Artifacts WEB-INF下 创建 lib文件夹

将Available Elements 下面的Java包推入到lib目录

image.png

8、调试运行 访问路径


流程细节

1、客户端发送请求

2、由tomcat接收到对应的请求

3、SpringMVC的前端控制器 DispatcherServlet 接受匹配的请求

4、查看请求地址和@RequestMap 注解 找到某个具体的类处理

5、前端控制器找到目标处理类和方法后 执行目标方法

6、方法执行后有一个返回值 SpringMVC将这个返回值用视图解析器进行解析 拼装成完整的页面地址

7、DispatcherServlet 拿到页面地址后 转发到具体页面

Spring的配置文件