Appearance
Tomcat
课程介绍
案例目标
- 使用 Tomcat 和 Servlet 技术,制作一个支持外部访问的服务
概念介绍
软件架构
架构概述
软件架构是一系列相关的抽象模式。软件架构是一个系统的草图。
模式概述
通用问题的通用解决方案
CS架构
Client-Server 架构模式
客户端-服务器架构模式
通过特定的软件访问网络资源
BS架构
Browser-Server 架构模式
浏览器-服务器架构模式
通过浏览器去访问网络资源
CS与BS的特点&对比
CS架构 | BS架构 | |
---|---|---|
系统维护升级 | 需要更新客户端 | 不需要更新 |
软件安装 | 需要安装 | 不需要安装 |
开发工作 | 客户端&服务端 | 服务端 |
多平台支持 | 需要多平台支持 | 不需要 |
小结
- BS - Browser/Server - 浏览器-服务器架构模式
- CS - Client/Server - 客户端-服务器架构模式
Web资源
资源概述
通过浏览器从网络中访问到的网络资源
静态资源
指 Web 页面中可供浏览的数据始终不变。常见的静态资源所使用的技术有 HTML、CSS、JS、图片、多媒体
动态资源
指 Web 页面中可供浏览的数据是由程序产生的,不同时间、不同地点甚至是不同用户所访问的 Web 页面是不同的。常见的动态资源所使用的技术有 ASP、PHP、Python、Servlet、JSP。
静态资源与动态资源的特点 & 对比
静态资源
动态资源
静态资源 | 动态资源 | |
---|---|---|
不同时间、不同地点、不同用户 | 一样的 | 不一样的 |
业务处理能力 | 没有 | 有 |
服务器
服务器概述
可以提供服务的一台机器
服务器硬件
tex
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
为了提供网络服务,在某些场景需要比PC机更强劲的计算机硬件系统。
服务器软件
tex
服务器软件本质上是一个应用程序(有代码编写而成),运行在服务器设备上。能够接收请求并根据请求给客户端响应数据,发布资源(静态和动态)。
容器软件
应用服务器
Web服务器
Web容器
小结
软件架构
- BS - Browser/Server - 浏览器/服务器架构模式
- CS - Client/Server - 客户端/服务器架构模式
web 资源
- 静态资源
- 动态资源
- 是否具备业务处理能力
- 不同时间、地点、用户,访问的不一样
服务器
- 硬件
- 软件
- 应用服务器
- Web 容器
- web 服务器
- 容器软件
常见的应用服务器【了解】
产品 | 公司 | 规模 | 营利模式 | Java EE 规范支持程度 |
---|---|---|---|---|
WebLogic | Oracle | 大型 | 商用 | 全部 |
WebSphere | IBM | 大型 | 商用 | 全部 |
GlassFish | Oracle | 中型 | 开源免费 | 全部 |
JBoss | JBoss | 中小型 | 开源免费 | 大部分 |
Resin | CAUCHO | 中小型 | 开源免费 | JSP & Servlet |
Jetty | Eclipse联盟 | 小型 | 开源免费 | JSP & Servlet |
Tomcat | Apache基金会 | 中小型 | 开源免费 | JSP & Servlet |
使用Tomcat的理由
- JSP & Servlet 以外的规范,使用频率不高。如果有,可以使用框架或者中间件来替代
- 微服务趋势
- 免费
- 大厂商对 Apache 基金会的支持
- 市场份额高,暴露问题及时,不大可能出现致命问题
小结
软件架构
- CS - Client/Server 架构模式 - 客户端/服务器架构模式
- BS - Browser/Server 架构模式 - 浏览器/服务器架构模式
Web 资源
- 静态资源
- 动态资源
- 区分动态资源的标志:是否具备业务处理能力
服务器
服务器硬件
服务器软件
Web容器
应用服务器
Web服务器
容器软件
应用服务器
【扩展】Java EE规范
JDBC
【注意】参考《JavaEE-Spec.md》
【扩展】剖析应用服务器原理
回顾
多线程
IO流
网络编程
分析
静态资源
动态资源
Tomcat的下载、安装和启动
Tomcat下载
Tomcat启动、关闭
bin/startup.bat
tex启动Tomcat
bin/shutdown.bat
tex关闭Tomcat
Tomcat启动常见问题
启动乱码
conf/logging.properties,把所有的 UTF-8,改成 GBK
JAVA_HOME 配置错误
如果没有配置 JAVA_HOME 环境变量,在双击“startup.bat”文件运行 tomcat 时,将一闪立即关闭。
解决方式:需要正确配置 JAVA_HOME 环境变量,指向 JDK 的 bin 目录的上一级目录;
端口号冲突
一台拥有 ip 地址的主机上可以提供多个服务(启动多个软件),每一个服务都有一个唯一的端口号。所以端口号不能重复。
【端口号冲突报错信息】
tex
严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
java.net.BindException: Address already in use: JVM_Bind <null>:8080
...
Caused by: java.net.BindException: Address already in use: JVM_Bind
...
控制台将出现大量异常信息,描述的是8080端口被占用。
【解决方案】
修改 tomcat 端口
通过修改 tomcat 目录下 conf/server.xml 配置文件修改端口号。将 8080 修改成其他端口号。
xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
小结
Tomcat 乱码
- conf/logging.properties
JAVA_HOME 配置错误
Neither the JAVA_HOME nor the JRE_HOME environment defined ...
- 把JAVA_HOME环境变量配置正确
端口号冲突
- 杀进程
- conf/Server.xml
Tomcat目录介绍【了解】
bin
tex脚本目录(启动和停止: startup.bat, shutdown.bat)
conf
tex配置目录(server.xml, web.xml)
conf/server.xml
tex通过Tomcat发布的项目,Web项目的配置文件
conf/web.xml
tex关于Tomcat的配置文件
conf/Catalina/localhost
tex用于动态发布Web项目
lib
tex依赖的jar包
logs
tex日志文件存放位置
temp
tex临时文件
【重点】webapps
tex用于存放web项目目录
- webapps/ROOT
work
texTomcat处理jsp页面工作目录
小结
bin
启动和关闭的脚本在里面
conf
配置
webapps
发布项目(其中的一种)
Tomcat项目的部署方式
webapps【重点】
目录发布
tex将项目文件夹放到webapps目录下边
【常用】war 发布
tex文件夹,打包(在文件夹内部打包),格式选择zip。压缩结束之后,将zip改成.war。 将war文件,放到webapps目录下边
虚拟路径发布【了解】
conf/server.xml
path: 浏览器访问时locahost:8080后边的地址是什么
docBase: 告诉Tomcat,这个项目在哪里
xml
<Host>
<!-- ...... -->
<Context path="/path" docBase="folder"/>
<!-- ...... -->
</Host>
tex
缺点:需要重启Tomcat
conf/Catalina/localhost
在此目录下创建一个xml文件,xml名字即为项目访问地址
xml
<Context docBase="folder" />
小结
webapps
- 不压缩
- 将项目文件夹粘贴到 Tomcat 的 webapps 目录当中
- 压缩
- 进入到项目文件夹当中,不要选项目文件夹,而是在项目文件夹当中,选中所有的资源
- 压缩格式选择 zip
- 将 zip 改成 war
- 将 war 包,粘贴到 Tomcat 的 webapps 目录当中
- 不压缩
虚拟路径
- 需要重启 Tomcat
- conf/server.xml,在 Host 标签当中,新建一个子标签
Context
Context
有两个标签属性:- path: 项目映射路径,浏览器访问时,ip+端口之后的名字,比如 localhost:8080/welcome,那么 welcome 就是项目映射路径
- docBase: 项目在磁盘当中的物理路径,即浏览器访问时,Tomcat 需要找到这个项目,这个项目在磁盘当中的什么位置
- conf/server.xml,在 Host 标签当中,新建一个子标签
- 不需要重启 Tomcat
- conf/Catalina/localhost
- 新建一个 xml 文件,xml 文件的内容是 Context 标签
- Context 标签当中的两个标签属性,其中的 path,可以不写
- 如果不写的话,项目路径根据 xml 的文件名来指定
- docBase 标签属性的意图与
<需要重启Tomcat>
一节当中的意图是一致的
- 需要重启 Tomcat
IDEA集成Tomcat【重点】
手动配置的缺点
- 缺点 1: Idea 与 Tomcat 切换
- 缺点 2: 只 1 个项目
- 缺点 3: 调试程序、重新发布、重启 Tomcat 会造成其他的项目不可用
IDEA全局配置
只需配置1次即可
小结
- webapps
- 虚拟路径
Web项目结构介绍
src
tex存放java代码
web
tex存储Web资源(html, css, js, jsp)
web/WEB-INF
tex受保护目录,浏览器不能直接访问到。存放web.xml, class文件, jar包
小结
通过 Idea 配置的 Web 工程
src
放Java源代码
web
放jsp、html、css、js
web/WEB-INF
受保护目录
web/WEB-INF/web.xml
项目核心配置文件
资源路径地址配置
小结
项目发布:让 Tomcat 运行我们的项目
发布方式
- webapps
- 文件夹
- 压缩包
- 虚拟路径
- 需要重启Tomcat
- server.xml
- 不需要重启 Tomcat
- conf/Catalina/localhost,新建xml文件,
- 需要重启Tomcat
- Idea集成Tomcat
Web 项目目录结构
- src
- java 程序
- web
- 静态资源&jsp
- web/WEB-INF
- 受保护目录
- web/WEB-INF/web.xml
- 项目的核心配置文件
- src
学习目标总结
- 能够运用 Tomcat 服务器部署 WEB 项目