Java Spring启动时H2数据库的HTTP删除
我正在学习SpringBoot,刚刚开始了解H2数据库。我设法发送了一个HTTP GET请求,以便在数据库中插入新行,但无法删除它 以下是我插入新行的方式:Java Spring启动时H2数据库的HTTP删除,java,spring-boot,h2,http-delete,Java,Spring Boot,H2,Http Delete,我正在学习SpringBoot,刚刚开始了解H2数据库。我设法发送了一个HTTP GET请求,以便在数据库中插入新行,但无法删除它 以下是我插入新行的方式: @GetMapping("/addAlien") public String addAlien(Alien alien) { rep.save(alien); return "home.jsp"; } 这是我用来发送GET请求的JSP代码: <form action="addAlien"> <
@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>
提交后,我在此处遇到此错误:
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...
我只需打开Postman并将其配置为使用“localhost:8080/alien/id”发送一个DELETE即可。您正在发送HTTP
GET
请求以删除该项目,而您的控制器说映射为DELETE
,因此,您需要将HTTP请求更改为DELETE
,而不是GET
当控制器指示映射为DELETE
时,您正在发送HTTPGET
请求以删除项目,因此,您需要将HTTP请求更改为DELETE
而不是GET
在@DeleteMapping之前,您的代码上是否有“`”
`@DeleteMapping(“/deleteAlien”)
检查并在@DeleteMapping之前,您的代码上是否有“`” `@DeleteMapping(“/deleteAlien”)
选中此复选框,默认的HTTP方法是GET,因此您将使用GET HTTP方法请求服务器 使用GET HTTP方法进行请求时,必须使用DELETE HTTP方法进行请求 这样做 使用表单创建另一个jsp文件,以删除该jsp文件中的条目。使用method=“delete”和action=“deleteAlien”编写表单标记
[输入标签]
默认的HTTP方法是GET,因此您正在使用GET HTTP方法请求服务器
使用GET HTTP方法进行请求时,必须使用DELETE HTTP方法进行请求
这样做
使用表单创建另一个jsp文件,以删除该jsp文件中的条目。使用method=“delete”和action=“deleteAlien”编写表单标记
[输入标签]
FYI不要使用截图,而是将这些示例嵌入问题中。顺便说一句,您的错误表明您没有使用正确的请求方法来@DeleteMapping(“/deleteAlien”)
,这需要删除
,而不是获取
欢迎使用堆栈溢出!请不要发布代码的图像。有些人不鼓励这样做。真的很抱歉这些图片。仅供参考,不要使用截图,而是将这些示例嵌入问题中。顺便说一句,您的错误表明您没有使用正确的请求方法来@DeleteMapping(“/deleteAlien”)
,这需要删除
,而不是获取
欢迎使用堆栈溢出!请不要发布代码的图像。有人说这是不鼓励的,所以。真的很抱歉的图像。我想了一下。但是“DeleteMapping”不是这样做的吗?我以为下面的所有内容都是HTTP DELETE。DeleteMapping
意味着这个url只支持使用DELETE
方法的HTTP
请求,所以当请求使用不同的方法时,就会抛出HttpRequestMethodNotSupportedException
。哦!我认为DeleteMapping负责更改HTTP请求。当GetMapping时,它将是HTTP GET,当DeleteMapping时,它将是HTTP DELETE。谢谢我想了想。但是“DeleteMapping”不是这样做的吗?我以为下面的所有内容都是HTTP DELETE。DeleteMapping
意味着这个url只支持使用DELETE
方法的HTTP
请求,所以当请求使用不同的方法时,就会抛出HttpRequestMethodNotSupportedException
。哦!我认为DeleteMapping负责更改HTTP请求。当GetMapping时,它将是HTTP GET,当DeleteMapping时,它将是HTTP DELETE。谢谢在您的jsp上放置method=“DELETE”,我已经编辑了我的答案,请检查并重试。还是没有。我设法通过邮递员删除了。我将编辑帖子以显示解决方案,但我希望通过表单:'(您不能将delete放入jsp中,请检查我的答案,我已更新itput method=“delete”在您的jsp上,我已经编辑了我的答案,请检查我刚刚尝试过。仍然没有。我通过Postman成功删除了。我将编辑帖子以显示解决方案,但我希望通过以下表单执行:'(您不能在jsp中添加delete,请检查我的答案,我已经按照您所说的更新了itI,但仍然不起作用:/I通过Postman成功删除。我将编辑帖子以显示解决方案,但我希望通过以下形式执行:'(在您的代码中,您使用了@DeleteMapping(“/alien/{id}”)因此,您的操作URL必须类似于action=“alien/{id}”此处{id}必须是您要删除的条目的id,假设您要删除id=1的条目,因此您的操作URL必须类似于action=“alien/1”现在,采取一些方法在操作url中插入id如果您正在键入要手动删除的条目的id,那么您必须使用javascript在操作url中添加id,如果您知道用于删除的jsp文件的id加载时间,您可以使用简单的jsp代码action=“alien/”将其插入这里id是一个变量,它包含您想要删除的条目id,以便了解更多关于在fb上用我的名字找到我,ping meI按照您告诉的那样做了,但仍然不起作用:/I设法通过Postman删除。我将编辑帖子以显示解决方案,但我想通过以下形式执行:'(在您的代码中,您使用了@DeleteMapping(“/alien/{id}”)因此,您的操作URL必须类似于action=“alien/{id}”此处{id}必须是您要删除的条目的id,假设您要删除id=1的条目,因此您的操作URL必须类似于action=“alien/1”现在,采取一些方法在操作url中插入id如果您正在键入要手动删除的条目的id,那么您必须使用javascript在操作url中添加id,如果您知道用于删除的jsp文件的id加载时间,您可以使用简单的jsp代码action=“alien/”将其插入这里的id是一个变量,它包含您要删除的条目id,以便了解更多信息请在fb上使用我的名字查找我并ping我
@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...
@DeleteMapping("/alien/{id}")
public String deleteAlien(@PathVariable("id") int id) {
Alien a = rep.getOne(id);
rep.delete(a);
return "deleted";
}
<form action="deleteAlien" method="DELETE">
[input tags]
</form>