赞
踩
网络通信三要素:
1.IP:电子设备(计算机)在网络中的唯一标识。
2.端口:应用程序在计算机中的唯一标识。范围:0~65536
3.传输协议:规定了数据传输的规则
3.1.基础协议:
3.1.1. tcp:安全协议,三次握手。速度稍慢
3.1.2. udp:不安全协议。速度快
服务器:安装了服务器软件的计算机
服务器软件:接收用户的请求,处理请求,做出响应
常见的 Java 相关的 web 服务器软件:
weblogic : Oracle 公司,大型的JavaEE服务器,支持所有的JavaEE规范, 收费的。
websphere : IBM 公司,大型的JavaEE服务器, 支持所有的JavaEE规范, 收费的。
JBOSS : JBOSS 公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。
Tomcat : Apache 基金组织,中小型的JavaEE服务器,仅仅支持少量的JavaEE规范(例如:servlet/jsp)。开源的,免费的。
注:JavaEE 是 Java 语言在企业级开发中使用的技术规范的总和,一共规定了13项大的规范
官网:https://tomcat.apache.org/
参考:https://blog.csdn.net/dongzhensong/article/details/87807378
给 bin 目录的所有者授予执行的权限:
sudo chmod -R u+x /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin
# 或者
sudo chmod -R 755 /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin
注:755 代表所有者用户对拥有读、写、执行的权限,同组其他人员以及其它用户拥有执行和读的权限,没有写的权限。
2.切换到 tomcat 的 bin 目录下
cd /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/bin
3.启动 tomcat
sh startup.sh
# 或者
./startup.sh
4.停止 tomcat
sh shutdown.sh
./shutdown.sh
5.浏览器地址栏输入:localhost:8080,验证是否成功启动 tomcat
Windows 系统可以双击 startup.bat 启动服务器(启动窗口不要关闭掉),双击 shutdown.bat 关闭服务器。关闭终端窗口也可以关闭服务器(不推荐),在启动服务器窗口按 Ctrl + C
也可以停止服务器。
双击批处理脚本文件时可能存在的问题:
1.黑窗口一闪而过
解决:配置 JAVA_HOME 环境变量,JDK的安装目录设为变量值
2.默认端口号被占用,导致启动失败
解决:
1.找到占用端口号的进程,杀死该进程
2.修改tomcat的默认端口号
在tomcat的配置目录下找到 server.xml 文件,在文件中找到:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将 Connector 元素的 port 属性值改成其它的端口号即可。
一般将 tomcat 的默认端口号改成 80,该端口号是 http 协议默认的端口号,因此输入 URL 时可以省略端口号。
http://ip:port/xxx/hello.html
其中 /xxx
是项目的访问路径,称为虚拟目录;hello.html 是项目中的资源路径。
缺点:每次修改项目的代码后,都要把项目重新放到 webapps 目录下,太麻烦
注:通常会把项目打成 war 包,放到 webapps 目录下,会自动解包;删除 war 包对应的项目文件夹也会自动删除。
在 tomcat 的 server.xml
文件的 <Context>
标签中进行配置部署
好处:不再需要把项目放到 webapps 目录下,而且修改了项目的代码后,也不需要手动重新部署,这样比较方便
缺点:
2.1.server.xml 是 tomcat 的核心配置文件,所以在这个文件中配置会有安全风险
2.2.如果一个tomcat部署多个项目时,每次配置改动都要重启服务器
注:server.xml 修改后,需要重启 tomcat,相关配置才能生效
在 tomcat 的 conf/Catalina/localhost
目录下创建 xml 文档,进行项目的配置部署
例如,创建一个名为 hello.xml
的文件,在里面写如下的内容:
<Context docBase="E:\Workspaces\hyt2pf\context"
debug="5" reloadable="true" crossContext="true" workDir="E:\Workspaces\hyt2pf\work"/>
注:项目的访问路径(虚拟目录)是 xml 文件名,即 /hello
好处:热部署,部署项目或者删除项目,都不需要重启服务器
第一步:点击顶部菜单栏 Run → Edit Configurations
第二步:选择左侧 Templates → Tomcat Server → Local,接着点击页面中的 Server 标签页,再点击 Application server 下拉列表框右边的 Configure 按钮,配置服务器。
第三步:配置服务器
第四步:创建配置文件
前面几步只是使用 IDEA 的 Template of Tomcat Server 进行服务器集成的相关配置,最后你要把配置信息创建成一份配置文件才能使用。
这里特别强调下,只有点击 deploy 后,IDEA 才会根据你选择的部署方式生成对应的文件,所以下图所示的文件以及部署动作都是在点击 deploy 后由 IDEA 自动完成的。
本地电脑中的 IDEA 工作空间中的项目目录结构截图:
你添加了要部署的 Artifacts(工件/产品/成品)后,服务器启动时会自动完成已选 Artifacts 的部署工作。
也就是下图所示的步骤你完成了,那么重启服务器会自动完成项目的部署。
在 Deployment 标签页中添加了 Artifacts,其实并不是部署项目,这里只是选择项目的部署方式而已,服务器启动后或者你在底部的服务器窗格中选择服务器,点击右键的【deploy】才会真正的部署项目。
如何理解部署这个动作,请参阅《部署应用程序到服务器到底是什么意思?部署到底在干什么事情?》。
热部署就是正在运行状态的应用,修改源码之后,在不重新启动服务器(包含 JVM)的情况下能够自动把增量内容部署到服务器上,使得修改立即生效。
热部署为了解决的问题有两个, 一是在开发的时候,修改代码后不需要重启服务器就能看到效果,大大提升开发效率;二是生产环境上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用。
热部署/热插拔/热替换(HotSwap)是在不重启服务器(包含 JVM) 的前提下,能自动侦测到 class 文件的变化,更新发布包中的 class 文件以及已经加载入内存中处于运行时的 class 的行为,所以热部署不仅要替换 class 文件,还要更新已经加载到 Java 虚拟机内存中的正在运行的 class。
以下截图指明了 On 'Update' action
配置的位置:
On ‘Update’ action:手动触发 Update 动作时需要 IDEA 做什么?
所谓手动触发 Update 动作是指你主动点击下图所示的按钮去更新 tomcat 应用程序。
但你点击这个更新按钮时会弹出如下所示的小窗口,你会发现你在 On 'Update' action
的下拉列表框中选择的是什么,那么这个小窗口就默认选中的是什么。
其实 On 'Update' action
这个设置是有点多余了,因为仅仅是设置手动触发 update 按钮时默认的行为是什么,你依旧需要手动去点击 update 按钮,再点击【确定】按钮,IDEA 才会去做什么,没有减少用户操作的步骤。
具体行为选项的含义:
选项 | 含义 |
---|---|
Update resources | 更新资源,意思就是你手动触发 Update 动作,IDEA 会更新 js/html/css/xml 等静态的资源文件,不过上文提到了,你依旧需要点击【确定】按钮,IDEA 才会执行 |
Update classes and resources | 更新字节码文件和资源文件,意思就是你手动触发 Update 动作,IDEA 会更新资源文件以及字节码文件。特别注意:java文件修改后,debug 模式下立即生效。run 模式下不立即生效,需要 redeployed 才可生效。 jsp文件修改后,在运行模式和调试模式下都是立即生效 |
Redeploy | 重新部署。不重启 tomcat,而是把原来项目文件删掉,然后重新发布 |
Restart server | 重启tomcat |
如果服务器存在以 war 方式部署的项目,则行为选项如下图所示:
当服务器存在以 war 形式部署的项目时,On Update action 与 On frame deactivation 中的选项没有 Update resources 和 Update classes and resources,取而代之的是 Hot Swap Classes 选项,意思
所谓 IDEA 失去焦点或者失活,是指你最小化 IDEA 窗口或者切换到其它应用程序了,例如你在编码的时候按 ⌘ + tab
切换到浏览器去查询东西的时候,当前 IDEA 程序就失去焦点了。
On frame deactivation 建议选择 Do nothing,因为暂时离开 IDEA 的情况非常频繁,如果每次离开都要重新 Build Project(即编译项目) 、更新发布包中的文件(不仅要更新发布包中的文件,还要更新已经加载进内存中 class,这些动作对于 tomcat 而言叫作 reload),计算机性能、IDEA 的使用体验会大打折扣。
On Update action 设置为 Update classes and resources,On frame deactivation 设置为 Do nothing。
通常的使用情况是:当更新完 Java 代码或 JSP 或静态资源文件后,手动点击下图所示的更新按钮,当出现下图所示的绿色背景的提示框,则更新完成,即热部署完成。
如果每次点击的时候不希望出现下图所示的弹框:
你可以把下图所示的复选框取消打勾:
新建 Java 文件不可以通过热部署方式完成自动部署更新,需要重新部署或重启服务器;但新建的静态资源文件可以采用热部署方式自动部署更新。
Run:启动 tomcat,快捷键 ⌃ + R
,在 tomcat 已经运行中时按快捷键 ⌃ + R
会弹出对话窗口,让你选择操作项目;而快捷键 ⌃ + ⇧ + R
则是快速重启 tomcat,没有对话弹窗
Rerun:重启 tomcat,也就是 Restart Server
Run comcat with Coverage:
Run tomcat with CPU Profiler:
Run tomcat with Allocation Profiler:
Run tomcat with Java Flight Recorder:
上面的配置信息保存在哪里?
其实 IntelliJ IDEA 会把每一份tomcat配置文件的信息保存在下面的目录下:
/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/
我的tomcat的配置文件保存在下面的目录:
/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084
如果有多份配置文件,则会在 /Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/
目录下随机生成多个目录,把配置信息保存到这些目录下。
[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf]$ ls
Catalina catalina.properties context.xml jaspic-providers.xsd server.xml tomcat-users.xml web.xml
catalina.policy catalina.properties.0 jaspic-providers.xml logging.properties server.xml.0 tomcat-users.xsd web.xml.0
我一直好奇下图所示的虚拟目录保存在哪里?
原来是在 …conf/Catalina/localhost 目录下创建同名的 xml 文件,以这样的方式部署项目。
[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/Catalina/localhost]$ ls
web_demo_03.xml
查看下 web_demo_03.xml:
[~/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/Catalina/localhost]$ cat web_demo_03.xml
<Context path="/web_demo_03" docBase="/Users/liaowenxiong/Documents/IdeaProjects/java-exercises/web-demo-03/target/web-demo-03-1.0-SNAPSHOT" />%
怎么找到这个目录的?
在 tomcat 控制台看 Catalina.log 日志内容,如下图所示:
如果是 windows 操作系统,如下图所示:
1.在类的源码文件中添加断点
2.以 debug 模式启动 tomcat
3.浏览器地址栏输入请求资源路径,访问 web 服务
4.查看调试详情
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。