SpringMVC基础篇(二)

news/2024/5/24 12:26:15/ 标签: lua, 开发语言, java, spring, springmvc

文章目录

    • 1.Postman
        • 1.基本介绍
          • Postman是什么?
        • 2.Postman快速入门
          • 1.Postman下载
            • 点击安装自动安装在系统盘
          • 2.基本操作
            • 1.修改字体大小
            • 2.ctrl + “+” 放大页面
            • 3.进入创建请求界面
          • 2.需求分析
          • 3.具体操作
          • 4.保存请求到文件夹中
            • 1.点击保存
            • 2.创建新的文件夹
            • 3.保存成功
        • 3.使用Postman完成对前面编写的UserHander方法的请求
          • 1.分析
          • 2.发送请求
        • 4. 对search方法进行请求(带参数)
          • 1.分析
          • 2.发送请求
        • 5.对im方法发送请求(ant)
          • 1.分析
          • 2.发送请求
        • 6.对register方法发送请求(路径参数)
          • 1.分析
          • 2.发送请求
        • 7.对hello方法发送请求(带参数)
          • 发送请求
        • 8.Postman发送json数据(需要修改请求头)
    • 2.Rest(优雅的url请求风格)
        • 1.基本介绍
        • 2.Rest风格的url案例(crud)
          • 1.需求分析
          • 2.环境配置(在上一篇的环境基础)
            • 1.配置web.xml
            • 2.配置springDispatcherServlet-servlet.xml
          • 3.前端样式模板rest.jsp
          • 4.GET
            • 1.BookHandler.java
            • 2.rest.jsp
            • 3.结果展示
          • 5.POST
            • 1.BookHandler.java
            • 2.rest.jsp
            • 3.结果展示
          • 6.DELETE(重点看)
            • 1.rest.jsp
            • 2.BookHandler.java
            • 3.结果展示
          • 7.PUT
            • 1.rest.jsp
            • 2.BookHandler.java
            • 3.结果展示
          • 8.HiddenHttpMethodFilter源码解析(debug)
            • 1.下断点
            • 2.点击修改书籍
            • 3.下一步,发现了请求是POST
            • 4.下一步,发现参数_method的值为PUT
            • 5.下一步,将这个值转换成大写(意味着,在填值的时候,不区分大小写)
            • 6.下一步,判断取得的值PUT是不是在集合中
            • 7.下两步,将请求转换成PUT类型使得SpringMVC框架可以识别
          • 9.Rest的DELETE和PUT总结

1.Postman

1.基本介绍
Postman是什么?

image-20240224153523195

2.Postman快速入门
1.Postman下载
点击安装自动安装在系统盘

image-20240224154311749

2.基本操作
1.修改字体大小

image-20240224154612019

2.ctrl + “+” 放大页面
3.进入创建请求界面

image-20240224154911197

image-20240224154939875

2.需求分析

image-20240224154158378

3.具体操作

image-20240224155133759

4.保存请求到文件夹中
1.点击保存

image-20240224155227617

2.创建新的文件夹

image-20240224155424743

3.保存成功

image-20240224155450256

3.使用Postman完成对前面编写的UserHander方法的请求

image-20240224161139293

1.分析

image-20240224161201226

2.发送请求

image-20240224161249104

4. 对search方法进行请求(带参数)

image-20240224161519287

1.分析

image-20240224161843531

2.发送请求

image-20240224161936610

5.对im方法发送请求(ant)

image-20240224162106552

1.分析

image-20240224162643205

2.发送请求

image-20240224162708478

6.对register方法发送请求(路径参数)

image-20240224162819570

1.分析

image-20240224163022132

2.发送请求

image-20240224163002537

image-20240224163009484

7.对hello方法发送请求(带参数)

image-20240224163218681

发送请求

image-20240224163126470

8.Postman发送json数据(需要修改请求头)

image-20240224163807285

image-20240224163935801

2.Rest(优雅的url请求风格)

1.基本介绍

image-20240224165046213

image-20240224165100487

2.Rest风格的url案例(crud)
1.需求分析

image-20240224165606849

2.环境配置(在上一篇的环境基础)
1.配置web.xml
    <!--配置HiddenHttpMethodFilter--><!--把post方式提交的delete和put请求进行转换--><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><!--所有请求都经过这个过滤器--><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

