Java Spring启动时H2数据库的HTTP删除

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"> <

我正在学习SpringBoot,刚刚开始了解H2数据库。我设法发送了一个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>
提交后,我在此处遇到此错误:

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
时,您正在发送HTTP
GET
请求以删除项目,因此,您需要将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>