一、在DOS里运行Tomcat的方法
- (右键)此电脑→属性→高级系统设置→环境变量→新建系统变量,并输入变量名CATALINA_HOME和变量值(即Tomcat的安装路径),点击确定保存
- 编辑系统变量里的Path,点击新建,输入%CATALINA_HOME%\bin,点击确定保存
- 此时,再运行bin目录里的startup.bat,成功!还会弹出一个窗口
- 注意:如果电脑安装了多个不同版本的Tomcat,那么此时在DOS里运行的是环境变量里配置的那个版本的Tomcat
二、 修改Tomcat的端口号
- 打开conf目录下的server.xml文件(我用VScode打开)。可以看到Tomcat默认http协议,8080端口(屏幕中间那几行蓝色的代码)
- 此时,我们将8080修改为8081,并保存
- 再双击运行bin目录里的startup.bat文件,可以看到修改成功
- 或者在浏览器上输入localhost:8081(运行startup.bat的cmd窗口没有被关闭的情况下)
三、 如何访问webapps里的项目
- 找到webapps文件夹,并打开,此时有五个项目
- 以examples项目为例,如果我们要访问其中的index.html文件,那么我们就在浏览器中输入(必须在电脑已经运行Tomcat的前提下)http://localhost:8080/examples/index.html或者http://127.0.0.1:8080/examples/index.html(localhost和127.0.0.1代表本机,正常情况下应该输入服务器ip)。按回车出现如下页面,访问成功
- 注意:url里的examples代表项目的访问路径。webapps文件夹里的examples代表项目的部署目录。二者可以不一样
四、 WebApp的标准结构
- 一个项目里可以直接放的文件有:(1)index.html(2)images文件夹(图片)(3)js文件夹(js文件)(4)css文件夹(css文件)。如果觉得看起来麻烦,可以创建一个文件夹,取名static,将(2)(3)(4)这三个文件夹放进去
- 还有一个WEB-INF文件夹。WEB-INF文件夹里的资源是受保护的资源,即不能通过浏览器直接访问它们。WEB-INF里必须有的:(1)classes文件夹,字节码根路径(2)lib文件夹,放项目需要的第三方jar包(3)web.xml文件,是当前项目的配置文件
- 举例证明WEB-INF里的文件都不能被浏览器直接访问(在app文件夹里准备一张图片a.png,在static的images文件夹里准备一张图片b.png,在WEB-INF文件夹里准备一张图片c.png):
五、部署项目的第二种方式
-
部署项目的第一种方式就是四、中演示的。
-
部署项目的第二种方式。不一定要把项目放在Tomcat的webapps文件夹里,也可以放在其它地方。我在自己的D盘中创建了一个mywebapps文件夹,把项目放进去
-
使用第二种方式时,还需要在Tomcat的conf下创建Catalina/localhost目录,并在该目录下准备一个app.xml文件(即项目名.xml)
-
编辑该xml文件,有两个必不可少的属性,即path(项目的上下文路径,即在浏览器中输入的项目名称)和docBase(项目在磁盘中的实际路径)。由于项目名叫app,Catalina/localhost里的xml文件也叫app,所以path只能这么指定
-
知识点补充:url的组成部分和项目中资源的对应关系,以http://127.0.0.1:8080/app/index.html为例(1)http://是协议(2)127.0.0.1是服务器的ip(因为是本机,所以填写127.0.0.1或localhost)(3)8080是Tomcat的端口号(4)app是项目的上下文路径(5)index.html是项目里的具体资源(如果不写具体资源,默认找index.html文件)
六、webapps里的ROOT目录、 host-manager目录和manager目录
- 访问ROOT目录里的资源需要注意:因为该项目的上下文路径不是ROOT,且它有特殊设置,所以不需要加项目的上下文路径就能访问。看url
- 访问host-manager目录和manager目录里的资源时需要输入Tomcat账号和密码
- 设置Tomcat账号密码,就需要配置文件。进入conf目录,找到tomcat-users.xml文件
- 打开该文件,并输入如下代码:
<role rolename="admin-gui"/> <role rolename="admin-script"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="admin" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
- 保存并关闭
- 重新访问http://127.0.0.1:8080/manager,输入用户名和密码(此时两个都是admin,可以根据需要自己调整)
七、IDEA关联Tomcat
- 往Tomcat里放的是:可以用于部署的APP
- 在JavaWeb工程里准备的是:html、css、js、img、Java代码、lib(即导入的jar包)、web.xml
- 把工程转换为APP的过程,称为构建
- 建立IDEA与Tomcat的关联:打开IDEA,点击左侧的自定义,点击所有设置,再点击构建、执行、部署
- 展开构建、执行、部署,点击应用程序服务器,再点击+号,选择Tomcat服务器
- Tomcat主目录选到bin的上一层
- 关联成功,点击应用,再点确定
八、使用IDEA开发JavaWeb工程并部署运行
- 在D盘中新建一个文件夹,名为web-all。打开IDEA,点击打开,找到web-all,点击信任项目
- 进行相关配置,点击文件,点击项目结构,配置SDK,这里选择jdk17。语言级别与SDK相匹配。别忘了点击应用和确定
- 用Module来创建项目,一个普通Java项目创建完成
- 添加项目组件,在项目结构中找到模块→demo01-web01→依赖。点击+号,选择库。别忘了点击应用和确定
- 右击demo01-web01,选择添加框架支持。勾选Web应用程序,点击确定。此时会发现多出来一个web目录。这时,就不是一个普通的Java项目了,而是一个JavaWeb项目了!可以把web目录里的.jsp文件删除
- 注意:web目录就相当于项目的目录,src目录里放的是Java代码
- 可以在demo01-web01中创建一个resources目录,专门用来放配置文件。如果只是这么操作,resources里的文件并不会和src里的代码一起参与编译。为了让它们一起参与编译,右击resources,选择将目录标记为,选择资源根目录
- 如何导入jar包:展开web目录,右击WEB-INF,新建目录lib。把磁盘中需要导入的jar包拖到lib中。还必须:右击lib,选中Add as Library...。Level推荐选择Module Library
- 如何把工程构建成APP:在构建里选择构建工件
- 构建成功。demo01-web01是工程,demo01_web01_war_exploded是可以发布的APP。经过编译,demo01-web01里的web目录变成了demo01_web01_war_exploded
- classes文件是由demo01-web01里的resources和src共同生成
- 把构建好的APP放入Tomcat:在当前文件中选择编辑配置。点击+号,选择Tomcat服务器,暂时选本地。在部署那一栏里点击+号,选择工件。此时我们还可以修改项目的上下文
九、IDEA使用Tomcat运行JavaWeb项目的原理
- 为了保证不污染Tomcat软件,IDEA创建了Tomcat副本,让JavaWeb项目在该副本中运行
- 观察日志,在Using CATALINA_BASE这一行,可以看到Tomcat副本以及副本所在的位置
- 根据该路径可以找到Tomcat副本,可以观察到副本并不是一个完整的Tomcat。副本里存放的仅仅是与要部署的项目相关的配置文件