Web项目的创建
第一步
先去网上下载servlet.jar包(apache-tomcat-11.0.24)最后是9.0之后,(因为里面6.1的servlet.jar缺少 jakarta.servlet-api-6.1.x.jar要另外导入)【说的不一定准确】
而我这次使用的11.0只需要导入servlet-api.jar就行
第二步
新建普通Java项目
然后依次创建文件夹以及文件:
结构如下:在web.xml文件下
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd" version="6.1"> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>此时会全部报红(我这里是全部搞好了所以没爆红,6.1爆红是因为没有这个版本号后续解决),但不用着急。
第三步
添加为Web项目
找到你下载的apache-tomcat-11.0.24文件夹
依次打开G/apache-tomcat-11.0.24/lib(我的文件夹地址),在lib文件夹下找到servlet-api.jar,将他复制到你的项目文件夹wen/WEB-INF/lib下,最后右击lib文件夹选择:
#这里我推荐后两个(因为我只有一个Web模块因此我选了第二个)
Global Library:全局库,所有项目共用,不推荐;
Project Library:当前整个项目所有模块共用;
Module Library:仅当前这个 Web 模块生效,本次场景最合适。
#解释
Module(模块):你现在的 MyJavaWeb 整个项目就是单个模块(无多模块子项目)
Project(工程):IDEA 窗口打开的顶层文件夹,叫 Project,一个 Project 可以包含多个 Module(多个子项目)
Global(全局):IDEA 软件本身,所有以后新建、打开的项目全都共用
下一步修改下路径(按多模块 / 多项目场景配置 Paths(编译输出路径)单项目选Inherit开头的不用动就行)
下一步添加为Web项目
注意:我这里用的idea2023版,有的同学第一次搞这个Web选项可能没有出现,但会在Facets下点击+找到
黄色字体的意思是:意思是还没创建打包部署产物,有兴趣自己了解下
//大白话翻译:Artifact = 项目打包部署包
IDEA 要启动 Tomcat,必须知道:
哪些文件夹(web 页面、classes 编译 class、lib 依赖 jar)要发给 Tomcat。
这个 “打包清单” 就叫 Artifact。
//为什么会有黄色警告:
'Web' Facet resources are not included in any artifacts
翻译:你虽然标记了这是 Web 项目(Web Facet),但没有创建部署打包清单。
IDEA 不知道启动 Tomcat 时该传哪些文件,所以弹出警告。
两者核心区别
web.xml 声明:管语法校验,解决 xml 爆红;
Artifact 部署产物:管项目运行,消除黄色警告,后面才能启动 Tomcat 打开网页。
解决方法:
重新点击File->选择Project Structure
最后将这俩个地方改成6.0即可
第四步
Attach Files or Directories= 挂载本地 jar / 文件夹作为项目依赖库
第一种:
值得注意的是之后要将tomcat 的lib文件夹复制到这个项目文件夹下,这样做的好处就是,将来项目开发完成后,发给对方,对方不需要servlet包就可以部署运转。我这里提供两种方式
#优点
项目自带全部依赖,不用手动在 IDEA 绑定 Tomcat 库,打开项目不会报 Servlet 类缺失;
项目移植、发给别人时,不需要对方本地安装 Tomcat 就能正常编译。
,但是呢,假设对方也有可能会起冲突。然后还有一个缺点就是项目大的时候加载慢
#致命缺点(强烈不推荐这么做)
包冲突、部署异常
Tomcat 本身运行时会自带 lib 里的 servlet-api、jsp-api,如果你项目里重复放一份,部署到 Tomcat 时会出现类加载冲突、ClassCastException、页面 500 报错。
项目体积暴增
Tomcat/lib 几十 MB,复制进项目会让项目文件夹臃肿,提交 Git / 压缩传输很慢。
版本无法统一管理
后续更换 Tomcat 版本,你还要手动替换项目里所有 jar 包,极易出现版本不匹配。
弹出下面的选择框就代表无法识别文件夹下类型,tips:采用第二种方式会自动识别文件夹下文件的类型
第二种:
选择tomcat的lib文件夹作为本地依赖库
选择你之前下载tomca的路径(我的是G:\apache-tomcat-11.0.24\lib )
最后点击Apply就行了。好了以上就完成了新建一个Web项目了。
若后续要跑项目还需要部署一个tomcat服务器,接下来教大家如何部署服务器:
tomcat服务器配置以及项目部署上线
点击这里向下三角箭头选择Edit...
点击+号,找到Tomcat Server -> Local
然后点击ok 出现红色警告别着急,这是因为
Warning: No artifacts marked for deployment
翻译:警告:没有设置任何可部署的项目产物
通俗解释
Artifact(产物)= 你的 JavaWeb 项目打包后的运行文件(页面、class 类、配置文件)。
Tomcat 启动时不知道要部署哪一套项目文件,所以弹出这个警告,直接启动会访问页面 404
点击+ 再选择Artifact
最后点击Apply这样服务器就部署完成了。
最后值得提醒的是
http://localhost:8080/MyJavaWeb_war_exploded/这个就是以后你访问自己项目的路径了
_war_exploded这个看着不舒服可以去掉,因为路径可以自定义但是必须和项目名字以及路径一样
启动一下,成功启动。。。
有的同学安装完tomcat之后启动红色字体是乱码这是因为tomcat的编码是UTF-8,然后windows是GBK导致的,因此我们只需要找到G:\apache-tomcat-11.0.24\conf\logging.properties,以记事本打开这个logging.properties文件在文件末尾追加
java.util.logging.ConsoleHandler.encoding = GBK保存并退出重启服务器就行了
最后关于这个tomcat的部署界面的介绍感兴趣的可以看看
一、顶部基础区域
Name
当前 Tomcat 运行配置的名称,默认Unnamed,建议改成Tomcat11,方便区分多个服务器配置。
Store as project file
勾选后,这个 Tomcat 配置会保存到项目文件夹内,换电脑 / 复制项目时配置一起带走;不勾选则仅存在当前本地 IDEA。
Application server + Configure...
Application server:已绑定的 Tomcat 服务器,现在空白所以底部报错Application Server not specified。
Configure...:绑定本地 Tomcat 安装目录的入口,点进去填写G:\apache-tomcat-11.0.24才能消除报错。
二、Open browser(启动后浏览器设置)
After launch:勾选代表 Tomcat 启动成功后,自动打开浏览器访问项目页面。
Default:默认系统浏览器,右侧...可更换 Chrome/Edge 等。
with JavaScript debugger:前端 JS 调试工具,JavaWeb 后端开发不用勾选。
URL:启动后自动访问的地址,默认http://localhost:8080/,和后面 Deployment 上下文路径匹配。
三、VM options
JVM 虚拟机启动参数,用来配置内存大小、编码、系统变量等。
示例(日常开发常用):
plaintext
-Dfile.encoding=UTF-8 -Xms512m -Xmx1024m
新手暂时留空即可。
四、On 'Update' action
修改代码 / 页面后,点击更新按钮时 Tomcat 执行什么操作
下拉选项:
Restart server:重启整个 Tomcat 服务器(改动 Java 类推荐)
Update classes and resources:只更新 class 和静态资源 (html/css/js),不重启服务器(改页面专用)
Hot swap classes:热替换,仅更新改动的 class
Show dialog:更新时弹出选择窗口,新手建议勾选。
五、JRE
Tomcat 运行使用的 Java 环境,默认继承项目 JDK17,无需修改。
六、Tomcat Server Settings(端口设置)
HTTP port:网页访问端口,默认8080,被占用就改成8081/8082。
HTTPS port:加密访问端口,默认8443,普通 Web 项目不用管。
AJP port:Apache 与 Tomcat 联动端口,单机开发无需修改。
两个复选框
Deploy applications configured in Tomcat instance:加载 Tomcat 自带 webapps 下的项目,只开发自己项目建议不勾选,避免冲突。
Preserve sessions across restarts and redeploys:重启服务器后保留用户 Session 会话,测试登录功能可勾选。
七、Before launch
启动 Tomcat 之前自动执行的任务,默认是空;
可以添加Build,代表启动前自动编译全部 Java 代码,默认自带无需改动。