2010-02-28 28 views
4

我正在爲我的作業寫一個簡單的航班預訂應用程序。我的航班預訂網站有登錄,註冊,航班搜索,結果顯示和確認JSP頁面。我想在用戶嘗試執行某個操作時調用servlet,例如:瞭解如何在Eclipse中運行servlet

用戶轉到login.jsp並單擊登錄按鈕,表單中有一個target/core/Login(核心是我的核心servlet和登錄是應該處理該請求的相應servlet)。

在之前的作業中,我們編寫了自己的Web服務器,所以我沒有使用Tomcat來部署serlvet ...現在我們不再使用我們自己的Web服務器了,我在計算時遇到了一些麻煩如何讓servlet在Eclipse中運行。

我在Eclipse中創建動態Web項目,它會自動生成以下文件夾結構:

../P3 
../P3/src 
../P3/src/core 
../P3/build 
../P3/WebContent 
../P3/WebContent/META-INF 
../P3/WebContent/WEB-INF 

我的login.jsp具有時填寫並點擊結果提交給在登錄servlet的形式我核心包:

<form name="input" action="src/core/Login" method=GET> 
    Username: <input type="text" name="userName" /> 
    <br> 
    Password: <input type="password" name="password" /> 
    <br> 
    <input type="submit" value="Login" /> 
</form> 

Eclipse中有一個內置的瀏覽器,所以當我運行的login.jsp加載它在Eclipse瀏覽器並顯示它。當我點擊登錄按鈕它應該發送的用戶名和密碼登錄的servlet,但我得到了下面的錯誤,而不是:

HTTP Status 404 - /P3/src/core/Login 

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

type Status report 

message /P3/src/core/Login 

description The requested resource (/P3/src/core/Login) is not available. 

出於某種原因,服務器不知道有關servlet ...我已經閱讀了一些文章(firstsecond)在線解釋可能出現的問題,但我仍然遇到了錯誤。我在第一篇文章中嘗試瞭解決方案,但沒有成功;第二篇文章並沒有真正適用,因爲server.xml文件已經包含了正確的標誌和目錄。

這裏是我的WEB-INF/web.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>P3</display-name> 
    <welcome-file-list> 
    <welcome-file>login.jsp</welcome-file> 
    </welcome-file-list> 
    <servlet> 
    <description></description> 
    <display-name>Registration</display-name> 
    <servlet-name>Registration</servlet-name> 
    <servlet-class>core.Registration</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Registration</servlet-name> 
    <url-pattern>/Registration</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <description></description> 
    <display-name>Register</display-name> 
    <servlet-name>Register</servlet-name> 
    <servlet-class>core.Register</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Register</servlet-name> 
    <url-pattern>/Register</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <description></description> 
    <display-name>Login</display-name> 
    <servlet-name>Login</servlet-name> 
    <servlet-class>core.Login</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Login</servlet-name> 
    <url-pattern>/Login</url-pattern> 
    </servlet-mapping> 
</web-app> 

應該設置我的項目,所以它正確地在Eclipse中部署如何?

回答

4

表單操作action="src/core/Login"與servlet映射/Login不匹配。表單操作應該指向一個URL,而不是指向本地磁盤文件系統路徑。

+0

OOOOOH! servlet映射! HAH確定http:// localhost:8080/P3 /登錄工作! – Kiril 2010-02-28 20:18:26

+2

你已經在'/ Login'上映射了servlet。因此,URL應該是「http:// localhost:8080/P3/Login」。因此,您需要將表單操作設置爲'action =「Login」'。 – BalusC 2010-02-28 20:19:28

+1

你總是看起來很容易^^! :) – Kiril 2010-02-28 20:21:10

2

因爲它是功課,我只是指出你我認爲是正確的方向。

我建議你看看你的部署描述符。 (這是/WEB-INF/web.xml文件)。在該文件中,您將定義客戶端將用來訪問這些servlet的servletURL映射

除非存在這些元素,否則Tomcat不知道如何爲您的servlet提供請求。

如果您告訴NetBeans您正在創建一個新的Servlet,而不是一個新的Java類,它將提示您輸入適當的信息來設置所有內容。

+1

他使用Eclipse,而不是Netbeans。 – BalusC 2010-02-28 20:09:33

+0

謝謝Brabster。作業是寫網頁,我們沒有被告知專門使用Netbeans或Eclipse ...所以我仍然會做我的功課,但我無法弄清楚正確的項目設置應該是什麼。 – Kiril 2010-02-28 20:11:16

+0

噢 - 原始信息沒有給出web.xml的內容,所以沒有足夠的診斷問題的細節。很高興你分類。 – Brabster 2010-02-28 20:23:24