当eclips和maven都准备好了,下面就开始创建一个webapp项目(我的eclipse已经装上maven wtp插件)
1、打开cmd,进入需要存放项目的目录,执行mvn archetype:create -DgroupId=net.rocketa -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp,执行以后项目就建立好了
2、打开eclipse,Import-->Maven-->Existing Maven Projects,把刚创建好的项目导进eclipse(如果没有安装maven wtp插件的话,可以在导入前用在项目目录下执行命令mvn -Dwtpversion=1.0 eclipse:eclipse,再用“General”-->“Existing Projects into Workspace”导入,不然eclipse不能识别为web项目导致不能放进tomcat运行)
3、新建一个tomcat并运行,打开浏览器访问一下,OK
但这时我发现新的maven webapp的目录结构跟eclipse创建的Dynamic Web Project的结构有所不同,这点让我很不爽,所以我要做两件事:
a)把src/main/webapp目录挪到更目录去,并且把它改名为“WebRoot”
b)把存放java的源目录建好
1、把src/main/webapp剪切到根目录,并改名为WebRoot
2、新建目录src/main/java
3、因为结构已经不是webapp默认的结构了,所以要修改pom.xml告诉maven
<build> <finalName>mywebapp</finalName> <directory>target</directory> <sourceDirectory>src/main/java</sourceDirectory> <outputDirectory>WebRoot/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.0.2</version> <configuration> <!-- http://maven.apache.org/plugins/maven-war-plugin/ --> <warSourceDirectory>WebRoot</warSourceDirectory> </configuration> </plugin> </plugins> </build>
4、在eclipse中刷新项目,并右击-->Maven-->Update Project Configuration
5、如果你的项目发生一个“CHKJ3000E: WAR Validation Failed: org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml”错误,你可以右击web.xml-->validate,OK,错误消失
6、放进tomcat运行,访问以下、OK
补充:因为wtp插件比较智能,如果没有装插件的朋友,还需要修改 项目目录/.settings/.component,把其中的<wb-resource deploy-path="/" source-path="src/main/webapp"/>改为<wb-resource deploy-path="/" source-path="WebRoot"/>,不然tomcat运行以后访问会有问题。
1、因为需要用到servlet的包,所以要添加依赖,有多种方法:
a)修改pom.xml,加入下面片段
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency>
b)右击项目-->Maven-->Add Dependency-->查询servlet-api和jsp-api-->选择正确的包和版本-->Scope选择provided-->OK,这时pom.xml会被自动修改
2、在java目录下创建包net.rocketa和类MyServlet
package net.rocketa; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("MyServlet printing..."); super.doGet(req, resp); } }
3、修改web.xml,加入servlet配置
<servlet> <servlet-name>myservlet</servlet-name> <servlet-class>net.rocketa.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myservlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping>
4、发布到tomcat,运行,访问http://localhost:8080/mywebapp/myservlet,页面报405(正常,没有设置返回页面嘛),后台输出MyServlet printing...,OK