【问题标题】:Eclipse Maven Web Project Servlet MappingsEclipse Maven Web 项目 Servlet 映射
【发布时间】:2012-06-28 20:03:40
【问题描述】:

我已经使用 eclipse indigo 中的 m2e 插件设置了我的 maven 项目,并使用 mvn eclipse:eclipse -Dwtpversion=1.5 将其转换为 eclipse 动态 Web 项目。我已经设法在 tomcat7 中启动并运行该项目,但我的 servlet 除外,我无法为其创建 servlet 映射。

我已尝试修改 web.xml 文件,但它会引发 ClassNotFoundException。目录结构和 web.xml:

(ROOT)
    +src
       +main
          +resources
              +DrawInitialMap.java
          +webapp
               (WebContent here)


<web-app>
   <servlet>
      <servlet-name>DrawInitialMap</servlet-name>
      <servlet-class>(groupId).(artifactId).src.main.resources.DrawInitialMap</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>DrawInitialMap</servlet-name>
      <url-pattern>/drawInitialMap.do</url-pattern>
   </servlet-mapping>
  (...)
</web-app>

虽然@WebServlet 注解也无法映射servlet:

@WebServlet(name="drawInitialMap", description="visualizes ttrp on html5 canvas", urlPatterns={"/drawInitialMap.do"})

提前感谢您,如果您需要更多代码,请通知您。

PS : 请记住,在没有 Maven 的情况下,servlet 在动态 Web 项目模式下可以完美运行

【问题讨论】:

    标签: eclipse servlets tomcat7 web.xml m2e


    【解决方案1】:

    有几个问题。

    1. 您应该停止使用 eclipse:eclipse。而是从 Eclipse Marketplace 安装 WTP integration for M2E
    2. 在 Maven 项目中,您的 DrawInitialMap 应该位于 /src/main/classes 文件夹中。因此,它将按照默认的 Maven 项目约定进行编译
    3. web.xml 中的 servlet-class 元素需要完整的类名,即没有 (groupId).(artifactId).src.main.resources 之类的东西。

    【讨论】:

    • 是的,问题就像您在第 3 项中所说的那样。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2016-10-28
    • 2011-01-02
    • 2012-03-15
    • 1970-01-01
    • 2012-05-09
    • 2011-11-08
    相关资源
    最近更新 更多