【问题标题】:I cannot deploy a basic html file in apache tomcat我无法在 apache tomcat 中部署基本的 html 文件
【发布时间】:2010-07-23 10:18:01
【问题描述】:

我正在制作一个小型网站作为我的第一个项目。我已经确定使用 Java Servlets 和 JSP 来编写服务器端脚本。我从 O'Reilly 的 HeadFirst Servlets 和 JSP 中学习它。我决定使用 Apache-Tomcat 作为我的 Web 服务器和容器。我下载了它。我什至有 jdk 1.6 更新 21。 我在 C 中解压缩了 apache: 当我在浏览器中输入http://localhost:8080 时,它会成功运行,因为我得到了默认的 Tomcat 主页。

在第 3 章中,有一个名为 beer 的小项目。 所以我试着做到了。 我在 webapps C:\apache-tomcat-7.0.0\webapps\beer 下创建了一个名为 beer 的目录。在里面检查基本知识我创建了一个名为form.html的html文件。但是当我尝试通过浏览器http://localhost:8080/beer/form.html 访问它时,出现以下错误:

HTTP 状态 404 - /beer/form.html

输入状态报告

消息/beer/form.html

description 请求的资源 (/beer/form.html) 不可用。

Apache Tomcat/7.0.0

我什至尝试过使用tomcat 6,但没有用。


感谢您的回复... 实际上我的疑问是..我在这里尝试访问不是 servlet 的 .html 文件,所以它甚至需要部署描述吗????

好吧,我计划(最初)只制作 1 个 servlet....在我制作的 html 文件中以 (action="....") 形式提到的那个.... 所以我想在部署servlet之前检查基本的html文件......顺便说一句......如果我必须在DD中也包含html文件,那么我应该在你给出的xml代码中写什么来代替ServletName ? 这是我的 web.xml 的内容(我按照你说的修改了它......但不知道在 Servlet 名称中写什么)

<?xml version="1.0" encoding="utf-8"?>
 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <servlet>
        <servlet-name>html page</servlet-name>
        <servlet-class>form</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>html page</servlet-name>
      <url-pattern>/beer/form.html</url-pattern>
   </servlet-mapping>


    <servlet>
        <servlet-name>Ch3 Beer</servlet-name>
        <servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Ch3 Beer</servlet-name>
        <url-pattern>/SelectBeer.do</url-pattern>
    </servlet-mapping>
</web-app>

【问题讨论】:

    标签: jsp tomcat servlets


    【解决方案1】:

    几乎可以肯定,问题出在您的 servlet 声明中。

    在您的 web 应用 (/webapps/beer/WEB-INF) 的 WEB-INF 文件夹中有一个名为 web.xml 的文件。看看你能不能找到它并发布它的内容。

    此文件声明 servlet 将如何映射到请求 url。因此,如果有一个 servlet 映射到 url 扩展 /*:

       <servlet-mapping>
          <servlet-name>ServletName</servlet-name>
          <url-pattern>/*</url-pattern>
       </servlet-mapping>
    

    您将无法直接访问文件(即 /beer/form.html 不会检索 form.html),因为 servlet ServletName 将拦截以 http://localhost:8080/beer/ 开头的 url 上的任何请求。


    顺便说一句,如果您想知道:状态码HTTP 404 表示未找到 url 指向的文件。

    有关 HTTP 状态代码的更多信息,请参阅 http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error

    【讨论】:

    • 对不起,这个答案是完全错误的。一个新文件夹根本不需要另一个 servlet。
    • 我没这么说。只是陈述一种可能性。
    • 还是错了。一方面,他的“应用程序”没有使用任何 servlet。另一方面,url-pattern 直到应用程序名称之后才起作用,其映射默认情况下不受web.xml 控制。
    • 我正在检查我的答案中的这种可能性。我不明白你的问题。我将url-pattern 更改为/*,如果这是你的大惊小怪的话。
    • OP 正在遵循 O'Reilly 的教程。谁说它是空的?
    【解决方案2】:

    它应该可以正常工作。可能是 URL 或文件名中的拼写错误。它也区分大小写。 /Beer/beer 不同。仔细检查 URL。另外,您没有运行多个 Tomcat 实例或从下载的 zip 中提取吗?您可能将新页面放在了错误的页面中和/或运行了错误的页面。尝试关闭您认为正在运行的 Tomcat 实例,然后在 Web 浏览器中重新加载主页。如果主页没有消失,那就是另一个主页了。

    【讨论】:

    • 我检查了我的 url 很多次......我也关闭了服务器 6.0 和 7.0,然后 strtd 只有 1......问题仍然存在......即使主页加载正常......我很困惑
    • C 我得到了问题...你是对的...我在命名我的文件时犯了一个非常糟糕的错误...非常感谢...你的帖子让我再次检查并再次......我遇到了问题
    猜你喜欢
    • 2014-02-01
    • 2012-09-28
    • 1970-01-01
    • 2016-03-27
    • 2011-12-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多