1

我正在尝试使用 eclipse 和 tomcat 7 运行一个简单的 Web 应用程序。我是一个带有文本输入的索引 html 文件和一个调用 servlet 的提交按钮。

我创建了一个动态 web 项目并将 html (index.html) 文件放在 WebContent 文件夹中。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
    <form action="/TestServ" method="get">
        <input type="text" name="input">
        <input type="submit" value="Send it!">
    </form>
</body>
</html>

我在 /Java Rescources/src 下有我的包 com.testing.web ,其中有我的 servlet (TestServ.java),它看起来像这样:

@WebServlet("/TestServ")
public class TestServ extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServ() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("AA%WU^SDJI&^R&KU");
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("AA%WU^SDJI&^R&KU");
    }
}

当我在项目上选择运行->在服务器上运行时,index.html 文件加载得很好。问题是当我提交表单时,我得到以下错误页面:

HTTP 状态 404 - /TestServ

-------------------------------------------------- ------------------------------

类型状态报告

消息 /TestServ

描述 请求的资源不可用。


-------------------------------------------------- ------------------------------

Apache Tomcat/7.0.34

我已经搜索和搜索,但没有找到对我有帮助的解决方案。网络上的大多数答案都指向 servlet url 映射错误。请注意,我已经尝试了很多都无济于事。

此外,我想补充一点,我的服务器配置为在运行时环境选项中使用 jdk1.7.0_10。

最后,我不明白为什么在构建项目时eclipse没有在WEB-INF下创建正确的类/结构。

我完全被迷惑了,任何帮助都将不胜感激。非常感谢您!

4

3 回答 3

4

终于找到问题了,和往常一样是最简单的事情。

表单中的操作需要是这样的:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>title</title>
</head>
<body>
    <form action="/TestProj/TestServ" method="get">
        <input type="text" name="input">
        <input type="submit" value="Send it!">
    </form>
</body>
</html>

和url映射如下:

<servlet>
    <servlet-name>TestServ</servlet-name>
    <servlet-class>com.testing.web.TestServ</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServ</servlet-name>
    <url-pattern>/TestServ</url-pattern>
  </servlet-mapping>

坦率地说,我不完全理解为什么。/Testproj 不应该被视为应用程序的根吗?:/ 反正...

于 2013-01-17T14:15:45.050 回答
0

为了消除 404 错误,我们必须检查 web.xml 和您在选项卡中提供的 url。url 应该类似于 http://<127.0.0.1:8080>//。如果是网络服务应用程序

于 2014-01-21T06:23:29.140 回答
-1

您的服务器配置没有问题。需要对 web.xml 文件进行一些修改。试试这个!

  1. 打开您的“web.xml”文件。
  2. <display-name>在“ ”标签和“ ”标签之间添加这些标签<welcome-file-list>

    <servlet> <servlet-name>TestServ</servlet-name> <servlet-class>TestServ</servlet-class> </servlet>

    <servlet-mapping> <servlet-name>TestServ</servlet-name> <url-pattern>/TestServ</url-pattern> </servlet-mapping>

  3. 运行您的项目并在浏览器中输入 URL 作为“ http://localhost:8080/TestServ

希望它会奏效!:)

PS *您实际上可以在“ <servlet-name>”标签之间使用任何名称。但两个地方的名字必须相同。

于 2015-06-09T12:13:22.240 回答