day05-springmvc快速入门、组件解析

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

1. Spring与Web环境集成

在这里插入图片描述

1.1 ApplicationContext应用上下文获取方式

应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。

在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。

1.2 Spring提供获取应用上下文的工具

上面的分析不用手动实现,Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。

所以我们需要做的只有两件事:

①在web.xml中配置ContextLoaderListener监听器(导入spring-web坐标)

②使用WebApplicationContextUtils获得应用上下文对象ApplicationContext

1.3 导入Spring集成web的坐标

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

1.4 配置ContextLoaderListener监听器

<!--全局参数-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring的监听器-->
<listener>
	<listener-class>
       org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>

1.5 通过工具获得应用上下文对象

ApplicationContext applicationContext =    
    WebApplicationContextUtils.getWebApplicationContext(servletContext);
    Object obj = applicationContext.getBean("id");

知识要点

Spring集成web环境步骤

​ ①配置ContextLoaderListener监听器

​ ②使用WebApplicationContextUtils获得应用上下文

2. SpringMVC的简介

2.1 SpringMVC概述

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 中。

SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持 RESTful 编程风格的请求。

2.3 SpringMVC快速入门

需求:客户端发起请求,服务器端接收请求,执行逻辑并进行视图跳转。

开发步骤

①导入SpringMVC相关坐标

②配置SpringMVC核心控制器DispathcerServlet

③创建Controller类和视图页面

④使用注解配置Controller类中业务方法的映射地址

⑤配置SpringMVC核心文件 spring-mvc.xml

⑥客户端发起请求测试

代码实现

①导入Spring和SpringMVC的坐标、导入Servlet和Jsp的坐标

 <!--Spring坐标-->
 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>5.0.5.RELEASE</version>
 </dependency>
 <!--SpringMVC坐标-->
 <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-webmvc</artifactId>
     <version>5.0.5.RELEASE</version>
 </dependency>
<!--Servlet坐标-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
<!--Jsp坐标-->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
</dependency>

②在web.xml配置SpringMVC的核心控制器

<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>1</load-on-startup>
</servlet>
<servlet-mapping>   
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

③创建Controller和业务方法

public class QuickController {
	public String quickMethod(){
		System.out.println("quickMethod running.....");
		return "index";
	}
}

③创建视图页面index.jsp

<html>
<body>
    <h2>Hello SpringMVC!</h2>
</body>
</html>

④配置注解

@Controller
public class QuickController {
	@RequestMapping("/quick")
	public String quickMethod(){
		System.out.println("quickMethod running.....");
			return "index";
	}
}

⑤创建spring-mvc.xml

<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.itheima"/>
</beans>

⑥访问测试地址

http://localhost:8080/itheima_springmvc1/quick 

控制台打印

在这里插入图片描述

页面显示

在这里插入图片描述

2.3 SpringMVC流程图示

在这里插入图片描述

2.4 知识要点

SpringMVC的开发步骤
在这里插入图片描述

①导入SpringMVC相关坐标

②配置SpringMVC核心控制器DispathcerServlet

③创建Controller类和视图页面

④使用注解配置Controller类中业务方法的映射地址

⑤配置SpringMVC核心文件 spring-mvc.xml

⑥客户端发起请求测试

3. SpringMVC的组件解析

3.1 SpringMVC的执行流程

在这里插入图片描述
①用户发送请求至前端控制器DispatcherServlet。

②DispatcherServlet收到请求调用HandlerMapping处理器映射器。

③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

④DispatcherServlet调用HandlerAdapter处理器适配器。

⑤HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

⑥Controller执行完成返回ModelAndView。

⑦HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

⑨ViewReslover解析后返回具体View。

⑩DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

3.2 SpringMVC组件解析

  1. 前端控制器:DispatcherServlet

​ 用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由

它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。

  1. 处理器映射器:HandlerMapping

​ HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的

映射方式,例如:配置文件方式,实现接口方式,注解方式等。

  1. 处理器适配器:HandlerAdapter

​ 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理

器进行执行。

  1. 处理器:Handler

​ 它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由

Handler 对具体的用户请求进行处理。

  1. 视图解析器:View Resolver

