运行 STS(eclipse) 上的 servlet 通过 Tomcat 时映射错误(我猜)

Mapping error (I guess) while running a servlet on STS(eclipse) through Tomcat

我刚刚安装了“Spring Tool Suite 4”和“Apache Tomcat 10”以了解 Web 应用程序。按照一些说明,我创建了一个新的动态 Web 项目(名为 'hello')和一个新的 servlet(名为 'HelloServlet')。

HelloServlet 就像

package practice;
/**
 * Servlet implementation class HelloServlet
 */

public class HelloServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print("<h1>Hello Servlet</h1>");
    }

}

当 HelloServlet 在服务器上 运行 时,它指向“http://localhost:8080/hello/WEB-INF/classes/practice/HelloServlet.java”,而不是“http://localhost: 8080/hello/HelloServlet" 并返回 404 错误。

我发现创建新 servlet 时不会自动添加“@WebServlet”,这与我遵循的指令不同。我添加了 @WebServlet("/HelloServlet") 然后 Tomcat 服务器在启动服务器时返回错误。

需要一些额外的 STS 和 Tomcat 配置吗?

这是 bug 577703,已在即将发布的 3 月版本中修复。