一、web项目的目录结构
如果手动创建一个java web项目,其基本的目录结构包括:METE-INF,WEB-INF,以及WEB-INF下必须包含一个web.xml文件
二、使用Maven创建war项目
(一) 创建maven project时选择packaging为war
(二)在webapp文件夹下新建META-INF和WEB-INF/web.xml
刚创建的项目发现会报错,因为此时的项目没有web项目的目录结构,需要创建一些文件夹和文件,形成web的目录结构,在main/webapp下面创建META-INF,WEB-INF文件夹,并在WEB-INF目录下创建web.xml
创建web目录结构后
(三)加入web项目基本的三个依赖包,javax.servlet,javax.servlet.jsp,javax.servlet.jsp.jstl
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
</dependencies>
至此我们搭建的maven项目,如果在本地的tomcat上运行已经没有问题了
三、maven的web项目在tomcat插件上运行
(一)、在pom.xml的根标签下配置tomcat插件
<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 控制tomcat端口号 --> <port>80</port> <!-- 项目发布到tomcat后的名称 --> <!-- / 相当于把项目发布名称为ROOT --> <!-- /abc --> <path>/</path> </configuration> </plugin> </plugins> </pluginManagement> </build>
(二)为依赖的servlet,jsp包限定作用范围,
在<dependecy>标签下有一个<scope>标签,用来限定这个包起作用的范围,设置成provided
因为使用了tomcat插件,所以在tomcat插件中也有servlet,jsp等包,因此会和pom.xml中配置的依赖的包在运行时冲突,会报错。那么此时把pom.xml中的配置的包做一个范围限定,值让其在编译器起作用。
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency>
(三)、右键项目--> run as --> maven build-->Goals 中输入 clean tomcat7:run
clean和使用本地tomcat中,右击tomcat服务器-->clean一样
在运行tomcat7:run时,7一定要带上,不然会运行tomcat6
(四)、pom.xml全文
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mavenTest</groupId> <artifactId>wabPro</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 控制tomcat端口号 --> <port>80</port> <!-- 项目发布到tomcat后的名称 --> <!-- / 相当于把项目发布名称为ROOT --> <!-- /abc --> <path>/</path> </configuration> </plugin> </plugins> </pluginManagement> </build> </project>