IDEA开发并部署运行WEB项目全过程

 更新时间:2025年07月16日 09:15:42   作者:努力奔跑的鱼  
文章介绍了WEB项目标准结构及部署方法,涵盖目录划分(如WEB-INF、classes、lib)、核心文件(web.xml、index.html),以及三种部署方式:直接放置webapps、war包部署、自定义路径配置,同时说明了IDEA中如何关联Tomcat、配置项目结构及部署原理

WEB项目的标准结构

一个标准的可以用于发布的WEB项目标准结构如下:

app 本应用根目录:

static 非必要目录,约定俗成的名字,一般在此处放静态资源 ( css js img)

WEB-INF 必要目录,必须叫WEB-INF,受保护的资源目录,浏览器通过url不可以直接访问的目录

  • classes 必要目录,src下源代码,配置文件,编译后会在该目录下,web项目中如果没有源码,则该目录不会出现
  • lib 必要目录,项目依赖的jar编译后会出现在该目录下,web项目要是没有依赖任何jar,则该目录不会出现
  • web.xml 必要文件,web项目的基本配置文件. 较新的版本中可以没有该文件,但是学习过程中还是需要该文件

index.html 非必要文件,index.html/index.htm/index.jsp为默认的欢迎页

url的组成部分和项目中资源的对应关系

WEB项目部署的方式

  • 方式1 直接将编译好的项目放在webapps目录下
  • 方式2 将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war包(其实和第一种一样)
  • 方式3 可以将项目放在非webapps的其他目录下,在tomcat中通过配置文件指向app的实际磁盘路径

在磁盘的自定义目录上准备一个app

在tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件

<!-- 
	path: 项目的访问路径,也是项目的上下文路径,就是在浏览器中,输入的项目名称
    docBase: 项目在磁盘中的实际路径
 -->
<Context path="/app" docBase="D:\mywebapps\app" />

启动tomcat访问测试即可

IDEA中开发并部署运行WEB项目

部署步骤

  • 建立tomcat和idea的关联
  • 使用idea创建一个javaWEB工程,在WEB工程中开发代码
  • 使用idea将工程构建成一个可以发布的app
  • 使用idea将构建好的app部署到tomcat中,启动运行

IDEA关联本地Tomcat

可以在创建项目前设置本地tomcat,也可以在打开某个项目的状态下找到settings

找到 Build,Execution,Eeployment下的Application Servers ,找到+号

选择Tomcat Server

选择tomcat的安装目录

点击ok

关联完毕

IDEA创建web工程

推荐先创建一个空项目,这样可以在一个空项目下同时存在多个modules,不用后续来回切换之前的项目,当然也可以忽略此步直接创建web项目

检查项目的SDK,语法版本,以及项目编译后的输出目录

先创建一个普通的JAVA项目

检查各项信息是否填写有误

创建完毕后,为项目添加Tomcat依赖

选择modules,添加 framework support

选择Web Application 注意Version,勾选 Create web.xml

删除index.jsp ,替换为 index.html

处理配置文件

在工程下创建resources目录,专门用于存放配置文件(都放在src下也行,单独存放可以尽量避免文件集中存放造成的混乱)

标记目录为资源目录,不标记的话则该目录不参与编译

标记完成后,显示效果如下

处理依赖jar包问题

在WEB-INF下创建lib目录

必须在WEB-INF下,且目录名必须叫lib!!!

复制jar文件进入lib目录

将lib目录添加为当前项目的依赖,后续可以用maven统一解决

环境级别推荐选择module 级别,降低对其他项目的影响,name可以空着不写

查看当前项目有那些环境依赖

在此位置,可以通过-号解除依赖

IDEA部署-运行web项目

检查idea是否识别modules为web项目并存在将项目构建成发布结构的配置

就是检查工程目录下,web目录有没有特殊的识别标记

以及artifacts下,有没有对应 _war_exploded,如果没有,就点击+号添加

点击向下箭头,出现 Edit Configurations选项

出现运行配置界面

点击+号,添加本地tomcat服务器

因为IDEA 只关联了一个Tomcat,红色部分就只有一个Tomcat可选

