我正在尝试运行一个检查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);
}
}
}
这很简单,对吧?
我已经尝试了很多网址,以便能够看到我的结果,如下所示:
- 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
我的代码有问题或者我的日食有问题吗?
THX
答案 0 :(得分:2)
您没有告诉任何有关问题症状的信息,但我会假设您在所有尝试中都收到了HTTP 404错误页面,对吗?
您需要在URL模式上映射servlet。首先,您需要确保将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名称基本上是实例变量名称there's only one applicationwide; servlet类显然是FQN; URL模式是servlet的webcontent-relative URL)
或者当您已经使用最新的Java EE 6时,请使用@WebServlet
对其进行注释,其中您将URL模式指定为值:
package com.example;
// ...
@WebServlet("/servlet")
public class Servlet extends HttpServlet {
// ...
}
无论哪种方式,它基本上都告诉servlet应该监听匹配/servlet
的webcontent相对URL。因此,假设您的Web上下文根路径为/Servlet
,那么应该这样做:
http://localhost:8080/Servlet/servlet
将来,如果通过 New&gt;创建servlet类会更容易。 Servlet 而不是 New&gt;类,然后在向导中自动考虑这一切。
答案 1 :(得分:0)
您可以通过在eclipse中右键单击项目找到您的Context Root - &gt;属性 - &gt; Web项目设置。