文章目录
7.1 官方文档
7.1.1 地址: https://tomcat.apache.org/tomcat-8.0-doc/.
7.2 WEB 开发介绍
-
WEB,在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器(主机)供浏览器访问的资源
-
WEB 服务器(主机)上供外界访问的 Web 资源分为:
① 静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变
② 动态 web 资源,比如 Servlet(java),PHP 等 -
静态 web 资源开发技术:
① Html
② CSS
③ js
④ … -
常用动态 web 资源开发技术:
① Servlet
② SpringBoot
③ SpringMVC
④ PHP
⑤ ASP.NET
⑥ …
7.3 JavaWeb 开发技术栈图(一图胜千言)
7.4 BS 与 CS 开发介绍
7.4.1 BS 开发
- B: browser(浏览器, 种类太多 ff, chrome, ie, edge)
- S: Server(服务端,要考虑很多)
- 示意图
-
对 BS 的解读:
① 兼容性 ,因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常
② 安全性,通常情况下,BS 安全性不如 CS 好控制
③ 易用性,BS 好于 CS,浏览器电脑自带就有
④ 扩展性,BS 相对统一,只需要写 Server
7.4.2 CS 开发
- C:Client(客户端)
- S:Server(服务端)
- 示意图:
7.5 JavaWeb 服务软件
7.5.1 JavaWeb 服务器软件介绍
-
学习 JavaWeb 开发,需要先安装 JavaWeb 服务软件
-
我们把安装了 JavaWeb 服务软件的主机称为 Web 服务器/JavaWeb 服务器
-
然后在 web 服务器中开发相应的 web 资源
-
提问:学习 JavaWeb 开发,为什么必须要先装 WEB 服务软件?
答:Tomcat 本质就是一个 Java 程序, 但是这个 Java 程序可以处理来自浏览器的 HTTP 请求
7.5.2 手写简单 Web 服务程序
-
需求: 手写 MyWebServer.java ,体验一下 JavaWeb 服务本质
提示:http://localhost:9999 表示 浏览器向localhost(127.0.0.1)表示本机的 9999 端口发出请求
- 创建 tomcat 的 Java 应用程序.(如图)
- 在 src 目录下创建 hello.html
- 在 src 目录下创建 myTomcat.java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @Author: 谢家升
* @Date: 2022/2/16-02-16-10:45
* @Version: 1.0
* 这是我们自己写的一个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 socket = serverSocket.accept();
//3.通过socket得到输出流
OutputStream outputStream = socket.getOutputStream();
//4.读取hello.html文件的内容,返回即可
//先得到和hello.html文件相关联的文件输入流
BufferedReader bufferedReader = new BufferedReader(new FileReader("src/hello.html"));
String buf = "";
while ((buf = bufferedReader.readLine()) != null) {
outputStream.write(buf.getBytes());
}
//outputStream.write("hello, i am myTomcat".getBytes());
//4.关闭流
outputStream.close();
socket.close();
}
serverSocket.close();
}
}
- 完成测试:浏览器访问 http://localhost:9999/
7.5.3 常用 JavaWeb 服务软件
- Tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器 (服务器),也是当前应用最广的 JavaWeb 服务器 (免费)
- Jboss:是一个遵从 JavaEE 规范的、它支持所有的 JavaEE 规范(免费)。
- GlassFish: 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款商业服务器,达到产品级质量 (应用很少
- Resin:是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持, 性能也比较优良 (收费)
- WebLogic【很猛】:是 Oracle 公司的产品,支持 JavaEE 规范, 而且不断的完善以适应新的开发要求,适合大型项目 (收费,用的不多,适合大公司)
7.6 Tomcat
7.6.1 Tomcat 下载和安装
-
Tomcat 官方站点:http://tomcat.apache.org/
-
获取 Tomcat 安装程序包
① tar.gz文件是Linux操作系统下的安装版本
② zip文件是Windows系统下的压缩版本 -
使用 zip 包安装 Tomcat ,找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可
-
which version https://tomcat.apache.org/whichversion.html ,可以看到 Tomcat仍然是支持 jsp 和 el
- Tomcat 最好的小伙伴是 JSP+EL
7.6.2 Tomcat 启动
- 双击 bin 目录下的 startup.bat 文件
- 输入 http://localhost:8080/,显示如下界面代表安装成功,默认在 8080 端口
- 注意,不要关闭黑窗口,关闭了,tomcat 服务就停止了
-
在开发中,我们可以看一下哪些端口在监听
=>
netstat -anb
(使用管理员权限)
7.6.3 Tomcat 启动故障排除
- 双击 startup.bat 文件,出现一个小黑窗口然后就没了,原因是因为没有配置好JAVA_HOME 环境变量。Tomcat 本质是一个 Java 程序,所以要 jdk,会去根据 JAVA_HOME 使用指定 jdk
- JAVA_HOME 必须全大写
- JAVA_HOME 中间必须是下划线
- JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录
- 端口 8080 被占用 [查看端口 netstat -anb ,使用的非常多]
- 如果其它服务程序占用了 8080 端口,可以关闭该服务,或者修改 Tomcat 服务的默认端口 8080
7.6.4 Tomcat 目录结构
解读:
- server.xml 用于配置 tomcat 的基本设置(启动端口,关闭端口,主机名)
- web.xml 用于指定 tomcat 运行时配置(比如 servlet 等…)
- webapps 目录是存放 web 应用,就是网站
7.6.5 catalina 启动 Tomcat
- 进入到 Tomcat 的 bin 目录下
- 执行命令: catalina run
7.6.6 停止 Tomcat
- 点击 tomcat 服务器窗口,直接点击的关闭按钮
- 进入 Tomcat 的 bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat 服务器(推荐)
7.6.7 修改 Tomcat 服务端口
- Tomcat 目录下的 conf 目录,修改 server.xml 配置文件
- 说明:http://localhost ,默 认 是 访 问 80 端 口
- http://localhost 等价 => http://localhost:80
7.6.8 Tomcat 服务中部署 WEB 应用
-
什么是Web应用?
①. WEB应用是多个web资源的集合。简单的说,可以把web应用理解为硬盘上的一个目录,这个目录用于管理多个web资源
②. Web应用通常也称之为web应用程序,或web工程,通俗的说 就是网站 -
Web应用组成有哪些?
①. 一个 WEB 应用由多个 WEB 资源或其它文件组成,包括 html 文件、css 文件、js 文件、动态 web 页面、java 程序、支持 jar 包、配置文件等
②. 开发人员在开发 web 应用时,按照规定目录结构存放这些文件
③. 否则,在把 web 应用交给 web 服务器管理时,不仅可能会使 web 应用无法访问,还会导致 web 服务器启动报错 -
JavaWeb程序/应用/工程目录结构
- 部署方式1:将 web 工程的目录拷贝到 Tomcat 的 webapps 目录下
- test Web工程(目前都是静态资源 html,图片)
- 将该test目录/文件夹 拷贝到 Tomcat 的webapps目录下
- 浏览器输入: http://ip[域名]:port/test/子目录…/文件名
- 部署方式2:通过配置文件来部署(只做介绍)
- 在Tomcat 下的 conf 目录\Catalina\localhost\ 下,配置文件,比如xjs.xml
- 提醒:知道Tomcat通过配置,可以把一个web应用,映射到指定的目录,可以解决磁盘空间分配的问题
- ROOT 的工程的访问
- 在浏览器地址栏中输入访问地址如下: http://ip[域名]:port, 没有Web工程/应用名时,默认访问的是 ROOT 工程
- 在浏览器地址栏中输入的访问地址如下: http://ip[域名]:port/工程名/ ,没有资源名,默认访问 index.jsp 页面
7.6.9 浏览器访问 Web 服务过程详解
7.6.9.1 回顾前面的 JavaWeb 开发技术栈图
7.6.9.2 浏览器访问 web 服务器文件 UML 时序图!!
- 对浏览器访问 web 服务器资源 (html,css,图片,js) 做详解,通过一个时序图加强对这个重要过程的理解【重要,核心】
7.7 IDEA 开发 JavaWeb 工程
7.7.1 开发 javaweb 工程 & 配置 TomCat &启动项目
- 参考开发文档
7.7.2 注意事项和细节
- 热加载选项说明
- on update action:表示当我们更新操作是,Tomcat 会自动更新类和资源 (当jsp/html文件修改时,可以生效,但是如果你修改的 java 文件,需要 Redepoly 才会生效)
- on frame deactivation : 表示 IDEA 失去焦点(比如最小化),也会导致 jsp/html 发生更新,但是 java 修改了,还是需要 redeploy
- 端口修改
- 这里修改的端口, 只会影响到当前的项目,而不是去修改 server.xml
-
out 目录是什么?
答:当 tomcat 启动时,会生成 out 目录,该目录就是 原项目资源的映射,我们浏览器访问的资源是 out 目录
-
当我们从外部拷贝资源到项目(图片, 文件, js , css 等),如果出现 404 不能访问错误,解决方式 rebulid project -> 重启 Tomcat