1

我对 Web 编程非常陌生,正在尝试编写一个简单的应用程序来从输入表单中收集数据并通过HTTPServletRequest. 我知道每个 servlet 都需要映射到里面的特定 URL web.xml。我的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 -> 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


    类型状态报告

    消息 /InputFormTest

    描述 请求的资源不可用。


    Apache Tomcat/6.0.36

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

任何提示表示赞赏。

4

3 回答 3

5

好的,我终于想通了。可以猜到,答案很简单:Eclipse 内部浏览器缓存页面。

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

于 2012-11-16T10:20:13.707 回答
0

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

希望这可以帮助。

于 2013-06-06T19:59:11.547 回答
0

只是试图添加到上面的答案:

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

于 2016-04-24T05:41:02.697 回答