Tomcat6 + Ubuntu + Servlet

时间:2009-11-18 01:05:00

标签: java ubuntu tomcat6

我正在尝试制作servlet。

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

我做了以下步骤

在ROOT下我用

创建文件夹
-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。但这个问题仍然存在。

2 个答案:

答案 0 :(得分:6)

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

Here是一个描述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> 

答案 1 :(得分:1)

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

默认包中不应该有任何Java类。尝试将TestServ.java放入包中。

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

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

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

我仔细阅读了deployment docs