0%

Eclipse使用Maven搭建Java Web项目并直接部署到Tomcat8


使用的软件版本

  • eclipse for Java EE 2019
  • jdk 1.8
  • Tomacat 8.5
  • Maven 3.5.4

Maven安装

下载

解压

配置环境变量

M2_HOME环境变量

path环境变量

集成到Eclipse

Eclipse之中创建Maven Web项目

创建Maven Web项目

Eclipse显示项目的Package Explorer的空白处点击鼠标右键,然后依次选择:New-Other...
这里有一张图片
在弹出的New窗口中,展开Maven,选择Maven Project,然后点击Next
这里有一张图片
然后默认,点击Next
这里有一张图片
往下拖动滚动条到最后,选择maven-archetype-webapp,点击Next
这里有一张图片
填入坐标,Group IdArtifact Id,剩下的随意,最后点击Finish即可
这里有一张图片
这样就创建好了一个MavenWeb项目,这个项目会报错,如下图所示,这是因为还没有引入Tomcat的库导致的.
这里有一张图片

修改项目配置

把Maven Web项目改为Java Web项目

在项目上点击右键,选择Properties
这里有一张图片

选择JDK版本

展开Maven,选择Proiect Facets,取消勾选Dynamic Web Module,然后把Java的版本改为1.8,然后点击Apply
这里有一张图片

选择Dynamic Web Module版本

接着把Dynamic Web Module的版本改为3.1,然后勾选上Dynamic Web Module,这个时候下面会弹出这个链接Further configuration available....:

3 指定Web应用根目录

这里有一张图片
点击这个连接,然后勾选上Generate web. xml deployment descriptor,点击OK
这里有一张图片

选择Tomcat

然后点击右边的Runtimes勾选上对应的Tomcat,最后点击Apply and Close即可。
这里有一张图片

创建java目录

src下面的main目录下创建一个java目录,我们后面的java代码会放在这里
这里有一张图片

效果

此时的项目结构如下图所示:
这里有一张图片

修改web.xml

打开web.xml文件,可以看到默认生成的代码如下:

1
2
3
4
5
6
<!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>
</web-app>

全选,然后粘贴如下代码:
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>HelloWorld</display-name>
</web-app>

到这里就可启动项目了,看到效果了。

修改pom.xml

junit版本改为4.12.

测试

启动项目,浏览器将显示index.jsp页面之中的内容,如下图所示:
这里有一张图片

编写HelloWorldServlet

src/main/java下创建一个hello包,创建一个HelloWorldServlet.java文件,粘贴如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package hello;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html,charset=utf-8;");
PrintWriter writer = response.getWriter();
writer.println(
"<html><head><title>helloworld</title></head>"
+ "<body><h2>HelloWorld</h2></body>"
+ "</html>");
}
}

地址上面输入URL:http://localhost:8080/HelloWorld/HelloWorldServlet即可访问到该Servlet,显示效果如下:
这里有一张图片

使用Maven一键部署到Tomcat中

上面我们用的是Eclipse部署的,使用Maven可以打包把项目部署成war

设置tomcat用户密码

打开Tomcat安装目录中conf目录下的tomcat-users.xml配置文件,或者EclipseServer项目中的tomcat-users.xml,在<tomcat-users></tomcat-users>之中添加如下代码:

1
2
3
4
5
6
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<user password="admin" username="admin"
roles="manager-gui,manager-script,manager-jmx,manager-status" />

user标签表示一个后台管理员,其中username,password分别是该后台管理员的账户和密码,roles属性对应上面的role标签,一个role表示一个权限

修改Mawen的配置文件

打开Maven安装目录下conf目录下的settings.xml配置文件,或者%HOME%\.m2目录下的settings.xml
<servers></servers>标签中添加如下代码:

1
2
3
4
5
<server> 
<id>tomcat8</id>
<username>admin</username>
<password>admin</password>
</server>

安装Tomcat Maven部署插件

项目中的pom.xml,在<build></build>标签之中添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://127.0.0.1:8080/manager/text</url>
<username>admin</username>
<password>admin</password>
<path>/HelloWorld</path>
</configuration>
</plugin>
</plugins>

用户名和密码与上面一致,其中<path>标签表示部署在tomcat,webapp下的路径,

部署

运行服务器

在eclipse之中运行服务器,

使用Maven部署项目

右键项目,

这里有一张图片
输入如下命令:

1
clean install tomcat7:redeploy

这里有一张图片
部署成功控制台输出如下:
1
2
3
4
5
6
7
8
9
10
11
[INFO] Deploying war to http://127.0.0.1:8080/HelloWorld  
Uploading: http://127.0.0.1:8080/manager/text/deploy?path=%2FHelloWorld&update=true
Uploaded: http://127.0.0.1:8080/manager/text/deploy?path=%2FHelloWorld&update=true (3 KB at 2249.0 KB/sec)
[INFO] tomcatManager status code:200, ReasonPhrase:
[INFO] OK - Deployed application at context path [/HelloWorld]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.765 s
[INFO] Finished at: 2019-04-26T18:45:17+08:00
[INFO] ------------------------------------------------------------------------

看到BUILD SUCCESS这句话就表示部署成功了,Deploying war to http://127.0.0.1:8080/HelloWorld
这句话表示部署到了http://127.0.0.1:8080/HelloWorld这个URL上.打开这个URL即可看到效果:
这里有一张图片

Tomcat之中部署的效果

打开tomcatwebapps目录可以看到Maven部署的war包:
这里有一张图片

参考资料

https://blog.csdn.net/ai_lian_shuo/article/details/77096071#t11
https://www.linuxidc.com/Linux/2017-05/143308.htm