1、Web项目创建 官方文档
cmd进入web项目工作空间,执行以下代码:
代码语言:javascript复制mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeVersion=1.4
构建成功.实际目录结构如下:
代码语言:javascript复制project
|-- pom.xml
`-- src
`-- main
`-- webapp
|-- WEB-INF
| `-- web.xml
`-- index.jsp
这里注意和java项目的几个区别:没有test项目、没有在主项目源码下面建立指定的包结构层次.
2、pom.xml
生成的xml内容如下:
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8"?>
<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>webgroupid.g</groupId>
<artifactId>webartifactId</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>webartifactId Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
和java项目相比,定位jar包的参数是一样的,区别是打包方式web项目是war包
注:这里删除了build节点
3、构建测试代码
在main文件夹下建立package目录
mainjavawebpackagew,在此目录下新增TestServlet.java类,代码如下:
代码语言:javascript复制package webpackage.w;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
public class TestServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("maven web test");
}
}
修改web.xml注册Servlet,代码如下:
代码语言:javascript复制<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>webpackage.w.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
</web-app>
修改index.jsp,添加访问Servlet的代码
代码语言:javascript复制<html>
<body>
<a href="TestServlet">访问TestServlet</a>
</body>
</html>
4、添加servlet-api依赖
使用HttpServlet需要引入servlet-api的包
首先进入https://mvnrepository.com/仓库,搜索servlet-api
点击进入,选择一个符合要求的版本,点击进入
修改pom.xml,将上图的dependency内容拷贝纸pom.xml,添加依赖
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8"?>
<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>webgroupid.g</groupId>
<artifactId>webartifactId</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>webartifactId Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
5、编译项目
cmd进入pom.xml所在的目录执行以下代码:
代码语言:javascript复制mvn compile
构建成功,这里去阿里云maven仓库下载了javax.servlet-api-4.0.1.jar包.
6、打包编译成功的web项目
cmd进入pom.xml所在的目录执行以下代码:
代码语言:javascript复制mvn clean package
生成成功,并给出了war包的地址.
7、部署war包到tomcat
部署前确保tomcat安装配置成功,具体参考Tomcat安装与配置,6中生成war包的时候同时会生成发布目录
在tomcat中部署war包,会将war解压成目录,所以这里直接将webartifactId-1.0.0目录复制到tomcat目录下的webapps目录下
这里将webartifactId-1.0.0改为test(这里前目录名太多冗长),接着运行tomcat下的bin目录下中的startup.bat
到这里部署工作完成,这里注意8080端口的占用,这里tomcat默认使用8080端口.
接着浏览器输入http://localhost:8080/test/index.jsp
说明网站部署成功,点击超链接访问Serlvet
Serlvet访问成功
8、web项目添加外部Java项目依赖
这里以测试项目为例,现在本地Maven仓库中有一个testartifactid项目,其目录结构如下:
maven-repositorytestgroupidtestartifactid1.0.0testartifactid-1.0.0.jar
项目内容如下:testartifactid-1.0.0.jartestpackageab
Computer.class就是要测试的目标类
注:如果不知道如何通过Maven生成Java项目包,参考Maven 基本操作
接下去就在web项目中添加依赖项和相关配置,修改pom.xml如下:
代码语言:javascript复制<?xml version="1.0" encoding="UTF-8"?>
<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>webgroupid.g</groupId>
<artifactId>webartifactId</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<name>webartifactId Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>testgroupid</groupId>
<artifactId>testartifactid</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
这里注意testgroupid和junit的依赖,记者构建测试项目,构建如下目录srctestjavawebpackagew
webpackagew是创建web项目时指定的包路径,接着创建测试类,代码如下:
代码语言:javascript复制package webpackage.w;
import org.junit.Test;
import testpackage.a.b.Computer;
public class ComputerTest{
@Test
public void test1(){
Computer computer = new Computer();
int result = computer.add(1,2);
org.junit.Assert.assertEquals(3, result);
}
}
接着cmd进入pom.xml所在的目录,执行以下代码:
代码语言:javascript复制mvn clean test
这里说明web项目添加外部测试项目成功.