我有任何问题:
答案 0 :(得分:0)
哇,这就是很多问题。我承认用Maven和Eclipse建立一个webapp项目可能很棘手,所以我会尽力回答它们。
如何使用maven创建一个带有servlet jsp和其他类的java web项目?它创建了一个简单的目录结构,src-> main-> java。
创建Java Web项目时,最终产品应为WAR或EAR文件。 WAR和EAR文件是具有特定结构的JAR文件,可以部署在应用程序服务器或servlet容器中。
如上所述,为Web应用程序设置Maven项目的最简单方法是使用原型:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
如果我们使用此原型创建项目,则会生成一个简单的目录结构和pom.xml。这个项目遵循你提到的标准Maven目录布局,/src/main/java/
,/src/test/java
等.Maven使用war:war目标从这个结构生成WAR文件。
请注意,此原型适用于非常简单(过时)的Web应用程序,但它是最佳可用起点。您可能想要丢弃web.xml文件并创建一个支持Servlet 3.0的新文件。
我在哪里以及如何放置web-inf文件夹?
默认情况下,Maven期望应该放在WAR文件根目录中的资源(例如images,html页面和WEB-INF目录)驻留在/src/main/webapp/
中。 因此WEB-INF文件夹应位于/src/main/webapp/WEB-INF/
。如果您使用maven-archetype-webapp,则会自动创建此目录以及示例web.xml文件。
您在问题标题中提到了Eclipse,并且确实可以使用m2eclipse插件在Eclipse中开发Mavenized Web应用程序。 Eclipse通过WTP(Web Tools Platform)对Web应用程序提供了很好的支持。
虽然互联网上有很多指南(错误地)推荐它,但你不应该使用mvn eclipse:eclipse命令来创建Eclipse项目。这个插件只能为很老的Eclipse版本生成WTP项目(WTP 2.0是最大的)。相反,使用m2 here所述的m2eclipse插件。
我是否需要手动将jdbc-drivers添加到web-inf / lib中的文件夹中,或者只是指出依赖项?
没有必要手动执行此操作,因为Maven的一个主要优势是依赖关系管理。如果在pom.xml中添加依赖项,其范围为 compile 或 runtime ,则JAR文件将自动包含在WAR的WEB-INF/lib/
目录中文件。例如,要添加Postgresql JDBC驱动程序依赖项,请将其添加到pom.xml:
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
由于范围未指定,Maven将假定它位于默认范围 compile 中。结果是Maven将在WAR文件中包含WEB-INF/lib/postgresql-9.1-901.jdbc4.jar
。
有没有办法用junit测试servlet?
Stackoverflow上已经提出(并回答了)这个问题: