我想在我的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>
答案 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中,并且与包名称或类名无关。