在Eclipse中更改web.xml <servlet-mapping>没有任何效果(Eclipse Juno,Tomcat 6)</servlet-mapping>

时间:2012-11-15 14:36:10

标签: eclipse jsp tomcat servlets

我是Web编程的新手,我正在尝试编写一个简单的应用程序来从输入表单中收集数据,并通过HTTPServletRequest将其传递给servlet。我知道每个servlet都需要映射到web.xml内的特定URL。我的web.xml看起来如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>InputFormTest</display-name>
  <welcome-file-list>
    <welcome-file>InputForm.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>InputFormTest</display-name>
    <servlet-name>InputFormTest</servlet-name>
    <servlet-class>com.jsp.core.InputFormTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>InputFormTest</servlet-name>
    <url-pattern>/InputFormTest</url-pattern>
  </servlet-mapping>
</web-app>

InputForm.jsp正确显示。我已经使用Eclipse的上下文菜单添加了InputFormTest servlet,即New - &gt; Servlet,具有以下代码:

package jsp.core;

import java.io.IOException;
import java.io.PrintWriter;

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

/**
 * Servlet implementation class InputFormTest
 */
public class InputFormTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>InputFormTest</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>User inserted: " + request.getParameter("id") + "</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

我有两个问题:

  1. 首先,在Eclipse中运行应用程序后,我收到以下错误

    HTTP状态404 - / InputFormTest


    输入状态报告

    message / InputFormTest

    说明请求的资源不可用。


    Apache Tomcat / 6.0.36

  2. 其次,更改<url-pattern>/InputFormTest</url-pattern>中的web.xml不会影响上述输出,这很奇怪,因为我认为message /InputFormTest应该反映{{1}内的设置}}

  3. 任何提示都表示赞赏。

3 个答案:

答案 0 :(得分:5)

好的,我终于明白了。可以猜测,答案是微不足道的:Eclipse内部浏览器缓存页面。

这意味着,在使用“Run as - &gt; Run on server”运行新更改的项目后,Eclipse内部浏览器中显示的页面是一个旧的缓存页面。之后需要手动刷新。在Web开发项目中出现奇怪的行为。除此之外,一切正常 - 案件结束。

答案 1 :(得分:0)

右键单击服务器和服务器资源管理器,然后单击“清理”。 尝试再次运行该应用程序。我认为它会奏效。

希望这有帮助。

答案 2 :(得分:0)

只是尝试添加上面的答案:

如果您已清除服务器的缓存并刷新项目,但仍然无法正常工作,请尝试清除您所在的Web浏览器的缓存。这是我必须执行的最后一步,以使我的更新的web xml工作。