Eclipse 中建立 Maven Web项目

时间:2022-08-29 15:54:13

Eclipse 中建立 Maven Web项目

软件版本

  • Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) Build id: 20150924-1200
  • Maven 3.3.3
  • Servlet 2.5
  • tomcat 1.6+
  • jdk1.6+

本文将定Eclipse已配置好 jdk 和 tomcat

eclipse中的maven web项目包含两种配置:maven项目web项目,所以有两种方式建立maven web项目,即
- 先建立maven项目,再转成web项目
- 先建立web项目,再转成maven项目

由于先建立web项目的方式相对比较麻烦,本文只介绍先建立maven项目,再配置的方式建立maven web项目

1. 建立Archetype为web的maven项目

1.1 打开Eclipse,Ctrl + N 弹窗新建向导, 如下图
Eclipse 中建立 Maven Web项目

1.2 在搜索框中输入 maven project
Eclipse 中建立 Maven Web项目)

1.3 选择 Next
Eclipse 中建立 Maven Web项目

1.4 选择 Next
Eclipse 中建立 Maven Web项目

1.5 在Fileter 右边的搜索框中输入web,并选中出现的配置,Next
Eclipse 中建立 Maven Web项目

1.6 输入好信息后,点击Next
Eclipse 中建立 Maven Web项目

1.7 至此,一个初始的maven web项目就建好了,目录结构如下
Eclipse 中建立 Maven Web项目

2. 在Java Resources文件夹中建立标准的maven目录结构

可以看到Java Resources文件夹中只有一个src/main/resources,这并不符合maven的默认结构,所以需要在其中建立起src/main/java, src/test/java , src/test/resources 源码文件夹。

2.1 去掉隐藏的“missing”文件夹

  • 选中项目名,右键,选择 Build Path -> Configure Build Path
    Eclipse 中建立 Maven Web项目

  • 将带有missing的文件夹选中并Remove掉(如果你有洁癖,也可把那个src/main/resources也删掉,然后一块重建)
    Eclipse 中建立 Maven Web项目

  • 点击右下角的OK

2.2 建立标准的maven项目目录结构

  • 选中项目结构中的Java Resources文件夹,右键,选择New -> Source Folder
    Eclipse 中建立 Maven Web项目
  • 点击Project name右边的Browse按钮,选择刚才建立的项目
  • Folder name中输入src/main/java,点击Finish按钮
  • 按照上述方法,一次建立src/test/javasrc/test/resources文件夹

最后的目录结构
Eclipse 中建立 Maven Web项目

3. 配置项目的 Web Deployment Assembly

这是比较关键的一步!

  • 选中项目名,右键,选择底部的Properties
  • 找到Deployment Assembly,并点击
    Eclipse 中建立 Maven Web项目

  • 依次选中并Remove掉上图中的src/test/java src/test/resources /target/m2e-wtp/web-resources三个目录,最终形成下图的结构
    Eclipse 中建立 Maven Web项目

  • 点击右下角的OK


至此,一个可成功部署的、符合maven风格的maven web项目就建立起来了!
Eclipse 中建立 Maven Web项目

4. 测试

为了检验建立项目是否成功,需要进行简单地测试。这里通过建立一个servlet类和一个jsp页面来测试。

4.1 配置pom.xml,导入servlet-api

为了不在编译期让Eclipse报错,需要配置一下pom.xml将servlet的jar包导进来

  • 加入servlet-api包:将下面的代码写入复制进pom的<dependency>节点
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
  • 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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.zdwei.web</groupId>
<artifactId>maven-web</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maven-web Maven Webapp</name>
<url>http://maven.apache.org</url>

<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>maven-web</finalName>
</build>
</project>

4.2 新建一个servlet类:test.HelloWorld.java

通过Eclipse的新建servlet向导src/main/java建立test.HelloWorld.java(先建立test包,再建立servlet类

向导生成的servlet代码

package test;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class HelloWorld
*/

public class HelloWorld extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* Default constructor.
*/

public HelloWorld() {
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

可以看到doGet方法中的代码是将"Served at: " + request.getContextPath()字符串作为相应返回到前端页面

4.3 新建一个JSP页面

将已存在的index.jsp页面删除,通过向导重新建立index.jsp页面,修改代码如下

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Hello World!
<a href="http://localhost:8080/maven-web/HelloWorld">request.getContextPath()</a>
</body>
</html>

4.5 执行测试

  • 选中项目名,右键,Run as -> Run on Server,浏览器会自动跳转到index.jsp页面,如下图
    Eclipse 中建立 Maven Web项目

  • 点击request.getContextPath()超链接,结果:
    Eclipse 中建立 Maven Web项目

测试结果符合预期!


成功建立Eclipse中的Maven Web项目!