2009-11-18 59 views
0

我想製作servlet。Tomcat6 + Ubuntu + 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。但是這個問題仍然存在。

回答

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> 
+0

thnks它的工作現在..抱歉有點晚回覆 – asb 2009-11-23 14:29:30

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來訪問它。

我仔細閱讀deployment docs

+0

+1提及無包servlet是失敗。但應該提到,他們可能在某些環境中工作,但是你不應該依賴這個。總是把類放入包中,只是因爲你不能以通常的Java方式從其他類訪問無包類 – BalusC 2009-11-18 02:22:12

+0

將應用程序部署爲ROOT.war會出現什麼問題? – 2009-11-18 02:53:26

+0

是的,但它也沒有包裝。謝謝任何方式 – asb 2009-11-23 14:30:34