​ View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

  1. 视图:View

​ SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

3.3 SpringMVC注解解析

@RequestMapping

作用:用于建立请求 URL 和处理请求方法之间的对应关系

位置:

​ 类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录

​ 方法上,请求 URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径

属性:

​ value:用于指定请求的URL。它和path属性的作用是一样的

​ method:用于指定请求的方式

​ params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样

例如:

​ params = {“accountName”},表示请求参数必须有accountName

​ params = {“moeny!100”},表示请求参数中money不能是100

1.mvc命名空间引入

命名空间:xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
约束地址:http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd

组件扫描

SpringMVC基于Spring容器,所以在进行SpringMVC操作时,需要将Controller存储到Spring容器中,如果使用@Controller注解标注的话,就需要使用<context:component-scan base-package=“com.itheima.controller"/>进行组件扫描。

3.4 SpringMVC的XML配置解析

SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,如下:

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

翻看该解析器源码,可以看到该解析器的默认设置,如下:

REDIRECT_URL_PREFIX = "redirect:"  --重定向前缀
FORWARD_URL_PREFIX = "forward:"    --转发前缀(默认值)
prefix = "";     --视图名称前缀
suffix = "";     --视图名称后缀
  1. 视图解析器

我们可以通过属性注入的方式修改视图的的前后缀

<!--配置内部资源视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/views/"></property>
  <property name="suffix" value=".jsp"></property>
</bean>

3.5 知识要点

SpringMVC的相关组件

前端控制器:DispatcherServlet

处理器映射器:HandlerMapping

处理器适配器:HandlerAdapter

处理器:Handler

视图解析器:View Resolver

视图:View

SpringMVC的注解和配置

请求映射注解:@RequestMapping

视图解析器配置:

REDIRECT_URL_PREFIX = “redirect:”

FORWARD_URL_PREFIX = “forward:”

prefix = “”;

suffix = “”;
在这里插入图片描述

企业权限管理系统知识 day05 用户登录相关操作 一、 SSM权限操作 1.1 数据库与表结构 1.1.1 用户表 1.1.1.1 用户表信息描述users 1.1.1.2 sql语句 1.1.1.3 实体类 1.1.2 角色表 1.1.2.1 角色表信息描述role 1.1.2.2 sql语句 1.1.2.3 实体类 1.1.2.4 用户与角色关联关系 用户与角色之间是多对多关系,我们通过user_role表来描述其关联,在实体类中User中存在... 阅读详情

相关推荐

37张图详解MAC地址、以太网、二层转发、VLAN

MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址。MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的,才能正确识别到数据链路上的设备。 MAC 地址由 6 个字节组成。前 3 个字节表示厂商识别码,每个网卡厂商都有特定唯一的识别数字。后 3 个字节由厂商给每个网卡进行分配。厂商可以保证生产出来的网卡不会有相同 MAC 地址的网卡。 现在可以通过软件修改 MAC 地址,虚拟机使用物理机网卡的 MAC 地址,并不能保.

networktp的博客 4717

idea的快捷键

idea的快捷键本文介绍快捷键大全编辑查找/替换编译/运行调试导航重构版本控制/本地历史LiveTemplate代码生成 本文介绍 本文的快捷键来自菜鸟教程:http://www.runoob.com/w3cnote/intellij-idea-usage.html 快捷键大全 编辑 快捷键 作用 Ctrl+Space 基本代码补全,输入字母按后列出匹配的词组 Ctrl+Shi...

我的技术博客 2222

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3485

day06_SpringMVCspringmvc的原理和注解解析

必须看完day05_SpringMVCspring集成web环境才能看本节内容 文章目录一、SpringMVC简介1.分析2.快速入门3.从代码角度看springmvc的实现过程4.springMVC组件的角度看springmvc的实现过程二、SpringMVC注解解析1.RequestMapping2.组件扫描3.视图解析器 一、SpringMVC简介 1.分析 开发步骤: ①导入SpringMVC相关坐标 ②配置SpringMVC核心控制器DispathcerServlet ③创建Control

weixin_45014721的博客 169

