0

Mavenプロジェクトで単純なサーブレットを作成したいのですが、このサーバーで要求されたURL(/src/main/java/web.servlets.FunctionalTestServlet)が見つかりませんでした。

これが私のコードです:

サーブレット: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 / main/webappの下

 <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>
4

2 に答える 2

1

これは一種の古いスレッドであることを認識していますが、非常によく似た問題に苦労しており、解決策を見つけました。分かち合おうと思ったのに…

私はMavenに比較的慣れておらず、maven 3.1、tomcat 7.0.37、java 1.7、およびEclipse Junoを使用して非常によく似た問題に苦しんでいます。maven-archetype-webapp を使用して Maven プロジェクトを作成し、Dynamic Web Module を使用してプロジェクトをファセット形式に変換し、コンテンツ ディレクトリを /src/main/webapp に設定します。

サーブレット クラスを作成し、servlet-api.jar を Java ビルド パスに含めるようにします。また、スコープが「提供」の javax.servlet-api への依存関係で pom.xml を更新しました。

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

プロジェクトを tomcat サーバーに含めました。サーブレットの URL にアクセスすると、404 エラー - 要求されたリソースが利用できません。

私はこれに2日間ほど苦労しましたが、今朝、解決策を発見しました. 私が見逃していたのは、「maven install」を行うことでした。私は Eclipse を使用しているので、プロジェクトを右クリックして [Run As] を選択し、次に [Maven Install] を選択しました。その後、ローカルの tomcat サーバーを停止/再起動すると、サーブレットを正常に動作させることができました。

他に気付いたことは、Java ビルド パスの [ライブラリ] タブを見ると、すぐに構成された JRE システム ライブラリが J2SE-1.5 であるということです。私は JavaSE-1.7 (jdk1.7.0_13) に変更しました。

この問題で私を最も助けてくれたのは、次のビデオでした。

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

これが誰かに役立つことを願っています!

于 2014-01-18T14:01:39.190 に答える
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>

そして、このマッピングを使用すると、サーブレットはすべてのリクエストを取得します。したがって、URLは「/」にすることができます。「/ src / main / java/web.servlets.FunctionalTestServlet」は必要ありません。おそらくのパターンが必要です/FunctionalTest

また、Webサーバーは通常、ソースファイルにはアクセスできず、コンパイルされたクラスファイルにのみアクセスできます。URLパスはweb.xmlにマップされており、パッケージ名やクラス名とはまったく関係ありません。

于 2012-07-06T13:01:16.807 に答える