java - Spring Boot 上 H2 数据库的 HTTP 删除

标签 java spring-boot h2 http-delete

我正在学习 Spring Boot,刚刚开始看到 H2-Database。我设法发送 HTTP GET 请求以在数据库中插入新行,但无法删除它。

这就是我插入新行的方法:

@GetMapping("/addAlien")
public String addAlien(Alien alien) {
  rep.save(alien);
  return "home.jsp";
}

这是我用来发送 GET 请求的 JSP 代码:

<form action="addAlien">
  <input type="text" name="id"><br>
  <input type="text" name="name"><br>
  <input type="text" name="points"><br>
  <input type="submit"><br>
</form>

这是我用来填充 H2 数据库的 SQL 文件

insert into alien values (101, 'Bilu', 100)
insert into alien values (102, 'Vargínia', 100)
insert into alien values (103, 'Meeseek', 100)
insert into alien values (104, 'Jack', 100)
insert into alien values (105, 'MrPopButthole', 100)

我有另一种表单,类似于我用来发送 GET 请求的表单,但要提交“/deleteAlien”。提交会激活下面的代码,尽管它不起作用:

@DeleteMapping("/deleteAlien")
public int deleteAlien(@RequestParam int id) {
  rep.deleteById(id);
  ModelAndView mv = new ModelAndView("showAlien.jsp");
  Alien alien = rep.findById(id).orElse(null);          
  mv.addObject(alien);
  return id;
}

提交后,我在这里收到此错误:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Sep 19 06:12:27 BRT 2019
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported...

我想要做的是通过表单指定一个“int id”,然后删除具有相同id的行。

<小时/>

解决方案:我设法使用 Postman 发送正确的 HTTP 请求来解决该问题。它有效,但如果有人指导我使用 jsp.file 和表单来完成它,我将不胜感激。

这是有效的代码:

@DeleteMapping("/alien/{id}")
public String deleteAlien(@PathVariable("id") int id) {
  Alien a = rep.getOne(id);
  rep.delete(a);
  return "deleted";
}

我只需打开 Postman 并将其配置为使用 localhost:8080/alien/id 发送 DELETE。

最佳答案

您正在发送 HTTP GET 请求来删除该项目,而您的 Controller 表示映射为 DELETE,因此您需要将 HTTP 请求更改为 DELETE 而不是 GET

关于java - Spring Boot 上 H2 数据库的 HTTP 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007170/

相关文章:

java - 用于划分数据集的子列表

java - Gradle:如何在编译后但在将文件打包到 Jar 中之前添加自定义任务?

java - 如何从 ActiveMqMessage 获取消息文本

java - 是否存在不可解析的循环引用

java - CQL 语句的 PagingState

java - 表 "users"上的更新或删除违反了表 "fk_owner_id"上的外键约束 "movie_list"

java - Spring MVC 表单验证不起作用

database - 内存中的 H2 数据库,插入脚本不持久

SQL 更新集与作用于其他表的Where

java - 如何将 H2 控制台连接到嵌入式 Spring H2 DB