在 Tomcat 7.0 上使用 @WebServlet 返回 HTTP 404 [重复]

问题描述 投票:0回答:4

我正在 Tomcat 7.0.37 和 Eclipse 3.7 上开发一个示例 servlet。我当前的问题是让它可以运行

//...imports and so on...

@WebServlet(value="/Hello")
public class AdminServlet extends HttpServlet
{
    private static final long serialVersionUID = -1139419481702036147L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        super.doGet(req, resp);
        
        PrintWriter writer = resp.getWriter();
        writer.write("HelloWorld");
        writer.close();
    }
}

当我调用URL

http://localhost:8080/{webappname}/Hello
时,窗口变成了

“状态 404 - 资源不可用”。

有什么问题吗?

就像大多数 Servlet 3.0 示例一样。

servlets http-status-code-404
4个回答
1
投票

以下是一些原因:

  • 确保您的 Servlet 容器支持 Servlet 3.0。他们中的大多数人应该支持,
  • 确保您的 web.xml 版本为 3.0。对于 web.xml 版本 < 3.0, the annotations may not get processed.
  • 确保元数据完整属性为 false。如果为 true,则注释可能不会被处理。

0
投票

创建

{webappname}.war
,放入
webapps
目录并重启服务器。


0
投票

问题是您没有将 servlet 映射到正确的 url 模式。 servlet 名称应该映射到 URl 模式。但在你的代码中它还没有完成。

要使用注释正确执行此操作,请参阅以下内容。

@WebServlet( name="AdminServlet", displayName="Admin Servlet", urlPatterns ={"/Hello","*.do"})
public class AdminServlet

0
投票

我发现了我的问题:我必须删除“super().doGet();”

© www.soinside.com 2019 - 2024. All rights reserved.