J2EE-动态web项目-无法运行我的helloworld应用程序



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

这是我的课:

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有问题?

Thx

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

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

如果您仍然使用JavaEE5(甚至J2EE..),请在Web应用程序的/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的Web内容相对URL)

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

package com.example;
// ...
@WebServlet("/servlet")
public class Servlet extends HttpServlet { 
// ...
}

无论哪种方式,它基本上都表明servlet应该侦听与/servlet匹配的与web内容相关的URL。因此,假设您的web上下文根路径是/Servlet,那么应该这样做:

http://localhost:8080/Servlet/servlet

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

另请参阅:

  • 我们的Servlet wiki页面-包含一些Hello World示例-您可以将鼠标悬停在servlet上方一段时间,直到出现一个黑色信息框,然后单击其中的info链接来访问此页面

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

最新更新