0

我正在尝试制作servlet。

我已经在 ubuntu 上安装了带有管理示例和文档的 tomcat6。我能够运行提供的示例。但是当我尝试制作自己的servlet时它不起作用。

我做了以下步骤

在根目录下我创建文件夹

-ROOT
----myapp
------WEB-INF
---------classes

我制作了两个文件,一个是 index.html,其中有一个按钮和表单上的操作来调用 servlet。其次是 .java 文件。我编译了 .java 文件并且 .class 完成了。所以现在树看起来像

-ROOT
----myapp
------index.html
------WEB-INF
---------classes
-----------TestServ.java
-----------TestServ.class

现在我使用http://localhost:8080/myapp在浏览器中打开它

它显示带有按钮的 index.html 页面。但是当我点击按钮时它说

错误 404: http://localhost:8080/myapp/TestServ未找到!!

我不知道我哪里出错了。我也设置了 CATALINA_HOME。但这个问题仍然存在。

4

2 回答 2

6

你需要在WEB-INF目录下创建一个web.xml,并在web.xml中定义servlet映射,以便将myapp/TestServ URL转发给TestServ servlet类。

是一个描述 web.xml 的页面,其中包含您需要设置的示例和元素。对于您的班级,这些元素可能看起来像这样:

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

<servlet-mapping>
     <!-- For any URL starting with /content/, the rewriter servlet will be called -->
     <servlet-name>testServ</servlet-name>
     <url-pattern>/TestServ</url-pattern>
</servlet-mapping> 
于 2009-11-18T01:10:20.367 回答
1

您不应该在 ROOT 下部署任何代码。

默认包中不应包含任何 Java 类。尝试将您的 TestServ.java 放入一个包中。

您的部署不应包含任何 .java 文件。

您必须在 web.xml 中正确注册您的 servlet。包括到特定 URL 的映射。

最好的办法是创建一个名为 myapp.war 的 WAR 文件,其中包括 WEB-INF/classes 和 WEB-INF/lib 以及适合您情况的 web.xml。将其放入 Tomcat /webapps 并启动容器。如果您已经正确注册了您的 servlet,您应该可以通过http://localhost:8080/myapp/TestServ访问它。

我会仔细阅读部署文档。

于 2009-11-18T01:23:25.430 回答