尝试 POST 到 servlet 导致 HTTP 状态 404 - 找不到相关资源

Attempt to POST to a servlet results in HTTP Status 404 - Could not find resource for relative

我有一个 HTML 表格:

<form action="rest/ws/addNote" method="post">

我正在尝试 POST 此 servlet:

@WebServlet("/ws")
public class AddNote extends HttpServlet {

    @POST
    @Path("/addNote")
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // ...
    }
}

但我不断收到

HTTP Status 404 - Could not find resource for relative : /ws/addNote of full path: http://localhost:8080/project/rest/ws/addNote

您正在发送一个 post 请求,您的 servlet 中应该有一个 post 请求处理程序方法。我假设您没有使用任何 REST 框架。那么你的 servlet 应该是:

@WebServlet("/rest/ws/addNote")
public class AddNote extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
........

或者,如果您已经在使用任何 REST 框架,例如 Jersy,请不要使用 servlet here.Try 某些 examples

更新

因为您使用的是 REST,请尝试以下而不是 servlet:

import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;

@Path("/ws")
public class AddNote {

    @POST
    @Path("/addNote")
    public Response addUser(
        @FormParam("name") String name,
        @FormParam("age") int age) {
   .........

这里我假设在您的 web.xml 中,REST 控制器 servlet 映射是 /rest/* 并且您的 html <form> 具有 <input> 个名称为 name,age,那么 将被传递到上面相应的方法参数中。

你可以看到完整的例子here