(Java)SpringMVC学习笔记(二)

news/2025/2/15 5:08:27/

前言

继续学习SpringMVC视频教程,争取今明后三天把设定的目标完成

SpringMVC 框架搭建

这一步花了我一上午时间,报了个404错误,没办法,只能从头开始创建项目(心态差点整爆炸,第一次是自认不懂,结果是好的,第二次自认懂点,结果爆炸

求学要保持虚心求教的态度,不可好高骛远

第一步 创建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二步 pom.xml文件配置

修改打包方式==>war

引入相关依赖
在这里插入图片描述
在这里插入图片描述

完整源码如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu.mvc</groupId><artifactId>springMVC-demo1</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- Spring5Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency></dependencies></project>

第三步 web.xml文件配置

src/main目录下创建webapp,要注意是否有蓝点

在这里插入图片描述
在这里插入图片描述

SpringMVC核心配置文件默认的位置在WEB-INF下,有默认的名称为servlet-name标签的值-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!-- 注册前端控制器DispatcherServlet --><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:springMVC.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>
</web-app>

第四步 SpringMVC核心配置文件配置

浏览器通过视图(html文件)向服务器发送请求,若请求路径与注解@RequestMapping的value值相符,则其注解的方法为处理请求的方法,处理完后返回String型字符串即视图名称

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" ><!-- 自动扫描包 --><context:component-scan base-package="com.atguigu.mvc.controller"/><!-- 配置Thymeleaf视图解析器 --><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 视图前缀 --><property name="prefix" value="/WEB-INF/templates/"/><!-- 视图后缀 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8" /></bean></property></bean></property></bean></beans>

第五步 测试是否搭建成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意事项

以下三点务必重点关注:
导入依赖
web.xml配置
核心文件配置

我出错在核心配置文件/WEB-INF/templates/路径错误,应该还有别的错,总之新手要谦虚谨慎
在这里插入图片描述

@RequestMapping注解

@RequestMapping注解的功能

从注解名称上可以看到,@RequestMapping注解的作用是将请求和处理请求的控制器方法关联起来,建立映射关系

SpringMVC接受到指定的请求,就会来找在映射关系中对应的控制器方法来处理这个请求

注意:必须保证RequestMapping处理的请求地址是唯一的

在这里插入图片描述

@RequestMapping注解的位置

在这里插入图片描述

@RequestMapping表示一个类:设置映射请求的请求路径的初始信息
@RequestMapping标识一个方法:设置映射请求的请求路径的具体信息

package com.atguigu.mvc.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("/test")
public class RequestMappingController {//此时请求映射所映射的请求的请求路径为:/test/testRequestMapping@RequestMapping("/testRequestMapping")public String success(){return "success";}
}

在这里插入图片描述
在这里插入图片描述

thymeleaf会自动为@{}大括号配置上下文路径

浏览器解析的/为绝对路径,也就是http://localhost:8080/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实用场景

因为RequestMapping中的value值不能一样,不然请求路径相同,处理的方法会发生冲突

解决就是更改请求路径,这时候RequestMapping中的value值相同也无妨

比如有用户模块和订单模块,两者都有列表,请求都为绝对路径加list参数

那么就会发生冲突

图解

user ====> list
order ====> list

解决之道

user ===> /user/list
order ===> /order/list

通过@RequestMapping标识类来为请求添加一层目录从而区分不同业务

@RequestMapping标识类通常在不同模块的控制器来处理相同的@RequestMapping的value属性值所标识的方法

@RequestMapping中的value属性

@RequestMapping注解的value属性通过请求的请求地址匹配请求映射

@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址 多对应的请求

@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@RequestMapping的method属性

@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射

@RequestMapping注解的method属性是一个RequestMapping类型的数组,表示该请求映射能够匹配多种请求方式的请求

若当前请求的请求地址满足请求映射的value属性,但请求方式不满足method属性,则浏览器报405错误Request method 'POST' not supported

get请求一般是用来获取数据(也可以用来提交数据,但通常用于获取数据)
post请求一般是用来提交数据
原因

get会把请求参数放在url(请求路径)中,隐私性、安全性较差,且请求数据长度有限制,但传输速度快
post请求没有长度限制,请求数据放在请求体中

当不设置method属性值时,不以请求方式为条件来匹配请求映射
在这里插入图片描述
在这里插入图片描述

当设置mehod属性值为RequestMethod=GET时,请求方式不匹配,报405错误
在这里插入图片描述
在这里插入图片描述

当把method属性值设为RequestMethod.GET,RequestMethod.POST后匹配POST请求
在这里插入图片描述

在这里插入图片描述

1、对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解

  • 处理get请求的映射 —> @GetMapping
  • 处理post请求的映射 —> @PostMapping
  • 处理put请求的映射 —>@PutMapping
  • 处理delete请求的映射 —> @DeleteMapping

示例展示
在这里插入图片描述
在这里插入图片描述

2、常用的请求方式有get,post,put,delete

  • 当时目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put 或 delete),则按照默认的请求方式get处理
  • 若要发送put和delete请求,则需通过spring提供的过滤器HiddenHttpMethodFilter,在restful部分会讲到

在这里插入图片描述

在这里插入图片描述

@RequestMapping的params属性

@RequestMapping注解的params属性通过请求的请求参数匹配请求映射

@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

  • “param”:要求请求映射所匹配的请求必须携带param请求参数
  • “!param”:要求请求映射所匹配的请求必须不能携带param请求参数
  • “param=value”:要求请求映射所匹配的请求必须携带param请求参数且参数值为value
  • “param!=value”:要求请求映射所匹配的请求必须携带param请求参数且参数值不能为value

