Tomcat
本章资料
Tomcat
1.1 官方文档
官方文档: https://tomcat.apache.org/tomcat-8.0-doc/
Tomcat 8, Tomcat 9, Tomcat 10 选哪个版本都无所谓. 到后面学习springboot的时候, 自己会带一个tomcat, 直接是9的版本, 所以现在使用哪个版本都无所谓, 只要能够达到熟悉JavaWeb的目的, 就OK了. 这里选择8这个版本.
1.2 WEB开发介绍
1.WEB
, 在英语中web
表示网/网络资源(页面, 图片, css, js)
意思, 它用于表示WEB
服务器(主机)供浏览器访问的资源.
2.WEB
服务器(主机)上供外界访问的Web
资源分为
- 静态
web
资源(比如html
页面): 指web
页面中供人们浏览的数据始终是不变. - 动态
web
资源, 比如Servlet(java), PHP
等.
3.静态web
资源开发技术
Html, Css, Js
等
4.常用动态web
资源开发技术
Servlet, SpringMVC, SpringBoot, PHP, ASP.NET
等
1.3 JavaWeb开发技术栈图
1.4 BS和CS开发介绍
BS开发
1.B: browser(浏览器, 种类太多, ff, chrome, ie, edge)
2.S: Server(服务端, 考虑很多)
3.示意图
4.BS解读
(1) 兼容性: 因为浏览器的种类太多, 会发现你写的程序, 在某个浏览器会出现问题,其它浏览器上正常;
(2) 安全性, 通常情况下, BS安全性不如CS好控制;
(3) 易用性, BS好于CS, 浏览器电脑有
(4) 扩展性, BS相对统一, 只需要写Server
CS开发
1.C: Client(客户端)
2.S: Server(服务端)
3.客户端升级很麻烦,还得重新安装。但是浏览器就不同了,刷新一下即可
4.示意图
1.5 JavaWeb服务软件
JavaWeb服务器软件介绍
1.学习JavaWeb
开发, 需要先安装JavaWeb
服务软件(我们把安装了JavaWeb
服务软件的主机成为web
服务器/JavaWeb
服务器), 然后在web
服务器中开发相应的web
资源.
[JavaWeb
服务器, mysql
服务器]
2.提问: 学习JavaWeb
开发, 为什么必须要先安装WEB
服务软件?
答: 需要安装, 理解 Tomcat
本质就是一个 Java
程序, 但是这个 Java
程序可以处理来自浏览器的 HTTP
请求, 和我们前面学习过的 java
网络有关.
服务(多人聊天, Server
)
手写简单Web服务需求
1.需求: 手写MyWebServer.java
, 体验一下 JavaWeb
服务本质.
这里会用到Java基础(IO/网络).
http://localhost.9999
表示浏览器向localhost(127.0.0.1 表示本机)
的9999
端口发出请求
2.创建 Java
应用程序zzw_mytomcat
3.创建src/hello.html
hello, I am Web Server
4.创建src/MyTomcat.java
//这是我们自己写的一个web服务, 可以返回 hello.html
public class MyTomcat {
public static void main(String[] args) throws IOException {
//1.服务器在9999端口监听
ServerSocket serverSocket = new ServerSocket(9999);
//如果serverSocket没有关闭, 就等待连接, 一直监听
while (!serverSocket.isClosed()) {
System.out.println("web服务 在9999端口监听");
//2.等待客户端/浏览器地址栏的连接
Socket socket = serverSocket.accept();
//3.通过socket得到输出流
OutputStream outputStream = socket.getOutputStream();
//返回给浏览器/客户端
//读取hello.html文件返回即可->如何读取文件内容
//得到文件输入流(字符输入流)[从磁盘加载到内存]
BufferedReader bufferedReader =
new BufferedReader(new FileReader("src/hello.html"));
String line = "";
//循环读取hello.html
while ((line = bufferedReader.readLine()) != null) {
outputStream.write(line.getBytes());
}
//4.关闭流
outputStream.close();
socket.close();
}
serverSocket.close();
}
}
5.完成测试. 启动程序, 浏览器请求 http://locahost:9999/
常用JavaWeb服务软件
1.Tomcat: 由Apache
组织提供的一种Web
服务器, 提供对jsp
和 Servlet
的支持. 它是一种轻量级的 javaweb
容器(服务器), 也是当前应用最广的 JavaWeb
服务器(免费).
2.Jboss: 是一个遵从JaveEE
规范的, 它支持所有的 JavaEE
规范(免费).
3.GlassFish: 由 Oracle
公司开发的一款 JavaWeb
服务器, 是一款商业服务器, 达到产品及质量(引用很少).
4.Resin: 是 CAUCHO
公司的产品, 是一个非常流行的服务器, 对 servlet
和 JSP
提供了良好的支持, 性能也比较优良(收费).
5.WebLogic(很猛): 是 Oracle
公司的产品, 支持 JavaEE
规范, 而且不断地完善以适应新的开发要求, 适合大型项目(收费, 用的不多, 适合大公司).
1.6 Tomcat
Tomcat下载和安装
1.Tomcat 官方站点: https://tomcat.apache.org/
2.获取 Tomcat 安装程序包
- tar.gz是Linux操作系统下的安装版本
- zip文件是Windows系统下的压缩版本
3.使用 zip 包安装 Tomcat
- 找到你需要用的 Tomcat 版本对应的 zip 压缩包, 解压到需要安装的目录即可
- 这里解压在 D:\Program Files\apache-tomcat-8.5.82
4.https://tomcat.apache.org/whichversion.html, 可以看到 Tomcat 仍然是支持 jsp 和 el
5.补充一点: Tomcat 最好的小伙伴是 JSP+EL
Tomcat启动
1.双击 bin 目录下的 startup.bat 文件
2.浏览器地址栏输入http://localhost:8080, 默认8080端口, 显示如下界面代表安装成功
3.注意, 不要关闭黑窗口, 关闭了, tomcat服务就停止了
4.私房菜
1)在开发中, 我们可以看一下哪些端口在监听
2)netstat -anb(使用管理员权限)
3. 配置环境变量, 系统环境变量下新建CATALINA_HOME, 值为Tomcat目录,定位到bin的上级目录即可, 在Path下新增%CATALINA_HOME%\bin
Tomcat启动故障排除
1.双击 startup.bat 文件,出现一个小黑窗口就没了, 原因是没有配置JAVA_HOME环境变量. Tomcat 本质是一个 Java 程序, 所以会用 jdk, 会去根据 JAVA_HOME 使用指定 jdk.
2.JAVA_HOME 必须大写
3.JAVA_HOME 中必须有下划线
4.JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可. 不需要带上 bin 目录.
5.端口 8080 被占用 [查看端口 netstat -anb, 使用的非常多]
6.如果其它服务程序占用了 8080 端口, 可以关闭该服务, 或者修改Tomcat服务的默认端口 8080
7.配置 JAVA_HOME 环境变量
1.5 Tomcat目录说明
conf目录
- server.xml 用于配置tomcat的基本设置(启动端口, 关闭端口, 主机名)
- web.xml 用于指定tomcat运行时配置(比如servlet等…)
logs目录
- tomcat启动一次会产生五个日志文件
webapps目录
- 存放web应用, 也就是网站
在webapps下新建test目录
在test目录下新建html文件, 文件中用img标签引用backgroundImage.webp
地址栏访问: http://localhost:8080/test/hello.html即可
1.6 catalina启动tomcat
- 在bin目录下打开cmd
- 输入 catalina run
1.7 停止tomcat
- 点击Tomcat服务器窗口右上角的×号关闭,相当于意外终止, 这个关闭指令不会产生日志
- 运行Tomcat的bin目录下的shutdown.bat, 就可以停止Tomcat服务器(推荐)
1.8 Tomcat部署Web应用
JavaWeb程序应用工程目录结构
部署方式一
- 将web工程的目录拷贝到Tomcat的webapps目录下
- 浏览器输入http://ip[域名]:port/子目录…/web资源
部署方式二: 通过配置文件来部署
- 在Tomcat的conf目录/Catalina/localhost/下配置文件
test.xml文件名最好和path="/test"保持一致
访问http://ip[域名]:port/test/hello.html就相当于
访问D:\zzw目录下的hello.html
作用: 可以把一个Web应用,映射到指定的目录,用来解决磁盘空间分配的问题ROOT工程的访问
- 在浏览器地址栏输入 :http://ip[域名]:port, 不加Web工程名/应用名时,访问的是ROOT工程
- 在浏览器地址栏输入 :http://ip[域名]:port/工程名/, 不加资源名时, 默认访问index.jsp; 比如:http://localhost:8080/test
1.9 浏览器请求资源UML分析
修改hosts文件, 先复制一份到别处,修改之后再覆盖
2.0 修改Tomcat端口
Tomcat目录下的conf目录, 修改server.xml配置文件
- 默认端口8080, 端口号范围1~65535
- 修改端口号建议大于1024, 最好在10000以上
- 修改后,重启tomcat生效
http://localhost, 默认是访问80端口, 即http://localhost:80
2. IDEA开发JavaWeb工程
2.1 IDEA开发部署JavaWeb工程
需求/图解:
使用IDEA
开发 JavaWeb
工程 fishWeb
, 并将网页部署到fishWeb
工程.
2.2 热加载说明
解读
1.on 'Update' action:
表示当我们执行更新操作时, Tomcat
会进行重新部署
2.on frame deactivation:
表示IDEA
失去焦点时(比如最小化), 会更新类和资源, 导致 jsp / html
发生更新, 但是如果修改的是java
文件, 需要redeploy
重新部署才会生效
2.3 端口修改
1.这里修改端口只会影响到当前项目的tomcat
端口,而不会去修改server.xml
2.4 out目录是什么
1.当Tomcat启动时, 会生成out
目录, 该目录就是 原项目资源的映射, 我们浏览器访问的资源是out
目录
2.当我们从外部拷贝资源到项目(图片, 文件, js, css
等),如果出现404
不能访问错误, 解决方式 rebuild project
-> 重启Tomcat
. (rebuild project
和 重启Tomcat
, 其本质是把你写的原项目的资源同步到对应真正访问的那个目录下, 做的是一个同步的操作.)
2.5 JavaWeb工程目录结构
.idea:``IDEA
使用到的文件
out:
真正的访问的项目目录/工作目录
src:
java程序, servlet, 过滤器, 监听器, controller, service, dao
web:
直接目录, 放入 html, css, js, 图片, 文件, jsp
WEB-INF:
(1)不能直接访问, 只能请求转发
.
(2)这里有web.xml
, 给该web应用配置servlet
, 以及监听器
, 过滤器
(3)WEB-INF
下还可以放我们的库文件
, src
下的java文件要用到的一些库文件就可以放到这里
2.6 课后练习
1.手动在Tomcat
的webapps
目录下创建一个可供外界访问的Web
应用. person
项目(如图, 图片换成自己的)
2.修改tomcat/conf/server.xml
, 将Tomcat
服务器端口更改为9998
, 测试使用.
3.使用IDEA
完成如下功能.
1)创建JavaWeb
工程[myWeb01]
2)配置好Tomcat
[Tomcat
配置名为myWeb01_Tomcat8
, 端口8080
]
3)将前面你创建好的web
应用/文件夹person
, 部署到Tomcat
4)从IDEA
启动Tomcat
, 能正常访问Web
应用
4.画图说明浏览器是如何访问到Tomcat
服务器下的某个JavaWeb
应用下的资源的, 比如url: http://www.zzwnews.com/news/index.html