java - Tomcat 在 Eclipse 中运行但无法执行 GET 请求

标签 java eclipse tomcat tomcat8

<分区>

我在 Eclipse 中创建了一个动态 Web 项目,当我运行 helloworld webapp 时,我看到 index.html 页面没有问题截图: enter image description here

但是当我转到 /HelloServlet 路径时,我得到了 404 错误屏幕截图: enter image description here

然而,当我转到 localhost:8080 时,我可以看到 Tomcat 正在运行截图: enter image description here

在日志中我还可以看到服务器正在运行截图: enter image description here

这是我的服务器属性截图: enter image description here

这是 HelloServlet.java 的代码:

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

    /**
     * Default constructor.
     */
    public HelloServlet() {
        // 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.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

有人知道如何解决这个问题吗?在我的工作中,我已经安装并配置了带有 Tomcat 的 Eclipse,没有任何问题。但不知何故,我无法设法让它在家里工作。

最佳答案

将带有注解@WebServlet的代码行改成:

@WebServlet(name = "HelloServlet", urlPatterns = "/HelloServlet")

你会很开心。

为避免异常(当应用上下文为/时),您应该检查request.getContextPath()

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "HelloServlet", urlPatterns = "/HelloServlet")
public class HelloServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public HelloServlet() {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if (request.getContextPath().length() > 0) {
            response.getWriter().append("Served at: ").append(request.getContextPath());
        } else {
            response.getWriter().append("Served at: " + "/");
        }

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

关于java - Tomcat 在 Eclipse 中运行但无法执行 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933710/

相关文章:

java - 方法级变量范围

java - 如何将导入的 jar 文件添加到 eclipse 中的 web-inf/lib 以用于我的构建?

java - 如何在没有 JDK 的情况下从 tools.jar 使用 JavaCompiler

apache - 为什么代理下的 getContextPath() 返回的是 HttpServlet 内部的内部路径,而不是 Filter 内部的路径?

java - 无法在 cpanel+tomcat 中运行 servlet

java - 请求用户输入的类方法

Java:为什么我们不能重写一个方法使其成为静态的?

eclipse - svn : Item <folder> is out of date

apache - 如何将我的 tomcat 应用程序连接到 apache 2,这样路径就不会很差?

java - Spring Boot 和 Tomcat 找不到 JNDI 资源