SpringMVC基础篇(二)

news/2025/1/3 9:55:08/

文章目录

    • 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&…