Java 框架 05SpringMVC_01(基本概念、快速入门、请求参数的绑定、自定义转换器、常用注解)

文章目录一、SpringMVC的基本概念1.1 三层架构和MVC1.1.1 三层架构1.1.2 MVC模型1.2 SpringMVC概述1.2.1 SpringMVC是什么1.2.2 SpringMVC在三层架构的位置1.2.3 SpringMVC的优势1.2.4 SpringMVC和Struts2的优劣分析二、SpringMVC快速入门2.1 入门案例2.1.1 使用Maven创建web工程2...

文泽路小男孩的博客 1034

ssm-day05 springmvc

WebFilter("/*") // 这个过滤器将应用于所有URL模式@Override// 初始化过滤器时调用,可在此处加载资源或进行其他初始化操作@Override// 在这里处理请求前的逻辑// 继续链式调用,传递给下一个过滤器或目标Servlet// 在这里处理响应后的逻辑@Override// 当过滤器被销毁时调用,可用于清理资源框架依赖。

wujiao__11的博客 1158

全网最强SpringMVC教程 | 万字长文爆肝SpringMVC(一)

本文介绍了SpringMVC框架的基本概念和入门案例实现。主要内容包括: SpringMVC概述 基于MVC设计模式的轻量级Web框架 主要处理请求接收、业务转发和响应数据转换 相比Servlet更简单灵活 入门案例实现步骤 创建Maven web项目 导入SpringMVC和Servlet依赖 创建SpringMVC配置类 编写Controller处理请求 配置DispatcherServlet替代web.xml 关键点说明 使用@Controller注解标记控制器类 @RequestMapping定义请

qq_45832461的博客 1102

Day05 SSM第五次笔记---SpringMVC第一部分学习

SpringMVC第一部分学习

xiaoxixicc的博客 875

java-sprin-mvc-day1-05springmvc入门程序-前端控制器配置

java-sprin-mvc-day1-05springmvc入门程序-前端控制器配置原创:徐工 2018-4-23 22.45

xwx7712的专栏 179

厚积薄发打卡Day84:从登录认证到Shrio简单入门<Saas-HRM实战Day05

SpringMVC拦截器 自定义拦截器:HandlerInterceptorAdapter 使用: 需要继承HandlerInterceptorAdapter类,并可以根据业务重写其中不同的方法: preHandle 进入到控制器方法之前执行的内容 返回boolean: true:可以继续执行控制器方法 false:拦截 posthandle:执行控制器方法之后执行的内容 afterCompletion:响应结束之前执行的内容 代码示例: @Component p

COOLGWAYNE_TECH_BLOG 197

Spring-MVC框架简单介绍及快速入门案例

初识spring-mvc框架及快速入门案例 spring-mvc概述 spring组件分析 spring-mvc执行流程 快速入门

beansice的博客 355

Day24SSM之SpringMVC 参数绑定***

