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

1 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的组成部分和项目中资源的对应关系

在这里插入图片描述

2 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访问测试即可

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

3.1 部署步骤

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

3.2 IDEA关联本地Tomcat

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

找到 Build,Execution,Eeployment下的Application Servers ,找到+号
在这里插入图片描述

选择Tomcat Server
在这里插入图片描述

选择tomcat的安装目录

点击ok

关联完毕

4 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可以空着不写
    在这里插入图片描述

  • 查看当前项目有那些环境依赖
    在这里插入图片描述

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

5 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欢迎页

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

在这里插入图片描述

6 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配置文件的形式实现项目部署的
    在这里插入图片描述
<think>我们正在解决IntelliJIDEA部署项目时无法识别WEB-INF文件夹导致工件配置出错的问题。根据引用[5],在SSM+Maven项目中,WEB-INF文件夹通常位于src/main/webapp/WEB-INF。如果IDEA无法识别它,可能是项目结构配置不正确。解决方案:1.确保项目结构正确:WEB-INF文件夹应位于web应用的根目录下,即src/main/webapp(Maven标准目录结构)。2.在IDEA中配置工件(Artifact)时,需要将WEB-INF文件夹及其内容包含在Web资源的正确位置。步骤:1.打开项目结构设置:File->ProjectStructure(或者使用快捷键Ctrl+Alt+Shift+S)。2.在左侧选择"Modules",然后在当前模块的"Sources"标签下,确保src/main/webapp目录被标记为"WebResourceDirectories"(通常显示为蓝色,且有一个地球图标)。3.如果webapp目录没有被标记,可以右键点击该目录,选择"Resources"(或者"Web")来设置。4.然后切换到"Artifacts"标签,选择你的Web应用工件(通常是"war"或"warexploded")。5.在"OutputLayout"选项卡中,确保WEB-INF文件夹位于web应用的根目录下。如果没有,可以手动添加:-点击右上角的"+"->"DirectoryContent"->选择项目中的src/main/webapp/WEB-INF目录。-然后将其拖拽到输出布局的根目录下(通常是`<outputroot>`或`/`)。6.确保web.xml文件被正确识别:在"Artifacts"配置中,如果WEB-INF下有web.xml,它应该自动出现在WEB-INF目录下。如果没有,可以同样通过添加目录内容的方式加入。另外,根据引用[4],在pom.xml中配置构建插件时,确保web资源目录被正确设置(但通常Maven的标准目录结构会被IDEA自动识别)。如果问题仍然存在,可以尝试重新导入Maven项目:右键点击pom.xml->Maven->Reimport。如果重新导入后仍然无法识别,可以尝试以下方法:-项目结构设置的"Modules"->"Web"标签下,检查Web资源目录是否指向了src/main/webapp,且勾选了“Createweb.xml”(如果不需要可以取消,但目录必须存在)。-如果web.xml缺失,可以手动创建一个:在src/main/webapp/WEB-INF目录下创建web.xml文件。最后,如果项目是使用Maven创建的,确保webapp目录结构符合Maven标准,这样IDEA才能正确识别。注意:有时候IDEA的缓存可能会导致问题,可以尝试清除缓存重启:File->InvalidateCaches/Restart。如果上述步骤都不能解决问题,可能需要检查项目是否是一个完整的Web项目(例如,是否使用了SpringBoot,其内嵌容器可能不需要WEB-INF目录?),但根据问题描述,我们需要WEB-INF目录,所以按照上述步骤操作。生成相关问题:1.如何在IntelliJIDEA中正确配置Web应用的工件?2.Maven项目Web资源的标准目录结构是什么?3.如何解决IntelliJIDEAWeb.xml文件缺失的问题?4.如何清除IntelliJIDEA的缓存?5.在IntelliJIDEA中重新导入Maven项目的步骤是什么?</think>### IntelliJ IDEA 部署项目无法识别 WEB-INF 文件夹的解决方案 当 IntelliJ IDEA 无法识别 `WEB-INF` 文件夹时,会导致工件配置错误,常见表现是: - 部署时缺少 `web.xml` 或 `classes` 目录 - 工件输出布局中看不到 `WEB-INF` 结构 - Tomcat 启动时报资源缺失错误 --- #### **根本原因** 1. **目录结构错误**:`WEB-INF` 未放置在标准路径 `src/main/webapp` 下[^5] 2. **资源标记缺失**:IDEA 未将 `webapp` 目录识别为 Web 资源根 3. **工件配置错误**:工件输出布局未包含 `WEB-INF` 内容 --- #### **解决方案步骤** ##### 1. **检查目录结构** - 确保路径为:`项目/src/main/webapp/WEB-INF`(Maven 标准结构)[^5] - 若目录缺失: - 右键 `src/main` → `New` → `Directory` → 输入 `webapp/WEB-INF` - 在 `WEB-INF` 下创建 `web.xml`(可从模板生成) ##### 2. **标记 Web 资源根** - 打开项目结构:`File` → `Project Structure`(或快捷键 `Ctrl+Alt+Shift+S`) - 选择 `Modules` → 切换到 `Sources` 标签 - 右键 `src/main/webapp` 目录 → 选择 `Resources`(图标会变成蓝色地球)[^2] - **验证**:目录图标应为 🌐(表示 Web 资源根) ##### 3. **修复工件配置** - 在 `Project Structure` → `Artifacts` - 删除现有错误工件 → 点击 `+` → `Web Application: Exploded` → 选择模块 - 在输出布局中: - 确保 `WEB-INF` 出现在根目录下 - 若缺失:点击 `+` → `Directory Content` → 手动添加 `webapp/WEB-INF` 目录 - 检查 `web.xml` 路径:`WEB-INF/web.xml` 应自动关联[^4] ##### 4. **配置构建输出(Maven 项目)** 在 `pom.xml` 中确认资源路径: ```xml <build> <resources> <resource> <directory>src/main/webapp</directory> <targetPath>WEB-INF</targetPath> </resource> </resources> </build> ``` 执行 Maven 刷新:右键 `pom.xml` → `Maven` → `Reload Project`[^1] ##### 5. **清除缓存重启** - `File` → `Invalidate Caches` → 勾选所有选项 → `Invalidate and Restart` - 重启后重新部署到 Tomcat[^3] --- #### **验证配置** 1. 启动 Tomcat 前运行命令行检查: ```bash cd %TOMCAT_HOME%/bin startup.bat # 观察是否报资源缺失错误[^3] ``` 2. 在 IDEA 工件输出目录(通常为 `target/项目名`)中检查: - 应包含 `WEB-INF/classes`(编译后的类文件) - `WEB-INF/web.xml` 存在且内容正确 > **关键提示**:若多次尝试失败,删除项目重新导入可解决顽固性配置错误[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值