创建普通Javawb项目
进入idea,在开始界面或者进入后的界面,创建项目(几乎所有的创建项目都是这样)在文件管理器中显示为一个文件夹


点击如下三个地方,


补充:
javaenterprise是 Java EE(Java Platform, Enterprise Edition)的通俗叫法,后来改名为 Jakarta EE(因为 Oracle 把 Java EE 的商标权转给了 Eclipse 基金会),核心含义没变 ------ 它是一套专门用于开发企业级应用的 Java 技术规范
WebApplication(Web 应用)就是一套能跑在 Web 服务器(比如 Tomcat)上、通过浏览器 / 客户端访问的完整程序包------ 你写的 JavaWeb 项目,本质就是一个 WebApplicatio
点击next之后就显示如下,写自己的项目名称,选择项目目录,点击finish

创建出来的如下图所示

然后在web文件夹下创建WEB-INF目录


然后在WEB-INF目录下创建web.xml文件

补充:
- WEB-INF 目录的核心价值:
- 安全隔离 :里面的文件(比如 classes、lib、web.xml)浏览器无法直接访问 (比如输入
http://localhost:8080/项目名/WEB-INF/web.xml会报 403),避免核心代码 / 配置泄露;- 资源存放:集中存放 Web 应用的核心资源(编译后的代码、依赖包、配置文件),Tomcat 启动时会优先加载这个目录。
2.web.xml的核心价值
作用 通俗解释 举例 声明 Web 应用版本 告诉 Tomcat 遵循哪个 Servlet 规范 <web-app version="4.0">配置 Servlet 映射 不用 @WebServlet注解时,指定 Servlet 访问路径<servlet-mapping>配置/hello对应 HelloServlet配置全局参数 整个 Web 应用共用的参数(比如数据库地址) <context-param>配置db.url配置过滤器 / 监听器 处理请求拦截、应用启动逻辑 登录验证过滤器、统计在线人数监听器 指定默认首页 访问 http://localhost:8080/项目名/时默认显示的页面<welcome-file-list>配置 index.jsp
此时点开右上角,点击edit开头这个


Edit Configurations(编辑配置)是 IDEA 里管理所有程序运行 / 调试规则的入口,针对 Tomcat 来说,它的核心作用是:告诉 IDEA "你要启动哪个 Tomcat 服务器?要把哪个 Web 项目部署到这个 Tomcat 上?部署成什么格式?访问路径是什么?"简单类比:
Tomcat 是 "电影院",你的
exercise项目是 "电影";
Edit Configurations就是 "放映设置"------ 配置 "用哪个电影院(Tomcat 实例)放哪部电影(exercise 项目)、怎么放(部署格式)"。只有配置正确,IDEA 才能把你的
exercise项目正确部署到 Tomcat 上
war exploded的核心特点:IDEA 会把你的
exercise项目按 Web 规范(包含 WEB-INF、web.xml 等)生成一个解压后的目录(而非压缩包);启动 Tomcat 时,IDEA 会自动把这个解压目录部署到 Tomcat 的运行目录中;
开发时改代码后,可通过 "热部署" 直接生效(不用重新打包),这也是开发阶段最常用的方式。
部署格式 含义(通俗版) 适用场景 war把项目打包成标准的 .war压缩包,部署到 Tomcat 的webapps目录生产环境部署 war exploded不打包成压缩包,直接把项目的 "解压后目录" 部署到 Tomcat 开发 / 调试阶段
创建完成之后如下图所示

项目结构,遵循javaee规范
你的项目/
├── src/
└── web/
├── WEB-INF/ (必须手动加,浏览器无法直接访问,安全)
│ ├── web.xml (必须手动加,Web 应用的核心配置文件)
│ ├── classes/ (存放编译后的 .class 文件,IDEA 会自动生成和管理,不用手动创建)
│ └── lib/ (存放项目依赖的 jar 包,需要就加上,也非必须)
└── index.jsp
点开这个index.jsp这个是我们网站的一个前端显示,用jsp显示的,可以写一些标题,方便我们后续运行时显示

再次点击如图所示位置

进入这个界面

1.这个界面是什么?
这个界面是 IDEA 中对 Tomcat 服务器运行时行为 的配置中心。你可以把它理解为:告诉 IDEA 你要 "用哪个 Tomcat、用哪个 JDK、监听哪个端口、启动后做什么"。
- 界面里的关键配置项解释
① Application server
- 这里显示的是
Tomcat 9.0.10,表示 IDEA 会调用你本地安装的这个版本的 Tomcat 来运行项目。- 点击
Configure...可以修改或指定其他版本的 Tomcat 安装目录。② Open browser
After launch:勾选后,Tomcat 启动成功后,IDEA 会自动用默认浏览器打开你设置的地址。- 地址栏:
http://localhost:8080/,这是启动后浏览器自动访问的 URL。如果你的项目上下文路径是/exercise,这里应该改成http://localhost:8080/exercise。③ JRE
- 这里显示的是
Default (1.8 - project SDK),表示 IDEA 会使用项目默认的 JDK 版本(JDK 1.8)来启动 Tomcat。- 点击右侧的
...可以切换其他已安装的 JDK。④ Tomcat Server Settings(端口配置)
"端口" 相关配置:
- HTTP port :
8080,这是 Tomcat 监听 HTTP 请求的端口,也是你在浏览器中访问项目时需要加在localhost后的端口号。- HTTPS port:HTTPS 协议的端口,默认未配置,一般用于需要加密传输的场景。
- JMX port :
1099,用于 JMX 监控和管理 Tomcat 内部状态,开发时一般不用改。- AJP port:用于和 Apache 等 Web 服务器集成,现在已很少使用。
⑤ On 'Update' action
- 这里设置为
Update classes and resources,意思是当你在 IDEA 中点击 "更新"(或按快捷键)时,IDEA 会自动把修改后的 Java 类和资源文件同步到 Tomcat 运行目录,实现热更新,不用重启服务器。⑥ Before launch
- 这里的
Build, Build Artifacts表示在启动 Tomcat 之前,IDEA 会先自动编译项目(Build),并构建部署用的 Artifact(比如war exploded),确保你运行的是最新的代码。
按照下图所示流程对tomacat进行配置
1.选择tomcat的版本,tomcat的存在形式是与1个文件夹,电脑可以配置多个tomcat文件

2.tomcat的配置,当idea中主动点击更新按钮代码更新了,idea执行什么操作
- 设置为
Update classes and resources的效果 :IDEA 会自动:✅ 重新编译你修改的 Java 类(Servlet / 工具类等),把新的.class文件同步到 Tomcat;✅ 同步你修改的静态资源(HTML/CSS/JS/ 图片等)到 Tomcat;✅ 不会重启 Tomcat,同步完成后刷新浏览器就能看到修改后的效果。- 其他选项
- Update resources:只更新静态资源(HTML/CSS/JS/ 图片等),Java 代码不会更新。
- Redeploy:重新部署整个项目(相当于先卸载再重新部署,比重启快一点,但还是比较慢)。
- Restart server:完全重启 Tomcat 服务器,所有修改都生效,但最耗时。
- On frame deactivation(IDEA 失去焦点时的行为)
- 字面意思:当你离开 IDEA(比如切到浏览器、微信、桌面)时,IDEA 要执行什么操作。
- 设置为
Update classes and resources的效果 :你改完代码后,只要点击浏览器(IDEA 失去焦点),IDEA 会自动触发更新,把新代码 / 资源同步到 Tomcat------ 连手动点 "Update" 都省了,更方便。


3.选择jdk,默认第一个选项是选择默认的jdk

设置端口号
服务器通过不同的端口号区分,端口号任意服务器都可以申请,同一时间一个端口号只能被一个服务器使用,因此访问时可能这个端口号正在被使用,就会申请不到,可以设置成别的使用频率低的端口号,更容易访问到

端口号的范围(16 位)
0 ~ 65535(共 65536 个)
端口范围 名称 用途 0 ~ 1023 知名端口 (Well-known Ports) 系统服务专用,如 HTTP (80), HTTPS (443), FTP (21)。需要管理员权限才能绑定。 1024 ~ 49151 注册端口 (Registered Ports) 用于常见的应用程序服务,如 MySQL (3306), Tomcat (8080), Redis (6379)。 49152 ~ 65535 动态 / 私有端口 (Dynamic/Private Ports) 用于临时连接或自定义服务,一般不主动绑定。
- Tomcat、Jetty、JBoss 等 Java 服务器默认用
8080- Node.js、Python Flask 等 Web 框架默认用
3000、5000、8000- MySQL 默认用
3306- Redis 默认用
6379
每一台设备都有自己的ip地址,有了iP才能够上网,不管是手机电脑还是什么,在同一个网内,比如校园网,公网ip地址相同,内网ip地址不同,通过不同的iP对设备进行区分,这样你向服务器申请资源时,服务器通过ip地址找到你,把资源发给你
同时电脑可以作为服务器,在你电脑部署了服务器之后就可以作为服务器使用,服务器的iP就是你的电脑的ip,但是电脑可以部署多个服务器(tomcat)因此为了区分服务器,给服务器设置了端口号,一个电脑上不同的服务器端口号必须不同,但是不同电脑上可以有相同的端口,就像不同小区都可以有8080这个门牌号,仍然可以区分。
虽然公网ip+内网ip可以找到你的电脑,但是你的电脑有不同的客户端,微信,王者荣耀,音乐,在不同的客户端申请数据也需要区分,不然服务器不知道把数据返回给你的哪个客户端,所以客户端也有端口号,但是客户端的端口号是操作系统自动分配的,操作系统已经内置了这个功能,比如在浏览器访问百度,浏览器申请数据,操作系统就给浏览器一个端口号,然后服务器收到请求,就给这个地址公网ip+内网ip+端口号,找到浏览器,发给他数据,从而找到我们要显示的页面。
(电脑上的客户端用的是动态端口号,操作系统一般会自动从 49152 ~ 65535 这个区间里随机拿一个,用完就关,端口立刻释放,下次再连,又是另一个随机端口)
在举个例子,就是京东,淘宝,百度的网页为什么我们能一直访问到,就是他们的服务器创建好之后,占用自己电脑的8080端口。然后一直不停止,电脑也不关机,所以服务器一直处于启动状态,一直可以被访问
(每个电脑都有6万多个端口号,同一时间同一端口只能被一个占用,除了49152 ~ 65535 这个区间的端口是操作系统分配给客户端的,剩下的端口就是分配给服务器使用)
这个过程需要的是路由器,只要上网就需要路由器,你的电脑、设备等,有自己的设备ip,但是上网需要路由器把你转换成公网ip,然后就能发数据收数据。
回到了关键为什么8080会容易被占用?因为除了客户端软件,电脑上一些软件自带服务器,他们会占用端口,他们会问操作系统,这个8080端口我想占用,操作系统查看一下,这个端口没人用,就给他们了,这个端口(类似房间)是一个常用的端口,很多软件想用,所以申请这个端口可能申请不到,如果强行访问,就会访问到正在使用这个端口的界面。
现在可以写一个不太常见的端口号了,主包写的8081,然后先点击apply应用,然后点击ok
这个上面有一个name,这个是给你的这套配置起一个名字,用来在 IDEA 的运行配置列表里
标识和区分不同的启动方案,和你的项目名字,tomcat名字都没有关系,可以随便起一个,默认他给你放的是你的tomcat版本号作为名字(这也代表了同一个项目可以有不同的配置方案,就像同一个人物不同的皮肤)

现在一切都配置好了,如何让这个项目运行跑起来?
找到下载的tomcat的压缩包,复制到自己的jdk项目所在的磁盘中(主包在d盘),然后解压

然后进入解压后的文件,目录结构应该如下图所示

tomcat文件目录解析
目录名 核心作用(通俗版) /bin存放启动 / 停止脚本(可执行文件)、Tomcat 工具程序 /conf存放配置文件(比如端口、用户权限) /lib存放 Tomcat 运行所需的 jar 包(包括 Servlet 规范实现) /webapps存放你的 Web 项目(war 包 / 项目文件夹) /logs存放运行日志(报错、访问记录都在这) /temp存放临时文件(Tomcat 运行时产生) /work存放 JSP 编译后的 .class文件
tomcat是一种不用安装解压就能直接使用的软件,这种软件没有自己的可视化界面,怎末启动,关闭他呢?
找到bin文件下
windows系统
启动start.bat
关闭shutdown.bat
linux系统
(这也是tomcat的便捷之处,不论在哪个系统直接下载同一个文件夹就能使用,tomcat的跨平台特性)

注意webapps这个目录,所有的tomcat项目都是在这个目录中的,
但是我们是在idea中创建的项目啊,怎末放到这个目录里面的
看这个页面,Deployment是部署的意思,这个就是idea告诉tomcat
- 要部署哪个项目(这里是
exercise:war exploded)- 以什么方式部署(
war exploded是解压式部署,方便开发调试)- 访问路径是什么(这里
Application context: /表示直接通过根路径访问,如http://localhost:8080/
最下面一行写了部署方式Artifact
Artifact 可以理解为 "项目的可部署产物",是 IDEA 帮你把项目代码打包 / 整理成的、可以直接放到服务器上运行的格式。
常见的 Artifact 类型有:
war exploded :解压式部署(开发首选)
- 项目以文件夹形式部署,修改代码 / 资源后能热更新,不用重启服务器。
war :打包成 WAR 文件(部署首选)
- 把整个项目打包成一个
.war文件,方便复制到 Tomcat 的webapps目录,Tomcat 会自动解压运行。
WAR 包部署(war)打包 :IDEA 把项目编译后的所有文件(
.class、静态资源、配置文件等)压缩成一个.war包。这个包是一个完整的、可移植的部署单元。部署 :将
.war文件复制到 Tomcat 的webapps目录。自动解压 :Tomcat 启动时(或检测到新文件时),会自动扫描
webapps目录,发现.war文件后,将其解压为一个同名的文件夹。加载运行:Tomcat 把解压后的文件夹当作一个标准的 Web 应用,加载到服务器中运行。
访问 :通过
http://localhost:8080/[war文件名]访问,其中[war文件名]就是解压后的文件夹名。解压式部署(war exploded)
第一步:编译产物目录 IDEA 会把你写的 Java 代码编译成
.class文件,把 HTML/JSP/JS 等静态资源、web.xml等配置文件,统一放到一个临时目录 (默认在 IDEA 工作区的out/或target/下)。第二步:Tomcat 加载目录 IDEA 在启动 Tomcat 时,会通过 Tomcat 的 "虚拟部署" 机制,告诉 Tomcat:"不要读你的
webapps,去读我这个临时目录里的文件"。第三步:热更新机制你修改代码 / 资源后,IDEA 会实时重新编译(只编译修改的文件),并通知 Tomcat:"某个文件变了,你重新加载一下"。Tomcat 不用重启,只刷新变化的部分到内存。
直接输出到 Tomcat/webapps配置输出路径 :在 IDEA 的部署配置中,将
war exploded的输出目录手动指定为Tomcat/webapps/[项目名]。编译输出 :启动 Tomcat 或手动构建项目时,IDEA 会将编译后的所有文件直接写入到
webapps/[项目名]文件夹中。Tomcat 加载 :Tomcat 启动时,会像对待任何其他项目一样,扫描
webapps目录,发现[项目名]文件夹并将其作为 Web 应用加载。热更新 :由于项目文件直接在
webapps目录下,IDEA 修改代码后重新编译,文件会实时更新,Tomcat 可以检测到变化并进行热更新。
这个idea创建webapplication的时候就自动会选择war exploded这个方式,如果想要选择其他方式,在这个位置选择项目配置然后点击左侧的项目部署产物,可以看到是默认的这个,然后点击上方的加号
显示如下的部署选项
核心选项含义
- JAR
- 打包成
.jar文件,用于普通 Java 项目(非 Web),比如工具类、库、可执行 Java 程序。- Web Application: Exploded
- 就是你现在用的
war exploded,解压式 Web 部署产物,文件夹形态,支持热更新,开发首选。- Web Application: Archive
- 打包成
.war文件,是标准的 Java Web 部署包,正式环境 / 生产环境首选。- JavaEE Application: Exploded / Archive
- 用于企业级 JavaEE 应用(包含 EJB、多个 Web 模块等),比普通 Web 项目更复杂,新手一般用不到。
- EJB Application: Exploded / Archive
- 专门打包 EJB 组件(企业级 JavaBean),属于重型 JavaEE 技术,现在用得少了。
- 其他(dm Bundle、Android 等)
- 对应其他技术栈或平台的产物,和你当前的 Tomcat Web 项目无关
既然知道了tomcat可以直接运行webapps下的文件,那么怎末做呢方式一、
tomcat会扫描webapps目录下的文件,创建了文件就直接当作项目运行,但是文件有标准的格式,否则不能被tomcat成功运行,项目结构如下所示
myproject/├── index.jsp # 前端页面
├── css/ # 静态资源(非必须)
└── WEB-INF/(必须)
├── web.xml # 部署描述文件
├── classes/ # 编译后的Java类(系统生成,非手动创建)
└── lib/ # 项目依赖的jar包(如servlet-api.jar)(非必须)
方式二、放 WAR 包(标准部署,适合生产环境)
- 准备 WAR 包 :
- 可以用 IDEA 打包(之前的
Web Application: Archive),也可以用 Maven/Gradle 打包,甚至手动用压缩软件打包(改后缀为.war);- 部署 :
- 把
myproject.war复制到 Tomcat 的webapps目录下;- 启动 Tomcat :
- Tomcat 会自动解压
myproject.war成myproject文件夹,然后加载运行;- 访问 :
- 同样是
http://localhost:8080/myproject(WAR 包名就是访问路径)
补充:怎末访问
http://localhost:8080/myproject访问路径是http://电脑地址:端口号/项目名称
localhost指的是你的电脑,你的电脑有自己的ip,但是在自己电脑上部署的服务器,直接用localhost就可以访问,相当于"我家的xxx地址"就会默认在自己电脑
8080就是部署tomcat服务器时申请的端口号,申请的哪个就写哪个,然后是war包的名称,如果直接建立的文件夹就是文件夹的名称
在idea上的访问路径是什么,也是项目名称吗?不是,看下图
Application context这个就是项目访问路径的意思
Tomcat 可以同时运行多个 Web 项目(比如 A 项目、B 项目、C 项目),Application context就是给每个项目分配的「唯一门牌号码」------ 浏览器通过这个 "门牌",才能精准找到要访问的项目,不会和其他项目混淆。
tomcat文件的访问是有映射关系,root文件夹的文件映射为/会被优先访问
你做的操作 Tomcat 的映射规则 最终访问效果 文件放到 webapps/ROOT自动映射为 Application context = /访问 localhost:8080/文件名就能打开文件放到 webapps/myapp自动映射为 Application context = /myapp访问 localhost:8080/myapp/文件名
在这里写/,就是表示吧这个项目访问路径映射为/,tomcat访问的时候默认优先访问/的项目,不用写具体的项目名字就可以找到,也可以给这个起名字,比如写/exercise,就是这个项目的访问路径变成了
http://localhost:8080/exercise
这个路径的名字是自己起的,和项目名称无关,就是把访问这个项目的路径命名
就是更加灵活,在idea创建的项目可以任意修改路径名称,但是直接在webapps下创建的就不行
tip:tomcat默认端口8080,如果已经下载解压了tomcat,点击启动tomcat,然后在浏览器中访问localhost:8080,就能到tomcat的页面
值得注意的是,如果你创建项目的时候在idea中把路径映射为/,那么默认份入欢迎界面就不会显示了,Tomcat 只会有一个「默认项目(Application context = /)」,新的项目会替换掉原有的默认项目资源但是欢迎页面不会消失,如果想再次访问它,就需要输入完整的文件夹路径
http://localhost:8080/index.jsp
这个就可以看到了
现在所有的都已经弄好了
然后点开web.xml这个是项目的核心文件
在这个文件里面粘贴以下代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
看到web.xml的图标变成了这样

就可以运行了,点击右上角运行按钮

结果如下图所示,果然和我们预想的一样,直接在根目录下,所以端口后面没有路径名字,然后端口是我们设置的8081,进入之后显示的也是在index.jsp上写的代码