示例如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@RequestMapping的headers属性

  • @RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射
    @RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系
    “header”:要求请求映射所匹配的请求必须携带header请求头信息
    “!header”:要求请求映射所匹配的请求必须不能携带header请求头信息
    “header=value”:要求请求映射所匹配的请求必须携带header请求头信息且值为value
    “header!=value”:要求请求映射所匹配的请求必须携带header请求头信息且值不为value
  • 若当前请求满足@RequestMapping注解的value和method属性,但不满足headers属性,此时页面显示404错误,即资源未找到

示例
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小结

  • 请求后页面响应报400错误,重点看 请求中的请求参数
  • 请求后页面响应报404错误,重点看 请求中的请求头和请求路径
  • 请求后页面响应报405错误,重点看 发送请求的方式

Ant风格的路径

Spring MVC支持Ant风格的URL路径映射,所谓Ant风格其实就是一种通配符风格,可以在处理器映射路径中使用通配符对访问的URL路径进行关联

?:表示任意的单个字符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/在URL中代表路径分隔符,?代表参数拼接符,说是代表任意单个,首先是单个,然后任意加上引号

*:表示任意的0个或多个字符

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

**:表示任意的一层或多层目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意: 在使用时,只能使用 /**/xxx的方式

SpringMVC支持路径中的占位符(重点)

除了支持Ant风格的URL路径映射外,Spring MVC还支持RESTful风格的路径映射

原始方式:/deleteUser?id=1

rest方式:/deleteUser/1

SpringMVC路径中的占位符常用于restful风格中,在请求路径中将某些数据通过路径的方式传输到服务器中

就可以在相应的@RequestMapping注解的value属性中通过占位符(xxx)表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参

示例理解:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取占位符所对应的值比较单一,就是通过@PathVaribale注解将占位符所代表的值和形参进行绑定,也就是将占位符所表示的数据赋值给控制器形参

占位符必须和value进行匹配,这两者关系类似name和value的关系

简单描述:通过键值映射关系,用键获取值,在把键和形参绑定,这样当键有其对应的值,就会传给形参,也就是控制器(服务器端)

  • RESTful风格在HTTP请求中通过GET、POST、PUT和DELETE这4个动词对应4种基本请求操作,具体如下所示:
  • GET:用于获取资源
  • POST:用于新建资源
  • PUT:用于更新资源
  • DELETE:用于删除资源

小结

这一部分,遇到最大的问题就是搭建Spring MVC的时候,所幸解决了。

然后就是一些知识点的学习掌握,总的来说,无论是理解还是实践都没有太大难度

跟着尚硅谷学习Spring MVC,要打起精神,之前学习mybatis和spring都是1.5倍速,学Spring MVC知识点稍微新一些且视频不包含字幕,杨老师也全程无尿点,所以哪怕原倍速,也要聚起精神来学习~


http://www.ppmy.cn/news/3892.html

相关文章

软件测试基础理论体系学习10-什么是本地化测试?本地化测试有哪些问题?本地化测试的重点是什么?

10-什么是本地化测试&#xff1f;本地化测试有哪些问题&#xff1f;本地化测试的重点是什么&#xff1f;1 本地化测试概述1.1软件本地化概念1.2 软件本地化工程1.3 软件本地化的重要性2 本地化测试翻译问题2.1 软件本地化不等于软件翻译2.2 软件本地化语言翻译技术2.2.1 翻译记…

简单理解HTML区块_HTML学习第七篇区块元素和内联元素

简单理解HTML区块_区块元素和内联元素HTML篇_第七章、区块一、区块元素和内联元素1.1块级元素1.2内联元素二、<div>元素三、<span>元素HTML篇_第七章、区块 一、区块元素和内联元素 HTML元素可以通过<div>和<span>元素组合起来&#xff0c;大多数 HT…

[附源码]Node.js计算机毕业设计高校学生宿舍管理信息系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

【Java开发】 Spring 11 :Spring Boot 配置 Web 运行参数并部署至服务器

Spring Boot 项目开发结束后的工作便是运维&#xff0c;简单来说需要配置 Web 运行参数和项目部署两大工作&#xff0c;本文将尽可能详细地给大家讲全&#xff01; 目录 1 定制 Web 容器运行参数 1.1 运行参数介绍 1.2 项目搭建 ① 通过 IDEA Spring Initializr 创建项目 …

Json字符串转成对象

Json字符串转成对象 Hello吖&#x1f60a;&#xff0c;我是孤音&#xff08;一个你理解不了的程序猿&#xff09;&#xff0c;今天来分享一个小技巧&#xff0c;能够大大滴提高效率额 问题&#x1f635; 接收到一串JSON格式的字符串&#xff0c;需要获取其中某些字段的值 思路…

Python——字典

什么是字典&#xff1f; 有时候我们需要存储一组相关党得数据的时候&#xff0c;比如要存储一个人的信息&#xff0c;那么有user_name, age, birthday 等&#xff0c;如果这些信息都存储在列表中&#xff0c;比如[ user_name , age , birthday] 那么用起来可能不是很方便。比较…

功能测试进阶自动化测试,一个女测试工的坎坷之路

绝大多数测试工程师都是从功能测试做起的&#xff0c;工作忙忙碌碌&#xff0c;每天在各种业务需求学习和点点中度过&#xff0c;过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展&#xff0c;从业人员能力的整体进步&#xff0c;软件测试需要具备的能力要…

学习->C++篇十七:C++的类型转换和IO流

目录 一.类型转换 1.C语言中的类型转换 2.C中的类型转换 二.IO流 1. C语言的输入与输出 2. 流是什么 3. stringstream 一.类型转换 1.C语言中的类型转换 &#xff08;1&#xff09;隐式类型转换&#xff0c;编译阶段自动进行&#xff0c;不能转换就编译报错。&#xff…