image-20240224172107603

springDispatcherServletservletxml_152">2.配置springDispatcherServlet-servlet.xml
    <!--加入两个常规配置--><!--支持SpringMVC的高级功能,比如JSR303校验,映射动态请求--><mvc:annotation-driven></mvc:annotation-driven><!--注意:这个annotation-driven要选择mvc的那个--><!--springMVC不能处理的请求,交给tomcat处理,比如css,js--><mvc:default-servlet-handler></mvc:default-servlet-handler>

image-20240224172357900

3.前端样式模板rest.jsp
<%--Date: 2024/2/24Time: 18:21User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h3>rest风格的crud</h3>
<br>
<hr>
<h3>rest风格的查阅书籍(get)</h3>
<a href="">点击查阅书籍</a>
<br>
<hr>
<h3>rest风格的添加书籍(post)</h3><form action="" method="">name:<input name="bookName" type="text"><br><input type="submit" value="添加书籍">
</form>
<br>
<hr>
<h3>rest风格的删除书籍(delete)</h3>
<a href="">删除指定id的书籍</a>
<br>
<hr>
<h3>rest风格的修改书籍(put)</h3><form action="" method=""><input type="submit" value="修改书籍">
</form>
<br>
<hr>
</body>
</html>
4.GET
java_212">1.BookHandler.java
java">@RequestMapping("/user")
@Controller
public class BookHandler {@GetMapping("/book/{id}") //这里使用的是路径参数public String getBook(@PathVariable("id") String id) {System.out.println("查询书籍id为" + id);return "success";}
}
2.rest.jsp

image-20240224184544701

3.结果展示

image-20240224184628183

5.POST
java_236">1.BookHandler.java
java">@RequestMapping("/user")
@Controller
public class BookHandler {@PostMapping("/book")public String addBook(String bookName) {System.out.println("添加书籍:" + bookName);return "success";}
}
2.rest.jsp

image-20240224185414443

3.结果展示

image-20240224185426051

