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
需要引入 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基类)。
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>
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目录
8、调试运行 访问路径
流程细节
1、客户端发送请求
2、由tomcat接收到对应的请求
3、SpringMVC的前端控制器 DispatcherServlet 接受匹配的请求
4、查看请求地址和@RequestMap 注解 找到某个具体的类处理
5、前端控制器找到目标处理类和方法后 执行目标方法
6、方法执行后有一个返回值 SpringMVC将这个返回值用视图解析器进行解析 拼装成完整的页面地址
7、DispatcherServlet 拿到页面地址后 转发到具体页面