【问题标题】:Attempt to POST to a servlet results in HTTP Status 404 - Could not find resource for relative尝试 POST 到 servlet 导致 HTTP 状态 404 - 找不到相关资源
【发布时间】:2015-12-02 11:25:22
【问题描述】:

我有一个 HTML 表单:

<form action="rest/ws/addNote" method="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

【问题讨论】:

  • 你能给出你这个程序文件的路径吗?
  • Source包中是只创建了一个源码包,还是只有这个?
  • @Shar 您的代码中没有发布请求处理程序。我认为您正在将 servlet 与 jersy REST 混合使用

标签: rest servlets jax-rs


【解决方案1】:

您正在发送一个发布请求,您的 servlet 中应该有一个发布请求处理程序方法。我假设您没有使用任何 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 &lt;form&gt; 具有名称为 &lt;input&gt; 的标签 name,age,然后将如上所述传递给相应的方法参数.

完整的例子你可以看here

【讨论】:

  • 是的,我正在使用休息!我要做的就是将表单中的内容写入本地文件
  • 谢谢!我需要为此添加@Consumes 吗?
猜你喜欢
  • 2015-04-03
  • 1970-01-01
  • 2019-07-30
  • 2011-06-26
  • 2019-07-30
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 2014-05-14
相关资源
最近更新 更多