6.DELETE(重点看)
1.rest.jsp
<%--Date: 2024/2/24Time: 18:21User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><%--引入jquery--%><script src="script/jquery-3.6.0.min.js"></script><script>$(function () {//当点击删除按钮的时候动态设置隐藏表单的action和_method的值$("#deleteBook").click(function () {//获取表单的jyquery对象,并将超链接的网址给其赋值$("#hiddenForm").attr("action", this.href);//获取隐藏按钮的值,并设置为delete$(":hidden").val("DELETE");//提交表单$("#hiddenForm").submit();//阻止超链接的默认提交行为!!!!!!return false;})})</script>
</head>
<body>
<h3>rest风格的crud</h3>
<br>
<hr><h3>rest风格的删除书籍(delete)</h3>
<a href="user/book/100" id="deleteBook">删除指定id的书籍</a>
<%--隐藏表单,用于传递name=_method的参数--%>
<%--动态传入action和_method的参数,并且以post的形式发送--%>
<form action="" method="post" id="hiddenForm" ><input type="hidden" name="_method">
</form>
<br>
<hr>
java_310">2.BookHandler.java
java">package com.sun.web.rest;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;/*** 处理rest风格的请求* @author 孙显圣* @version 1.0*/
@RequestMapping("/user")
@Controller
public class BookHandler {//删除书籍@RequestMapping (value = "/book/{id}", method = RequestMethod.DELETE) //路径参数public String deleteBook(@PathVariable("id") String id) {System.out.println("删除书籍: id为" + id);//return给视图解析器,会解析这个重定向,让浏览器去访问网址/springmvc/user/successreturn "redirect:/user/success";}//重定向到success.jsp@RequestMapping("/success")public String success() {return "success";}}
3.结果展示

image-20240224204342936

7.PUT
1.rest.jsp
<%--Date: 2024/2/24Time: 18:21User: 孙显圣Version:1.0
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head></head>
<body>
<h3>rest风格的crud</h3>
<br>
<hr><h3>rest风格的修改书籍(put)</h3>
<%--1.post类型--%>
<form action="user/book/update" method="post">请输入id:<input type="text" name="id"><%--2.传入一个name=_method值为PUT的参数--%><input type="hidden" name="_method" value="PUT"><input type="submit" id="update" value="修改书籍">
</form>
<br>
<hr>
</body>
</html>
java_383">2.BookHandler.java
java">package com.sun.web.rest;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;/*** 处理rest风格的请求* @author 孙显圣* @version 1.0*/
@RequestMapping("/user")
@Controller
public class BookHandler {//修改书籍@PutMapping("/book/update")public String updateBook(String id){System.out.println("修改书籍id为" + id);return "redirect:/user/success";}//重定向到success.jsp@RequestMapping("/success")public String success() {return "success";}
}
3.结果展示

image-20240224205634569

image-20240224205627514

8.HiddenHttpMethodFilter源码解析(debug)
1.下断点

image-20240224210142872

2.点击修改书籍

image-20240224210249173

image-20240224210303920

3.下一步,发现了请求是POST

image-20240224210403994

4.下一步,发现参数_method的值为PUT

image-20240224210733342

5.下一步,将这个值转换成大写(意味着,在填值的时候,不区分大小写)

image-20240224210849757

6.下一步,判断取得的值PUT是不是在集合中

image-20240224211017278

7.下两步,将请求转换成PUT类型使得SpringMVC框架可以识别

image-20240224211246657

9.Rest的DELETE和PUT总结
  • PUT
    • 表单提交的方式要是POST
    • 表单内部有一个参数名为_method,值为PUT
  • 如果是以超链接的形式提交(比如前面的例子中的DELETE)
    • 表单提交的方式为POST
    • 动态设置参数名为_method的值为DELETE
    • 动态设置action
    • 注意要阻止超链接自己的提交行为,否则会变成GET!!!

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

相关文章

互联网轻量级框架整合之MyBatis动态SQL

MyBatis的动态SQL是一项强大且实用的功能&#xff0c;它允许开发者在XML映射文件中编写可灵活变化的SQL语句&#xff0c;这些语句能够根据传入参数的条件或值动态地调整其结构和内容。这样&#xff0c;程序可以在运行时生成适应特定业务场景的SQL&#xff0c;避免了手动拼接SQL…

css文字和span在一行对不齐

1.需求背景 父盒子中有两个span&#xff0c;但是span中的文字对不齐。如下图&#xff0c;明显右边的文字偏高 处理后的效果&#xff08;已经对齐&#xff0c;图中标记的是基本的div结构&#xff09;&#xff1a; 2.该问题出现的原因&#xff1a; span1设置的高度比span2内…

设计模式——2_A 访问者(Visitor)

文章目录 定义图纸一个例子&#xff1a;如何给好奇宝宝提供他想知道的内容菜单、菜品和配方Menu(菜单) & Cuisine(菜品)Material(物料、食材) 产地、有机蔬菜和卡路里Cuisine & Material 访问者VisitorCuisine & Material 碎碎念访问者和双分派访问者和代理写在最后…

VBA之正则表达式(45)-- 提取SQL语句中的函数

实例需求&#xff1a;数据工程师或者DBA日常工作中大量使用SQL语句&#xff0c;有些语句&#xff08;或者存储过程&#xff09;行数非常多&#xff0c;现在需要提取其中的所有使用了函数的相关部分&#xff0c;对于如下语句&#xff0c;需要提取Mid([编号],2,4) AS [产品]和dat…

【上海大学计算机组成原理实验报告】四、指令系统实验

一、实验目的 了解指令结构、PC寄存器的功能和指令系统的基本工作原理。 学习设计指令的方法。 二、实验原理 根据实验指导书的相关内容&#xff0c;对于部分使用频率很高&#xff0c;且只用几条微指令即可完成的简单操作&#xff0c;可以把这部分简单操作的微指令序列固定下…

扩散卷积模型 笔记

1 Title Diffusion Convolutional Neural Networks&#xff08;James Atwood and Don Towsley&#xff09;【NeurIPS 2016】 2 Conclusion This paper presents diffusion-convolutional neural networks (DCNNs), a new model for graph-structured data. Through the introd…

13个Java基础面试题

Hi&#xff0c;大家好&#xff0c;我是王二蛋。 金三银四求职季&#xff0c;特地为大家整理出13个 Java 基础面试题&#xff0c;希望能为正在准备或即将参与面试的小伙伴们提供些许帮助。 后续还会整理关于线程、IO、JUC等Java相关面试题&#xff0c;敬请各位持续关注。 这1…

python常见语法

变量赋值&#xff1a; my_var 10 基本数据类型&#xff1a; 整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、字符串&#xff08;str&#xff09;、布尔值&#xff08;bool&#xff09;、列表&#xff08;list&#xff09;、元组&#xff08;tuple&…

myql 获取二维数组字符串的最后一个值

继续《mysql 存储过程和函数》的实战&#xff1a; 要分离字符串&#xff1a;[["1","1007","1007012"],["5","5005"],["6","6002","6002005"],["7","7003"],["8&quo…

零基础入门学习Python第一阶10图形用户界面和游戏开发

图形用户界面和游戏开发 基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&…

Python-VBA函数之旅-getattr函数

目录 一、getattr函数的常见应用场景&#xff1a; 二、getattr函数使用注意事项&#xff1a; 1、getattr函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.21…

Linux进程详解三:进程状态

文章目录 进程状态Linux下的进程状态运行态-R阻塞态浅度休眠-S深度睡眠-D暂停状态-T暂停状态-t 终止态僵尸-Z死亡-X 孤儿进程 进程状态 进程的状态&#xff0c;本质上就是一个整型变量&#xff0c;在task_struct中的一个整型变量。 状态的存在决定了你的后续行为动作。 Linu…

【Linux】日志分析与管理

作为一个运维&#xff0c;如果不会看日志&#xff0c;就好比是冬天刚刚用热水泡完了脚&#xff0c;接着就立马让人把水喝掉。 目录 一、Inode介绍 1.1 什么是inode 1.2 inode表内容 1.3 查看inode号的方式 二、日志分析 2.1 日志的用途 2.2 日志的分类 2.3 日志级别 2…

maya显示隐藏 动画长度

目录 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 脚本控制显示/隐藏 获取动画长度python脚本 大纲视图&#xff0c;选择节点&#xff0c;H控制显示与隐藏 使用Viewport显示/隐藏 这是最直观的方法&#xff0c;适合临时隐藏Mesh以便专…

EelasticSearch的docker安装-----》es客户端使用!!!

1.Docker安装 docker run -d --name es7 -e ES_JAVA_POTS"-Xms256m -Xmx256m" -e "discovery.typesingle-node" -v /opt/es7/data/:/usr/share/elasticsearch/data -p 9200:9200 -p 9300:9300 elasticsearch:7.14.02.客户端UI工具&#xff0c;Edge浏览器…

北航计算机软件技术基础课程作业笔记【4】

题目&#xff08;好像以前没加&#xff09; 二叉树与哈希表 作业 1.二叉树前序遍历结果 二叉树结构为 代码实现中序后序推理前序表达式 #include <iostream> #include <stack> #include <string> #include <vector> #include <deque> ​ // …

Laravel 6 - 第十五章 验证器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

webview的使用方法和后退键的处理

WebView是一个能够显示网页内容的控件&#xff0c;通常用于Android或iOS应用程序中嵌入网页。下面我将分别说明WebView在Android和iOS中的使用方法&#xff0c;以及如何处理后退键。 Android中的WebView使用方法 添加WebView到布局文件中 在你的布局XML文件中添加WebView控件…

Linux 的情况下实现贪吃蛇 -- 第二十八天

1.keypad(stdsrc,1) 参数表示是否接收&#xff0c;1表示接收指令 2.思路&#xff1a;初始化initNcurses()&#xff0c; 封装地图函数实现地图gamePic&#xff08;&#xff09; 分三部分实现&#xff1a;2.1: 在第0行&#xff1a;打印 "--"," | "和&q…

【JavaScript编程实操14】DOM实操_回到顶部

前言 本次主要是针对Javascript阶段的DOM实操方面的练习&#xff0c;本次主要实现当页面内容过多时&#xff0c;可以点击按钮&#xff0c;快速回到页面顶部的效果。这次的实现逻辑比较简单&#xff0c;主要是应用函数实现页面的回到顶部功能&#xff0c;this.scrollTo(0, 0)可以…