从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

  • JavaEE

    • JavaEE概念

    • Ant

    • Maven

      • 什么是Maven
      • 安装Maven
      • 第一个Maven项目
      • Maven的组成和配置
      • 快速创建Maven项目
      • 创建Web项目
        • 新建Servlet
        • 新建web.xml
        • 新建hello.html
        • 打包为war
        • 打包
        • 部署与启动Tomcat
        • 总结
      • Maven的生命周期和构建
      • Maven的依赖管理
      • Maven的插件管理
      • IDEA关于Maven的设置
      • 使用Maven完成dao层
      • 使用Maven完成service层
      • 使用Maven完成web层
      • Maven的拆分和聚合
      • Nexus的搭建
      • Nexus的使用
      • 安装第三方jar包到私服
      • Maven系列完结
      • Maven
    • 日志

    • Junit

    • JDBC

    • XML和JSON

    • Java
  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • JavaEE
  • Maven
2023-05-15
目录

创建Web项目

# 36.创建Web项目

本文讲解如何创建Web项目并打包   ‍

# 新建Servlet

我们新建一个Servlet:

package com.peterjxl.learnjavamaven.demo2Servlet;

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

public class ServletDemo1 extends HttpServlet {
	@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/hello.html").forward(req, resp);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

‍

# 新建web.xml

新建src/main/webapp/WEB-INF/web.xml,然后是配置Servlet的访问路径:

<!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>demo1</servlet-name>
    <servlet-class>com.peterjxl.learnjavamaven.demo2Servlet.ServletDemo1</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>demo1</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

‍

# 新建hello.html

新建一个src/main/webapp/hello.html文件用于访问

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	<h1>Hello, Maven</h1>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11

‍

‍

后续我们会介绍更多关于scope的作用。

‍

# 打包为war

‍

如果Web项目中与用到其他依赖(例如Log4j,JDBC等),那么打包为war包的时候时,会自动将用到的依赖放到war包的目录里,也就是我们之前学习JavaWeb的时候放的WEB-INF/lib目录下,例如这是一个项目的例子:

​​

‍

下面我们来实践下。首先我们修改的打包方式为war包(第10行),并新增了一个依赖(19 ~ 24行),该依赖是用于Servlet的编译的:

<?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>com.peterjxl.LearnJavaMaven</groupId>
    <artifactId>hello-world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Maven Hello World Project!</name>
    <packaging>war</packaging>

     <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

‍

注意23行,我们配置了scope(范围)为provided,该配置的作用是告诉Maven该依赖仅仅用来编译时用到,打包时不会用到,因此在打包的时候不会添加Servlet的依赖到最后的war包里。

为什么该依赖不会放到最后的war包中呢?这是因为Tomcat等服务器已经有了Servlet的依赖,我们再添加的话,就会有两个一样的依赖,会冲突。

‍

# 打包

使用mvn clean package​打成一个war包,可以看到打包后的文件路径:

​​

‍

‍

# 部署与启动Tomcat

我们将这个war包放到Tomcat的webapp目录里,然后启动Tomcat:可以看到正常访问

​​

‍

‍

‍

# 总结

本文我们讲解了如何用Maven管理web项目,并演示了打包。

已将所有代码上传到Gitee (opens new window)和GitHub (opens new window)上,本文中涉及到的代码在分支demo2Servlet。

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2023/5/15 16:02:46
快速创建Maven项目
Maven的生命周期和构建

← 快速创建Maven项目 Maven的生命周期和构建→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式