2012-07-06 146 views
0

我想在我的maven項目中編寫一個簡單的servlet,但我收到此錯誤請求的URL(/src/main/java/web.servlets.FunctionalTestServlet)未找到這臺服務器。錯誤404,未找到與Tomcat的servlet

這裏是我的代碼:

的Servlet:放在src/main/java目錄 包web.servlets;

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class FunctionalTestServlet extends HttpServlet 
    { 

public void doGet(HttpServletRequest request,HttpServletResponse response)throws 
    ServletException, IOException { 

    PrintWriter out = response.getWriter(); 
    out.println("SimpleServlet Executed"); 
    out.flush(); 
    out.close(); 
    } 


public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws IOException, ServletException{ 
      response.setContentType("text/html"); 
      PrintWriter out = response.getWriter(); 
      String fileName = request.getParameter("testfile"); 
      out.println("<b><font color='blue'>The File name is 
        :</font></b>" 
      + "<b>"+ fileName +"</b>" + "<br>"); 
     } 
      } 

jsp頁面:在src /主/ web應用

<html:file properties="tonFichier" name="tonForm"/> 


    <form action="/src/main/java/web.servlets.FunctionalTestServlet" 
    enctype="multipart/form-data" method="post"> 
    <p> 
    Type some text (if you like):<br> 
    <input type="text" name="textline" size="30"> 
    </p> 
    <p> 
    Please specify a Test , or a set of tests:<br> 
    <input type="file" name="testfile" size="40" > 
    </p> 
    <div> 
    <input type="submit" value="Execute Test"> 

    </div> 
</form> 
</body> 
</html> 

這裏是我的web.xml:/WebTestAutomatisation/src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
<display-name>Archetype Created Web Application</display-name> 

<servlet> 
<servlet-name>FunctionalTestServlet</servlet-name> 
<servlet-class>web.servlets.FunctionalTestServlet.java</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>FunctionalTestServlet</servlet-name> 
<url-pattern>/*</url-pattern> 
</servlet-mapping> 

    </web-app> 

回答

0
<servlet-name>FunctionalTestServlet</servlet-name> 
<servlet-class>web.servlets.FunctionalTestServlet.java</servlet-class> 
</servlet> 

您需要將類名放在那裏。最後放下「.java」。

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

而與此映射,你的servlet將獲得所有請求。所以URL可以是'/',不需要'/src/main/java/web.servlets.FunctionalTestServlet'。您可能需要/FunctionalTest的模式。

此外,Web服務器通常甚至無法訪問源文件,只是編譯的類文件。 URL路徑映射到web.xml中,與包名或類名完全沒有關係。

+0

我試了一下,但問題仍然存在 – 2012-07-06 13:04:34

+0

你可以發佈你的'web.xml'映射。 – 2012-07-06 13:42:22

+0

<!DOCTYPE web-app PUBLIC 「 - // Sun Microsystems,Inc.//DTD Web Application 2.3 // EN」 「http://java.sun.com/dtd/web-app_2_3.dtd」> <顯示名稱>原型創建Web應用程序 FunctionalTestServlet web.servlets.FunctionalTestServlet FunctionalTestServlet /* 2012-07-07 10:07:45

1

我意識到這是一個古老的線程,但我一直在努力解決一個非常類似的問題,並找到了解決方案。我想我會分享...

我對Maven來說比較新,並且一直在使用maven 3.1,tomcat 7.0.37,java 1.7和Eclipse Juno來解決一個非常類似的問題。我將使用maven-archetype-webapp創建一個maven項目,然後使用動態Web模塊將項目轉換爲分面形式,將我的內容目錄設置爲/ src/main/webapp。

我會創建我的servlet類,並確保將servlet-api.jar包含到java構建路徑中。我也更新了我的pom.xml有依賴性的javax.servlet-API與「提供」一個範圍:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1-b05</version> 
    <scope>provided</scope> 
</dependency> 

我包括在該項目到Tomcat服務器,並訪問服務器URL時,我會得到404錯誤 - 請求的資源不可用。

我爲此掙扎了兩天,直到今天早上才發現解決方案。我錯過的部分是做'maven install'。由於我使用的是Eclipse,因此需要右鍵單擊該項目,選擇「Run As」,然後選擇「Maven Install」。之後,我停止/重新啓動了本地tomcat服務器,然後我便能夠成功獲取該servlet的工作。

我注意到的其他東西是,當查看java構建路徑中的庫選項卡時,開箱即用的JRE系統庫是J2SE-1.5。我將其更改爲JavaSE-1.7(jdk1.7.0_13)。

什麼最終幫助我最對這個問題是這樣的視頻:

http://www.youtube.com/watch?v=8Waf4jBbino

我希望這可以幫助別人!