SpringMVC(一)------快速入门

2023-05-16

Spring与Web环境集成

  • ApplicationContext应用上下文获取方式

    • 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) ,这样的弊端是配置文件加载多次,应用上下文对象创建多次。
    • 在Web项目中,可以使用ServletContextListener监听Web应用的启动,我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationContext,在将其存储到最大的域servletContext域中,这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。
    • Spring提供获取应用上下文的工具
      • 上面的分析不用手动实现,Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中,提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。
      • 所以我们需要做的只有两件事:
      • ①在web.xml中配置ContextLoaderListener监听器(导入spring-web坐标)
      • ②使用WebApplicationContextUtils获得应用上下文对象ApplicationContext
    • 导入Spring集成web的坐标
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>4.1.9.RELEASE</version>
        </dependency>
    
    • 配置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>
    
    • 通过工具获得应用上下文对象
    ApplicationContext applicationContext =  
      WebApplicationContextUtils.getWebApplicationContext(servletContext);
      Object obj = applicationContext.getBean("id");
    
  • 知识要点

    • Spring集成web环境步骤
      • ①配置ContextLoaderListener监听器
      • ②使用WebApplicationContextUtils获得应用上下文

SpringMVC的简介

  • SpringMVC概述

    • SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属
    • SpringFrameWork的后续产品,已经融合在 Spring Web Flow 中。
    • SpringMVC 已经成为目前最主流的MVC框架之一,并且随着Spring3.0 的发布,全面超越Struts2,成为最优秀的MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful 编程风格的请求。
    • 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.demo"/>
</beans>

⑥访问测试地址

http://localhost:8080/demo/quick
  • SpringMVC流程图示
    在这里插入图片描述
  • 知识要点
    • SpringMVC的开发步骤
    • ①导入SpringMVC相关坐标
    • ②配置SpringMVC核心控制器DispathcerServlet
    • ③创建Controller类和视图页面
    • ④使用注解配置Controller类中业务方法的映射地址
    • ⑤配置SpringMVC核心文件 spring-mvc.xml
    • ⑥客户端发起请求测试

SpringMVC的组件解析

  • SpringMVC的执行流程
    在这里插入图片描述
  • ①用户发送请求至前端控制器DispatcherServlet。
  • ②DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  • ③处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  • ④DispatcherServlet调用HandlerAdapter处理器适配器。
  • ⑤HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  • ⑥Controller执行完成返回ModelAndView。
  • ⑦HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  • ⑧DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  • ⑨ViewReslover解析后返回具体View。
  • ⑩DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。
  • SpringMVC组件解析
    • 前端控制器:DispatcherServlet
      • 用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
    • 处理器映射器:HandlerMapping
      • HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
    • 处理器适配器:HandlerAdapter
      • 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
    • 处理器:Handler
      • 它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由Handler 对具体的用户请求进行处理。
    • 视图解析器:View Resolver
      • View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。
    • 视图:View
      • SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面
  • 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.demo.controller"/>进行组件扫描。
    • Spring MVC的XML配置解析
    • SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/DispatcherServlet.properties,该文件中配置了默认的视图解析器,如下:
    org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.Inter
    nalResourceViewResolver
    
    • 翻看该解析器源码,可以看到该解析器的默认设置,如下:
    REDIRECT_URL_PREFIX = "redirect:" --重定向前缀
    FORWARD_URL_PREFIX = "forward:"  --转发前缀(默认值)
    prefix = "";   --视图名称前缀
    suffix = "";   --视图名称后缀
    
    • 视图解析器
      • 我们可以通过属性注入的方式修改视图的的前后缀
    <!--配置内部资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/views/"></property>
     <property name="suffix" value=".jsp"></property>
    </bean>
    
  • 知识要点
  • SpringMVC的相关组件
    • 前端控制器:DispatcherServlet
    • 处理器映射器:HandlerMapping
    • 处理器适配器:HandlerAdapter
    • 处理器:Handler
    • 视图解析器:View Resolver
    • 视图:View
  • SpringMVC的注解和配置
    • 请求映射注解:@RequestMapping
    • 视图解析器配置:
    • REDIRECT_URL_PREFIX = “redirect:”
    • FORWARD_URL_PREFIX = “forward:”
    • prefix = “”;
    • suffix = “”;