SpringMVC的参数绑定-基本类型绑定 (1)什么是参数绑定 用户请求服务器的时候会给后台传递参数, 如何来快速的接收到用户传递的参数 username=jack passwrod=123456 》》传统方式 在Controller中的方法的形式参数上直接声明HttpServletRequest, HttpServletResponse , HttpSession 》》直接将获取的值,作为形参 必须保证:传入的参数的名字和本方法形参的名字一致 url?cid=1 对应方法的参数是xx (Str

翁老师的教学团队 479

SpringMVC杂记

文章目录1.入门案例1.几个配置文件总结1.web.xml2.spring-mvc.xml1.SpringMVC如何实现页面跳转?1.普通的页面跳转方式2.使用ModelAndView对象完成页面的跳转1.SpringMVC如何响应数据?1.直接返回字符串2.回写json数据1.SpringMVC如何请求数据?1.SpringMVC获得基本类型参数2.SpringMVC获得POJO类型参数3.SpringMVC获得数组类型参数4.SpringMVC获得集合类型参数5.RequestMapping6.参数绑定

weixin_45014721的博客 1559

Day73--Springboot

title: Day73–Springboot date: 2021-05-19 13:50:02 author: Liu_zimo SpringBoot是所有基于Spring开发的项目的起点。SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了很多的技术,提供了JavaEE的大整合。 spring 官方的网站:https://spring.io/ Spring Boot概述 一般把Spring Boot称为搭建程序的.

欢迎来到Liu_zimo的博客 708

Spring MVC入门学习目录

Spring MVC 入门 参考视频:B站狂神,写这个只是方便个人复习,怎么写是我自己的事,我能看懂就行,没要求非要让你看!白嫖还挑刺,是很没有风度的事情。希望做个有风度的“五好青年”! 整个教程是个人学习笔记,共计8天。阅读只需4天。目录只是方便查阅!! 源码文件地址: 打包好的源码及笔记及参考文档: 目录 名称 地址 Spring MVC学习笔记——day01 https://blog.csdn.net/m0_46153949/article/details/1137871

杨丙寅 869

JavaEE学习 day05

今天,继续学习了JavaEE。首先,Spring资料分享、SpringMVC资料分享、mybatis资料分享,然后,学习了mybatis-MBG逆向工程,SVN应用案例01、SVN应用案例02,还学习了Eclipse安装SVN的四种方式、Eclipse与SVN的使用、Maven实操。 总结一下一些需要注意的问题: 1.学习框架,是学习什么 其实是在学习规则 #传统的方式(最底层)获取jdbc连接 Class.forName(“com.mysql.jdbc.Driver”); Connection conne

m0_49528461的博客 201

IDEA 入门 day01

idea入门 软件推荐——IntelliJ IDEA IntelliJ IDEA 是目前最好用的 JAVA 开发 IDE,其本身自带的功能已经十分强大了,如果还需要什么其他功能可以通过安装插件来弥补 idea的快捷键(网上找的) 快捷键大全 编辑 快捷键 作用 Ctrl+Space 基本代码补全,输入字母按后列出匹配的词组 Ctrl+Shift+Space 智能代码补全,列出与预期类型一致的方法或...

woziwozi的博客 147

Java Spring|day3.SpringBoot

告诉Spring boot需要什么功能,它就能引入需要的依赖库起步依赖就是特殊的Maven依赖,利用了传递依赖解析,把常用库聚合在一起,组成几个为特定功能而定制的依赖。

weixin_60364343的博客 600

jy-09-SERVLETJSP——Spring-程祖红

目录: 1、day01Spring 2、day02-IOC和DI 3、day03-使用注解来简化配置 4、day04-SpringMVC 5、day05-系统分层(扩展) 6、day06-拦截器 1、day01Spring (1)Spring是什么? 是一个开源的,用来简化企业级应用开发的应用开发框架。 注: a. Spring框架对常用的api做了封装(比如,对jdbc就做了封装), 这样一来,会简化代码并提高代码的质量(比如,使用SpringJdbc 来访问数据库,就不..

从码农到码到成功 270

基于SpringMVC的宠物之家管理系统的设计和实现-计算机毕设 【课程设计】 31845

为应对上述问题,本文深入剖析当前宠物管理行业面临的挑战,运用 Spring Boot、Java、MySQL 等技术搭建系统基础架构。在开发进程中,不仅实现了系统的各项基础功能,像普通用户的首页展示、通知公告查看、宠物资讯获取,以及管理员的后台首页管理、系统用户管理等,还着重优化了各业务流程。对于普通用户,打造流畅的商城管理流程,涵盖购物车、订单及地址管理;提供便捷的宠物信息查询、领养寄养等功能。对于管理员,实现全面且精细的宠物分类、信息、领养归还及寄养等管理功能。同时,创新性地将多种实用功能与业务流程深度融

WeiXin_DZbishe的博客 1698

SpringBoot--05.SpringBoot2.0学习小结

1、SpringBoot2.0学习小结 用springBoot创建项目时、只关注三点:《启动器》、《全局属性》、《启动类》 (1)、启动器 : pom.xml配置依赖父工程坐标 &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&g...

一叶知秋 570
上一篇: day04_Spring JdbcTemplate&声明式事务
下一篇: day06_SpringMVC的请求和响应
Jenius87V5
博客等级 码龄7年 2粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值