0

我想在我的 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>
4

2 回答 2

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 服务器中,当访问 servlet url 时,我会收到 404 错误 - 请求的资源不可用。

我为此苦苦挣扎了两天,就在今天早上发现了解决方案。我缺少的部分是进行“maven 安装”。由于我使用的是 Eclipse,因此需要右键单击项目,选择“运行方式”,然后选择“Maven 安装”。之后,我停止/重新启动了本地 tomcat 服务器,然后我能够成功地让 servlet 工作。

我注意到的另一件事是,在查看 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>

使用此映射,您的 servlet 将获得所有请求。所以URL可以是'/',不需要'/src/main/java/web.servlets.FunctionalTestServlet'。你可能想要一个/FunctionalTest.

此外,Web 服务器通常甚至无法访问源文件,只能访问已编译的类文件。URL 路径映射在 web.xml 中,与包名或类名完全无关。

于 2012-07-06T13:01:16.807 回答