选择Deployment,通过+添加要部署到Tomcat中的artifact

applicationContext中是默认的项目上下文路径,也就是url中需要输入的路径,这里可以自己定义,可以和工程名称不一样,也可以不写,但是要保留/,我们这里暂时就用默认的

点击apply 应用后,回到Server部分. After Launch是配置启动成功后,是否默认自动打开浏览器并输入URL中的地址,HTTP port是Http连接器目前占用的端口号

点击OK后,启动项目,访问测试

  • 绿色箭头是正常运行模式
  • "小虫子"是debug运行模式

  • 点击后,查看日志状态是否有异常

  • 浏览器自动打开并自动访问了index.html欢迎页

  • 工程结构和可以发布的项目结构之间的目录对应关系

IDEA部署并运行项目的原理

  • idea并没有直接进将编译好的项目放入tomcat的webapps中
  • idea根据关联的tomcat,创建了一个tomcat副本,将项目部署到了这个副本中
  • idea的tomcat副本在C:\用户\当前用户\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中
  • idea的tomcat副本并不是一个完整的tomcat,副本里只是准备了和当前项目相关的配置文件而已
  • idea启动tomcat时,是让本地tomcat程序按照tomcat副本里的配置文件运行
  • idea的tomcat副本部署项目的模式是通过conf/Catalina/localhost/*.xml配置文件的形式实现项目部署的

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • 关于Java中避免空指针的方法

    关于Java中避免空指针的方法

    这篇文章主要介绍了关于Java中避免空指针的方法,空指针异常就是我们在对空对象进行的任何操作都会报空指针异常,所谓的指针,就是java中的对象的引用,比如String s;这个就是指针,需要的朋友可以参考下
    2023-07-07
  • Java Shell springboot通用Shell启动脚本方式

    Java Shell springboot通用Shell启动脚本方式

    这篇文章主要介绍了Java Shell springboot通用Shell启动脚本方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • @RequestParam 接收参数的值为null的处理方式

    @RequestParam 接收参数的值为null的处理方式

    这篇文章主要介绍了@RequestParam 接收参数的值为null的处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java正则表达式循环匹配字符串方式

    Java正则表达式循环匹配字符串方式

    这篇文章主要介绍了Java正则表达式循环匹配字符串方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 详解Java实现的k-means聚类算法

    详解Java实现的k-means聚类算法

    这篇文章主要介绍了详解Java实现的k-means聚类算法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • 一文带你回顾Java中的垃圾回收机制

    一文带你回顾Java中的垃圾回收机制

    这篇文章主要给大家介绍了关于Java中垃圾回收机制的相关资料, Java 程序,内存是托管于 JVM 的,即对象的创建和内存的回收都是由 JVM 自行完成的,开发人员是无权干涉的,只能尽量去优化,需要的朋友可以参考下
    2021-08-08
  • springboot不同环境使用不同配置文件打包方式

    springboot不同环境使用不同配置文件打包方式

    这篇文章主要介绍了springboot不同环境使用不同配置文件打包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java中CyclicBarrier和CountDownLatch的用法与区别

    Java中CyclicBarrier和CountDownLatch的用法与区别

    CyclicBarrier和CountDownLatch这两个工具都是在java.util.concurrent包下,并且平时很多场景都会使用到。本文将会对两者进行分析,记录他们的用法和区别,感兴趣的可以了解一下
    2021-08-08
  • 基于OpenID Connect及Token Relay实现Spring Cloud Gateway

    基于OpenID Connect及Token Relay实现Spring Cloud Gateway

    这篇文章主要介绍了基于OpenID Connect及Token Relay实现Spring Cloud Gateway,Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为API提供跨领域的关注点,如:安全性、监控/指标和弹性
    2022-06-06
  • SpringBoot使用CORS实现无缝跨域的方法实现

    SpringBoot使用CORS实现无缝跨域的方法实现

    CORS 是一种在服务端设置响应头部信息的机制,允许特定的源进行跨域访问,本文主要介绍了SpringBoot使用CORS实现无缝跨域的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论