Tomcat 服务器软件的使用 (配置文件, 部署项目 );
基本的 web 知识回顾:
1. web 服务器 软件: Tomcat (常见的, 主流的, 开源的, 免费的,软件)
1. 软件 架构
1. C/S : 客户端 / 服务器端
2. B/S : 浏览器 / 服务端 (通过 服务器的 域名 就可以 访问到 不同的 服务器的 程序) (JAVAEE)
* 客户端 就是 浏览器, 也就是说 客户端 0 维护, 开发起来 更快速一些.
* 我们 以后 是 基于 B/S 架构 来开发 后期 的 软件的.
2. 资源分类
1. 静态资源: 所有用户 访问后, 得到的 结果 都是 一样的, 称为 静态 资源, 静态 资源可以 直接被 浏览器解析.
* 如: html, css, JavaScript
2. 动态资源: 每个 用户 访问 相同资源后 得到的 结果 可能不一样. 称为 动态 资源. 动态 资源 被 访问后 需要先 转换为 静态资源, 然后 在 返回给 浏览器.
* 如: servlet / jsp , php, asp...(一些 动态的 网页 开发技术.)
3. 网络通信三要素
1. IP : 电子 设备(计算机) 在 网络中的 唯一标识. (可以 通过 IP 地址 去找到 这个 电子设备)
2. 端口 : 应用程序 在 计算机中的 唯一标识. 0 ~ 65536 , (一般 我们 自己的 应用程序 取得 端口 不要 在 1024 之内, 因为 这些 端口 很有可能 被 操作系统 占用了.)
3. 传输 协议: 规定了 数据传输 的规则. (例如: 聊天, 规定了我们 都要说 中文 才能听得懂, 说英文 就听不懂. ) (客户端 和 服务端 要遵循 相同的 传输协议, 才能 进行 数据的 传输, 不然 , 很有可能 客户端 发的数据 , 服务端 解析不了, 那也就 返回不了 相应的 数据.)
1. 基础协议:
1. tcp: 安全协议, 三次握手(确认 双方 都在线). 速度稍慢
2. udp: 不安全 的(广播) 协议(有可能 会丢失 数据). 速度快.
*** 通过 IP 找到了 计算机, 通过 端口 找到了 应用程序, 遵循相同的 协议 传输 和 返回 数据资源.
#web 服务器软件:
* 服务器: 就是 安装了 服务器软件的 计算机. (例如 : Mysql 服务器 软件: 通过 用户名和 密码 让别人 登陆(请求), 我的 mysql 数据库. )
* 服务器 软件: 接收 用户的请求, 处理请求, 做出 响应.
* web 服务器软件: 接受用户的 请求, 处理请求, 做出响应. (用户 通过 浏览器 发出请求.)
* 在 web 服务器软件中, 可以 部署 web 项目, 让用户通过 浏览器 来 访问这些 项目. (这时 作为 一个 开发者, 作为 一个资源 提供者, 让别人 可以 通过 web 服务器软件 访问 我 写 的 项目 ).
* web 容器(动态 资源 只有在 这种 服务器 软件中 才能 运行.)
* 常见的 Java 相关的 web 服务器 软件:
* webLogic : Oracle 公司. 大型的 JavaEE 服务器, 支持 所有的 JavaEE 规范, 收费的.
* webSphere : IBM 公司, 大型的 JavaEE 服务器, 支持所有的 JavaEE 规范, 收费的.
* JBoss: JBoss 公司的, 大型的 JavaEE 服务器, 支持所有的 JavaEE 规范, 收费的.
* Tomcat: Apache 基金组织, 这个 组织 做出来的 所有的 软件, 所有的 产品 都是 开源的 , 都是 免费的. 这个 组织 为 整个 软件的 发展 做出了 很大的 贡献.
这是一个 中小型的 JavaEE 服务器, 仅仅支持 少量的 JavaEE 规范(servelet / jsp 规范 是 支持的. ) , 开源的 , 免费的.
* 服务器 软件: 接收 用户的请求, 处理请求, 做出 响应.
* Tomcat: web 服务器软件:
1. 下载 : http:// tomcat.apache.org/
2. 安装 : 解压压缩包即可. (解压的 位置路径 尽量不要有 中文 和 空格.)
* 注意: 安装的 目录 建议不要有中文 和 空格.
3. 卸载 : 删除这个目录 就行了.
4. 启动 :
* bin / startup.bat, 双击 运行 该文件 即可.
* 访问: 在 浏览器输入: http:// localhost:8080 回车 访问. (访问自己 Tomcat)
* http:// 别人的 IP :8080 . ( 访问别人的 Tomcat).
* 可能 遇到的 问题:
1. 黑窗口 一闪而过:
* 原因: 没有正确 配置 JAVA_HOME 环境变量.
* 解决方案: 正确 配置 JAVA_HOME 环境变量 即可.
// *** echo Using JAVA_HOME: "%JAVA_HOME%"
startup.bat: 是一个 批处理文件, 批处理 文件 写的其实 就是(Windows) DOS 的命令.
catalina.bat 中 要使用 "%JAVA_HOME%" , 也就是 使用 我们电脑上 配置的 环境变量 JAVA_HOME , 如果 配置的 不是 JAVA_HOME , 它就 找不到 对应的 JDK 来执行 这个 应用程序(Tomcat), 因为 Tomcat 这个应用程序 是 用 纯 Java 编写的, 运行的 时候需要 依赖 我们安装的 JDK .
2. 启动 报错:
启动一个 之后, 不关, 启动第二个, 报错.
Caused by: java.net.BindException: Address already in use: bind : 端口号 已被 使用.
1. 暴力: 找到 占用的 端口号, 并且 找到对应的 进程, 杀死 该 进程.
* win + r , cmd , netstat -ano
* 找到 端口号 对应的 PID ,然后 记住这个 PID. (PID 称为 进程 ID).
1.2 * win + r, cmd , taskmgr : 打开 任务管理器.
(查看, 查看列, 将 PID 勾选上); 点击 详细信息, 找到 对应的 PID 数字 对应的 进程, 结束该 进程.
2. 温柔: 修改 自身的 端口号.
* conf / server.xml
// *** 这里 是 默认端口号 .
* 修改:
// *** 这里 较 上面 是将 path 删除了.
connectionTimeout="20000"
redirectPort="8443" /> 中的 端口号.
// 改完之后 要重启 Tomcat, 这个 修改 之后的 端口号 才会 生效.
* 一般 会将 Tomcat 的 默认端口号 修改为 80. 80 端口号 是 http 协议的 默认端口号.
* 好处: 在 访问时 就 不用输入 端口号. (别人在 访问的 时候不用 输入端口号... )
现在 市面上 基本上 所有的 网站的 默认 端口号 都是 80. (例如; http://www.itcast.cn/ 和 http://www.itcast.cn:80 是一样的, 也可以访问到... ).
5. 关闭:
// *** 例如: 按 计算机的 关机按钮, 计算机 会 帮你保存 没 保存的 数据, 结束进程, 等一系列 操作. 强制 关闭 就例如 突然 停电了, 进程 也没关, 数据也没保存. 所以 推荐 正常关闭.
1. 正常 关闭:
* 运行 bin / shutdown.bat 批处理程序, 正常 关闭 Tomcat.
* ctrl + c 正常关闭. (会出现 一些 信息 然后 关掉(自动的哈))
2. 强制 关闭:
* 点击 启动窗口的 X .
*** 后期 都是 通过 IDEA 开发工具 来 启动 和 关闭 Tomcat.
6. 配置 :
* 部署 项目的 方式:
1. 直接 将 项目 放到 webapps 目录下 即可.
* / hello : 项目的 访问路径 -----> 虚拟目录.
* hello.html: 资源名称.
* 简化部署: 将项目 打成一个 war (可以先打成 zip 的 压缩包 然后 修改 扩展名 .war(因为 zip 的 打包方式 和 war 包 很像, 所以可以这么用, 但是 专业弄的话 还是 用 专业的 打成 war 包的工具, 以免 数据 丢失和 数据错误. ))包, 再将 war 包 放置到 webapps 目录下.
* war 包 会自动地 解压缩. (自动 解压, 自动删除).
// *** 以上 所讲的 第一种方式 都需要将 文件 从 其他的 盘符 拷到 webapps 的 目录下, 有没有办法 可以不用移动文件, 不用 拷贝文件. 就放在 原来的 位置?
2.
配置 conf / server.xml 文件.
在 标签体中 配置 :
* docBase= "E:\Mycode\hello : 项目存放的 路径.
* path= "/hehe" : 你这个项目的 访问路径, 虚拟的 路径(虚拟目录).
http://10.254.1.219:8080/hehe/hello.html : 这样 访问 就OK.
优点: 比较灵活 , 不需要 在 拷贝文件.
缺点: server.xml 是 tomcat 的 核心配置文件, 你在 里面 配置了 一个 项目, 你在个 项目 就是 server.xml的 一部分, 部署 很多个 项目, 就要 配置很多, 这就有可能 把 tomcat的 核心 配置文件 给 弄坏了. (不安全, 一般 不会 这样去配置. )
3. 在 conf / Catalina / localhost / 创建 一个 任意名称的 xml 文件. 在文件中 编写:
xml 文件内容:
* 这样 配置 , 虚拟目录 的名称 就是 xml 文件的 名称. (最推荐 这样部署)
优点: 是一种 热部署的 方式. 如果 不想要 这个项目了, 修改 项目的 名称 或者 扩展名 _bak , 也不用 重启 tomcat 服务器, 就访问 不到了. 在 server.xml 中 修改 要 重启 服务器 才能 生效.
补充: .bat : 批处理文件, 双击 就可以运行. .sh 在 Linux 下 是可以 执行的, 在 Windows 中 是不可以 执行的. _bak : 表示 这是 一个 临时文件.
startup.bat: 是一个 批处理文件, 批处理 文件 写的其实 就是(Windows) DOS 的命令.
catalina.bat
本机的 IP 地址可能会 改动, 注意查看.
* 部署的 项目的 两种形式: 静态 项目 和 动态 项目.
* 目录结构 (区别)
* Java 动态项目的 目录结构 :
-- 项目的 根目录
-- WEB-INF 目录:
-- web.xml : web 项目的 核心配置 文件.
-- classes 目录: 放置 字节码 文件的 目录.
-- lib 目录: 放置 依赖的 jar 包.
有 WEB-INF 的 目录的 项目 我们 称为 动态的 项目 .
* 将 Tomcat 集成到 IDEA 中, 并且 创建 JavaEE 的 项目, 部署 项目. (重要).
现在都是在 本地 Tomcat 文件夹中 启动 Tomcat , 比较 麻烦, 以后 集成到 IDEA 中, 就可以在 IDEA 中 启动 Tomcat 服务, 来 关闭 , 发布项目. 较为 方便.
Local : 本地.
Remote: 远程的.
一般 Tomcat 的 启动 都伴随 着 web 项目的 启动, 也就是说, Tomcat 中 要部署 一个 web 项目 再 启动, 这样 才有意义.
new Module
创建一个 Java Enterprise : Java 企业版.
Java EE 7
web Application(3.1)
Create web.xml
Deployment: 部署的 项目.
Application context : / 虚拟的 目录, / 表示 根目录. http://localhost:8080/index.jsp
在 web.xml 配置文件中 默认 配置的 index.jsp 是 默认的 首页.
web / 新建 html 文件.
run / add configurations / Update resources Update resources: 当 更新了 这个 资源 和 类的 时候, 让它 重新 部署 这个 项目. 例如: 新增 一个 html 网页, 如果 不改这个 我们 要重新 启动 Tomcat 服务器, 改了 这个 就不需要了, 它会 自动的 重新 部署 项目.
Update classes and resources: 这个 是 改了 Java 代码 就重新部署, Java 代码 我们 一般改动的 次数较多, 所以 建议 不选这个, 经常 重新部署, 影响 性能. (这就是 热部署. )
新的 网页 项目 部署在 web 目录下, 不是 WEB-INF(放的是 web.xml) , 不要 弄错了, 否则 访问 不了.
这样就可以将 你的 项目 , 比如 网页 放到 这个 web 目录下, 然后 你这边 只要将 Tomcat 启动了, 别人 就能够在 浏览器中, 输入正确的 路径来访问 你的 网页资源.