在前面我们已经创建了一个maven项目,但是pox.xml中还没有任何的maven依赖,随后会添加一些java web所需的依赖。在添加java web的依赖之前,我们需要把maven项目转换为java web项目结构。
1. 把maven项目转换为java web项目结构非常的简单,按如下的步骤操作即可:
1)在main目录下,添加webapp目录。
2)在webapp目录下,添加WEB-INF目录。
3)在WEB-INF目录下,添加web.xml文件。
按照上面三步操作完成以后,会出现IDEA给我们的一个提示,我们点击configure按钮,会看到一个确认框,单击ok,按钮就可以把当前项目变成web项目。
在接下来的代码中,我们需要使用servlet3.0框架,所以在web.xml中添加如下代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http;//java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
</web-app></span>
2.添加java web的maven依赖
由于web项目是需要打war包的,因此必须在pom.xml文件里设置packaging为war(默认为jar),配置如下:
<span style="font-size:14px;"><packaging>war</packaging></span>接下来就需要添加java web所需的servlet,jsp,jstl等依赖,添加如下配置:
<span style="font-size:14px;"><dependencies>
<!--Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!--JSTL-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies></span>
需要说明的是:
1)Maven一类的三坐标groupId,artifactId,version必须提供。
2)如果某些依赖只需参加编译,而无必须参与打包(eg,tomcat自带servlet与jsp所对应的jar),可将其scope设置为provided。
3)如果某些依赖只是运行时需要,但无须参与编译(例如,jstl的jar),可将其scope设置为runtime。
以下是pom.xml的完整代码:
<?xml version="1.0" encoding="UTF-8"?>到此为止一个基于Maven的java web项目已经搭建完毕,随后可进入具体的开发阶段。后面的将从一个简单的servlet3.0框架开始入手学习。
<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>org.smart4j</groupId>
<artifactId>chapter1</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--Servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--JSP-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!--JSTL-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!--Compile-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<!--Test-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<!--Tomcat-->
<!--<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.artifactId}}</path>
</configuration>
</plugin>-->
</plugins>
</build>
</project>