0

我目前正在尝试运行一个检查 GET 值并写入该值的 servlet。

这是我的课:

    import java.io.IOException;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class Servlet extends HttpServlet {

        /**
         * 
         */
        public Servlet() {
            // TODO Auto-generated constructor stub
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            final String myValue = request.getParameter("MyValue");
            if (myValue != null && !myValue.isEmpty()) {
                response.getWriter().write(myValue);
            }
        }

    }

这很简单,对吧?

我已经尝试了很多 url 来查看我的结果,如下所示:

 - http://localhost:8080/Servlet/servlet/Servlet
 - http://localhost:8080/Servlet/servlet/Servlet?MyValue=Test
 - http://127.0.0.1:8080/Servlet/servlet/Servlet
 - http://127.0.0.1:8080/Servlet/servlet/Servlet?MyValue=Test

我的代码有问题还是我的 Eclipse 有问题?

谢谢

4

2 回答 2

2

您没有告诉任何有关问题症状的信息,但我假设您在所有尝试中都会收到 HTTP 404 错误页面,对吧?

您需要将 servlet 映射到 URL 模式。首先,您需要确保将 servlet 类放在一个包中(我们将com.example在此答案中假设)。

如果您仍在使用 Java EE 5(甚至 J2EE..),请在 webapp 中注册它/WEB-INF/web.xml(Eclipse 应该自动生成一个):

<servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>com.example.Servlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>

(servlet 名称基本上是实例变量名称,应用程序范围内只有一个;servlet 类显然是 FQN;URL 模式是 servlet 的 webcontent-relative URL)

或者,当您已经在最新的 Java EE 6 上时,请在@WebServlet其中将 URL 模式指定为值进行注释:

package com.example;

// ...

@WebServlet("/servlet")
public class Servlet extends HttpServlet { 
    // ...
}

无论哪种方式,它基本上都在告诉 servlet 应该监听 webcontent-relative URLs matching /servlet。因此,假设您的网络上下文根路径是/Servlet,那么应该这样做:

http://localhost:8080/Servlet/servlet

将来,如果您通过New > Servlet而不是New > Class创建 servlet 类会更容易,那么向导中将自动考虑到这一切。

也可以看看:

  • 我们的 Servlets wiki 页面- 包含一些 Hello World 示例 - 您可以通过将鼠标悬停在上方一段时间,直到出现黑色信息框,然后单击其中的信息链接来访问此页面。
于 2012-09-20T03:38:36.430 回答
0

您可以通过在 eclipse -> Properties -> Web Project Settings 中右键单击您的项目来找到您的 Context Root。

于 2012-09-20T03:45:45.447 回答