错误404,找不到Tomcat的servlet

时间:2012-07-06 12:55:33

标签: tomcat servlets maven

我想在我的maven项目中编写一个简单的servlet,但是我收到此错误,在此服务器上找不到请求的URL(/src/main/java/web.servlets.FunctionalTestServlet)。

这是我的代码:

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

2 个答案:

答案 0 :(得分: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类,并确保将servlet-api.jar包含在java构建路径中。我还更新了我的pom.xml,它依赖于javax.servlet-api,其范围为'provided':

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

我将项目包含到tomcat服务器中,当访问servlet url时,我会收到404错误 - 请求的资源不可用。

我挣扎了这两天,就在今天早上发现了解决方案。我失踪的部分是做“maven安装”。因为我正在使用Eclipse,所以右键单击项目,选择“Run As”,然后选择“Maven Install”。之后,我停止/重新启动了我的本地tomcat服务器,然后我就能成功地使servlet工作。

我注意到的其他一些事情是,当查看java构建路径中的libraries选项卡时,开箱即用的JRE系统库是J2SE-1.5。我改成了我的JavaSE-1.7(jdk1.7.0_13)。

最终帮助我解决这个问题的是这个视频:

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

我希望这有助于某人!

答案 1 :(得分: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中,并且与包名称或类名无关。