我是一个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状态404 - 无法找到相对的资源:/ ws / addNote of full path:http://localhost:8080/project/rest/ws/addNote
答案 0 :(得分:0)
您正在发送一个帖子请求,您应该在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。尝试一些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
的完整示例