参考:https://www.bilibili.com/video/BV1WZ4y1P7Bp

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringMVC(一)------快速入门 的相关文章

  • csp-m4

    反思 此次模测做的不太理想 xff0c t1因为一个循环条件写错导致只拿到了3个点的分数 xff0c t2是读题不仔细没有搞清输出的数据同时对于数据范围估计也产生了错误 xff0c 导致爆0 xff0c t4看到树就犯怵的习惯还有待克服 x
  • anaconda重装后缺失大量文件夹及各种文件并且安装完毕后在菜单栏找不到快捷方式

    项目场景 xff1a anaconda是python程序设计中不可缺少的一个工具 问题描述 anaconda的最新版本重装后 xff0c 只有conda meta Lib Library pkgs等几个文件夹 xff08 没有截图 xff0
  • 如何解决在Linux CLI终端界面中汉字方块乱码

    解决Linux 纯命令界面下中文是方块乱码的问题 最近在学习Linux安全并给磁盘LUKS加密时 xff0c 发现在telinit 1模式下 xff0c 原本正常的中文字符均变成了方块乱码 xff08 如下图 xff09 xff0c 这使得
  • 基于大数据平台的毕业设计

    前言 2022年最新大数据毕设文章 xff1a 基于大数据平台的毕业设计01 xff1a 基于Docker的HDP集群搭建 最近有很多人问我 xff0c 大数据专业有什么好的毕设项目 xff0c 我就简单的回复了一下 也有直接问我要源码的
  • DM9000在TQ2440移植中的地址内容

    2 2 修改宏定义 三个地址相关宏定义是参考别的单板配置复制过来的 xff0c 肯定不能用 xff0c 查看S3C2440芯片手册和原理图 xff0c 确定这三个地址 首先是基地址CONFIG DM9000 BASE xff0c 在原理图中
  • node学习笔记

    阶段一 1 初始Node js javascript 运行环境 1 2 Node js中的javacript 运行环境 1 3 Node js环境安装 百度 1 4 node js 执行javaScript 代码 2 fs文件系统模块 2
  • SQL实验三 select语句查询操作

    SQL select查询实验 一 实验目的 了解查询的概念和方法掌握SQL Server集成管理器查询子窗口中执行select操作的方法掌握select语句在单表查询中的应用掌握select语句在多表查询中的应用掌握select语句在复杂查
  • [编程题]字母交换

    题目描述 xff1a 字符串S由小写字母构成 xff0c 长度为n 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交换m次之后 xff0c 字符串中最多有多少个连续的位置上的字母相同 xff1f 输入
  • 阿里云域名备案问题 注销主体步骤

    阿里云域名备案问题 注销主体步骤 注意 xff1a 当主体下只有一个域名时 xff0c 若在阿里云备案平台按 注销网站 xff0c 主体会成为空壳主体 xff0c 阿里云备案平台不会再显示主体了 xff0c 接下来就按不了 注销主体 操作
  • jenkins安装和配置(一):ubuntu 20.04 jenkins安装

    参考 Installing Jenkins 参考 How to Install and Configure Jenkins on Ubuntu 20 04 LTS 一 安装前提 Java 8 or Java 11 are required
  • 泛型 知识点 总结

    为什么要有泛型 泛型实质上就是使程序员定义安全的类型 在没有出现泛型之前 java也提供了对Objct的引用 34 任意化 34 操作 这种 34 任意化 34 操作就是对Object引用进行向下转型及向上转型操作 但是某些强制类型转换的错
  • 手把手教你centos8/rhel8使用国内源安装virtualbox If your system is using EFI Secure Boot you may need to

    这两天装virtualbox的时候又遇到问题了 xff0c 它显示这个错误 xff1a If your system is using EFI Secure Boot you may need to sign the kernel modu
  • gitlab配置

    在Ubuntu下安装gitlab ce 首先全程使用root进行配置 更新apt源 apt update 安装依赖项 Postfix Configuration 选择 No configuration 就好 apt span class t
  • vs2019更新后的设置问题for(

    最近不小心把vs2019更新了一下 xff0c 虽然增加了很多新功能 xff0c 但是对于我来说最大的意义在于它的字体颜色好像更丰富了 xff0c 其他的也不太能用得到 但是更新之后 xff0c 写for循环的时候发现for i 61 0
  • 插入最少的字符,构造回文串

    题目 xff1a 题目链接 给一个字符串 xff0c 在任意的位置插入一些字符 xff0c 使得这个字符串成为回文串 xff0c 最少需要插入多少个字符 ps xff1a 有一个和这个题很像的题 xff0c 都是插入最少的字符构造回文串 x
  • Linux常用命令大全

    Linux常用命令大全 一 进程管理 xff08 1 xff09 Linux中Kill进程的方法 二 系统信息三 关机 系统的关机 重启以及登出 四 文件和目录五 文件搜索六 挂载一个文件系统七 磁盘空间八 系统负载 top九 用户和群组十
  • 字符的最少变换次数,并查集

    题意 xff1a 给两个字符串a xff0c b a合和b中的字符都是前20个字母 xff08 a t xff09 xff0c a需要进行一些变换 xff0c 使得a等于b 对于每一次变换 xff1a 选取a中相同的字符 xff0c 然后把
  • 并查集 判断无向图是否有环

    无向图中 xff0c 给定一些边 xff0c 然后判断这些边组成的图是否有环 注意这个方法必须保证没有输入重边 对于一条边用 a b 表示 xff0c 然后把a xff0c b加入到并查集中 如果又加入了一条边 b c xff0c 那么如果
  • 彻底地删除垃圾软件

    当不小心下载了垃圾软件 xff0c 想删除掉 xff0c 但是又删不掉 xff0c 或者是删不干净的一些办法 首先 xff0c 我们应该把软件关掉 xff0c 让它停止运行 然后找到软件所在的文件夹 xff0c 把一些能够删除的文件都删除掉
  • Aizu_GRL_1_c floyd算法,判断负环的题

    这题应该是很简单的 xff0c 但是我wa了好久 看了别人的博客 xff0c 还是想不明白哪有问题 xff0c 我发现别人的ac代码要判断一下 xff0c mp i k 和mp k jj 是不是等于inf xff0c 我觉得判不判断没啥区别

随机推荐

  • codeforces 1165D(求因子的问题)

    题意 xff1a 给出除了1和它本身之外的所有因子 xff0c 找出最小的这个数 xff0c 如果有冲突的数就输出 1 思路 xff1a 我是当时没做出来看了大佬的博客才知道 https www cnblogs com fengxunlin
  • cmd 复制文件语法不正确

    复制文件到另一个文件夹 xff1a 语法格式 xff1a copy 原文件的路径和名称 目标文件夹的路径 说语法不正确的时候可能是路径中有空格 比如C Program Files x86 CodeBlocks share CodeBlock
  • 关于斜率的计算

    codeforces 842A 从L到R中选取一个数作为分子 xff0c 从x到y中选取一个数作为分母 xff0c 给一个数k 问有没有可能这个分数等于k 这题也是有够坑的 xff0c 用二分精确的判断要超时 xff0c 但是只是看在不在范
  • c语言线性表实现电话簿(学生信息)

    c语言线性表实现电话簿 span class token macro property span class token directive keyword include span span class token string lt s
  • vsc code-runner插件运行python文件,解释器更改为ananconda

    code runner刚下载下来的默认解释器是系统自带的 xff0c 并不是anaconda的 选择文件 首选项 找到code runner executor map 找到python的命令 xff0c 改为自己的解释器位置即可
  • NT_STATUS_ACCESS_DENIED listing \*

    在centos8上配了个SAMBA与windows共享文件 访问共享目录出现 NT STATUS ACCESS DENIED listing xff0c smb gt span class token operator span span
  • RocketMQ发送普通消息的所有方法以及代码示例

    RocketMQ发送普通消息的所有方法以及代码示例 一 使用RocketMQTemplate发送消息 xff08 整合Springboot xff09 xff08 1 xff09 void send Message lt gt messag
  • C语言总结day01

    day01 1 C语言标识符 C语言标识符需满足以下条件 只能由英文字母 26个英文字母 xff0c 包括大小写即共52个 数字 0 9 和下划线组成长度为1 32必须以英文字母或下划线开头 2 C语言风格 C语言严格区分英文字母的大小写C
  • C语言总结day02

    day02 1 运算符 算术运算符 单目运算符 xff1a 43 正 xff1b 负 xff1b 双目运算符 xff1a 这三个同级 gt 43 这两个同级 注意 xff1a 前边三个的优先级大于后边的两个 xff1b 双目运算符两边运算数
  • C语言总结day03

    day03 1 数据的输入输出 数据的输出 xff1a 从计算机向输出设备 如显示器 打印机等 输出数据称为输出 数据的输入 xff1a 从输入设备 如键盘 磁盘 光盘 扫描仪等 向计算机输入数据称为输入 C语言函数库中有一批 34 标准输
  • C语言总结day04

    day04 1 int a n 是错误的 C语言中不允许对数组的大小作动态定义 2 字符数组的初始化 char a 61 I am Student char a 10 利用for语句对每个进行初始化 3 字符数组的输入和输出输入 char
  • C语言总结day06

    day06 1 定义和使用结构体变量 C语言允许用户建立由不同类型数据组成的组合型的数据结构 xff0c 它称为结构体 声明格式 struct 结构体名 成员列表 定义结构体类型变量 struct 结构体名 结构体变量 在声明类型的同时定义
  • C语言总结day07

    day07 一些概念理解 1 为什么使用指针 每一个编程语言都使用指针C 43 43 将指针暴露给了 用户 xff08 程序员 xff09 xff0c 而java和C 等语言则将指针隐蔽起来了 2 指针和引用的区别 本质 xff1a 引用是
  • C语言总结day05

    day05 1 函数间可以相互调用 xff0c 但是不能调用main函数 xff0c main函数是被操作系统调用的 2 数组作为函数参数 数组元素可以作函数参数 值传递 注意 xff1a 数组元素可以用作函数实参 xff0c 不能用作形参
  • SSM-Spring入门

    Spring学习 1 Spring简介 Spring是什么 Spring是分层的Java SE EE应用full stack轻量级开源框架 xff0c 是以loC Inverse Of Contorl 反转控制 和AOP Aspect Or
  • SSM-Spring学习(二)

    Spring IoC和DI注解开发 Spring配置数据源 数据源 xff08 连接池 xff09 介绍 xff1a 数据库连接池概念 百度百科 xff1a 数据库连接池负责分配 管理和释放数据库连接 xff0c 它允许应用程序重复使用一个
  • SSM-Spring(三)-AOP

    简介 什么是 AOP AOP 为 span class token class name Aspect span span class token class name Oriented span span class token clas
  • RocetMQ发送顺序消息的所有方法以及代码示例

    RocetMQ发送顺序消息的所有方法以及代码示例 一 使用RocketMQTemplate发送顺序消息 xff08 1 xff09 SendResult syncSendOrderly String destination Message
  • Spring(四)---Spring Jdbc Template基本使用

    1 概述 JdbcTemplate是spring框架中提供的一个对象 xff0c 是对原始繁琐的Jdbc API对象的简单封装 spring框架 为我们提供了很多的操作模板类 例如 xff1a 操作关系型数据的JdbcTemplate和Hi
  • SpringMVC(一)------快速入门

    Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext spring配置文件 方式获取的 xff0c 但是每次从容器中获