目录
三、@PostMapping、@GetMapping、@PutMapping、@DeleteMapping
一、RESTful风格支持
1.1 RESTful风格介绍
1.2 postman使用
点击new-collection创建请求集合
添加请求
保存请求到集合,以后可以随时发送该请求
测试:
二、@PathVariable
2.1 实例程序
package com.example.controller;
import com.example.domain.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/student")
// 模拟学生的增删改查控制器
public class StudentController {
// 路径的{id}表示占位符,最后会封装到方法的参数中使用
// 删除学生
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
public String deleteStudent(@PathVariable("id") int id, HttpServletRequest request){
System.out.println("删除id为"+id+"的学生");
String str = "删除id为"+id+"的学生";
request.setAttribute("delete",str);
return "student";
}
// 如果占位符和参数名相同,可以省略@PathVariable的value属性
// 根据id查询学生
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public String findStudentById(@PathVariable int id,HttpServletRequest request){
request.setAttribute("get","根据id查询学生:"+id);
System.out.println("根据id查询学生\t"+id);
return "student";
}
// 新增学生
@RequestMapping(value = "/{id}",method = RequestMethod.POST)
public String addStudent(@PathVariable int id, Student student, HttpServletRequest request){
request.setAttribute("add",student.toString());
System.out.println("新增学生:"+student+"\t"+id);
return "student";
}
// 修改学生
@RequestMapping(value = "/{id}",method = RequestMethod.PUT)
public String updateStudent(@PathVariable int id,Student student,HttpServletRequest request){
System.out.println("修改学生\t"+id+"\t"+student);
request.setAttribute("update","修改学生:"+student);
return "student";
}
}
JSP页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>student</title>
</head>
<body>
<h1>Add:${requestScope.add}</h1>
<h1>Delete:${requestScope.delete}</h1>
<h1>Update:${requestScope.update}</h1>
<h1>Get:${requestScope.get}</h1>
</body>
</html>
2.2 测试结果
三、@PostMapping、@GetMapping、@PutMapping、@DeleteMapping
四、@HiddenHttpMethodFilter
4.1 在web.xml配置过滤器
<!-- 请求方式过滤器 -->
<filter>
<filter-name>httpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>httpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.2 控制器方法
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/c7")
public class MyController7 {
@DeleteMapping("/delete")
public String testDelete(HttpServletRequest request){
System.out.println("删除方法");
request.setAttribute("delete","删除方法");
return "student";
}
@PutMapping("/put")
public String testPut(HttpServletRequest request){
request.setAttribute("update","修改方法");
System.out.println("修改方法");
return "student";
}
}
4.3 JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>DELETE、PUT提交</title>
</head>
<body>
<!-- 删除 -->
<%-- 提交DELETE、PUT请求,表单必须提交方式为post--%>
<%-- 表单中有一个隐藏域,name值为_method,value值为提交方式--%>
<form action="/c7/delete" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除">
</form>
<!-- 修改 -->
<form action="/c7/put" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="修改">
</form>
</body>
</html>
4.4 测试结果
往期专栏&文章相关导读
1. Maven系列专栏文章
Maven系列专栏 | Maven工程开发 |
Maven聚合开发【实例详解---5555字】 |
2. Mybatis系列专栏文章
Mybatis系列专栏 | MyBatis入门配置 |
Mybatis入门案例【超详细】 | |
MyBatis配置文件 —— 相关标签详解 | |
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填 | |
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分) | |
Mybatis分页查询——四种传参方式 | |
Mybatis一级缓存和二级缓存(带测试方法) | |
Mybatis分解式查询 | |
Mybatis关联查询【附实战案例】 | |
MyBatis注解开发---实现增删查改和动态SQL | |
MyBatis注解开发---实现自定义映射关系和关联查询 |
3. Spring系列专栏文章
Spring系列专栏 | Spring IOC 入门简介【自定义容器实例】 |
IOC使用Spring实现附实例详解 | |
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式 | |
Spring DI简介及依赖注入方式和依赖注入类型 | |
Spring IOC相关注解运用——上篇 | |
Spring IOC相关注解运用——下篇 | |
Spring AOP简介及相关案例 | |
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】 | |
Spring事务简介及相关案例 | |
Spring 事务管理方案和事务管理器及事务控制的API | |
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务 |
4. Spring MVC系列专栏文章
SpringMVC系列专栏 | Spring MVC简介附入门案例 |
Spring MVC各种参数获取及获取方式自定义类型转换器和编码过滤器 | |
Spring MVC获取参数和自定义参数类型转换器及编码过滤器 | |
Spring MVC处理响应附案例详解 | |
Spring MVC相关注解运用 —— 上篇 | |
Spring MVC相关注解运用 —— 中篇 | |
Spring MVC相关注解运用 —— 下篇 | |
Spring MVC多种情况下的文件上传 | |
Spring MVC异步上传、跨服务器上传和文件下载 | |
Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】 | |
Spring MVC拦截器和跨域请求 | |
SSM整合案例【C站讲解最详细流程的案例】 |