Web概述
1. JavaWeb技术栈
B/S架构
B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。
静态资源
- 静态资源主要包含HTML、CSS、JavaScript、图片等,主要负责页面的展示。由于做出来的这些内容都是静态的,这就会导致所有的人看到的内容将是一模一样。
动态资源
- 动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。
- 动态资源处理完逻辑后会把得到的结果交给静态资源来进行展示,动态资源和静态资源要结合一起使用。
Web的访问过程就如下图所示:
(1)浏览器发送一个请求到服务端,去请求所需要的相关资源;
(2)资源分为动态资源和静态资源,动态资源可以是使用Java代码按照Servlet和JSP的规范编写的内容;
(3)在Java代码可以进行业务处理也可以从数据库中读取数据;
(4)拿到数据后,把数据交给HTML页面进行展示,再结合CSS和JavaScript使展示效果更好;
(5)服务端将静态资源响应给浏览器;
(6)浏览器将这些资源进行解析;
(7)解析后将效果展示在浏览器,用户就可以看到最终的结果。
Web服务器
- Web服务器:负责解析 HTTP 协议,解析请求数据,并发送响应数据
- 浏览器按照HTTP协议发送请求和数据,后台就需要一个Web服务器软件来根据HTTP协议解析请求和数据,然后把处理结果再按照HTTP协议发送给浏览器
- Web服务器软件有很多,我们课程中将学习的是目前最为常用的Tomcat服务器
2. HTTP
2.1 HTTP概念
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
- HTTP协议规定了请求和响应数据的格式。
- 浏览器,点击
F12
打开开发者工具,点击Network
来查看某一次请求的请求数据和响应数据具体的格式内容
2.2 请求数据格式
请求数据总共分为三部分内容,分别是==请求行==、==请求头==、==请求体==
-
请求行: HTTP请求中的第一行数据,请求行包含三块内容
GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]
请求方式有七种,最常用的是GET和POST
-
请求头: 第二行开始,格式为key: value形式
-
请求体: POST请求的最后一部分,存储请求参数
GET和POST请求的区别:
- GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
- GET请求请求参数大小有限制,POST没有
2.3 响应数据格式
- 响应数据中包含三部分内容,分别是响应行、响应头和响应体
- 掌握200,404,500这三个响应状态码所代表含义,分布是成功、所访问资源不存在和服务的错误
3. Tomcat
Tomcat是一个开源免费的轻量级Web服务器,支持Servlet/JSP/少量JavaEE规范,也被称为Web容器、Servlet容器。Servlet需要依赖Tomcat才能运行。
3.1 什么是Web服务器
Web服务器是安装在服务端的一个应用程序(软件),主要作用:
- 封装HTTP协议操作,简化开发
- 可以将Web项目部署到服务器中,对外提供网上浏览服务
Web服务器软件使用步骤
- 准备静态资源
- 下载安装Web服务器软件
- 将静态资源部署到Web服务器上
- 启动Web服务器使用浏览器访问对应的资源
3.2 Web项目结构
- Maven Web项目结构: 开发中的项目
- 开发完成部署的Web项目
4. Servlet
- Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。
- 使用Servlet可以实现根据不同的登录用户在页面上动态显示不同内容。
- Servlet是JavaEE规范之一,其实就是一个接口,通过定义Servlet类实现Servlet接口,并由web服务器运行Servlet
4.1 Servlet执行流程
-
浏览器发出
http://localhost:8080/web-demo/demo1
请求,从请求中可以解析出三部分内容,分别是localhost:8080
、web-demo
、demo1
- 根据
localhost:8080
可以找到要访问的Tomcat Web服务器 - 根据
web-demo
可以找到部署在Tomcat服务器上的web-demo项目 - 根据
demo1
可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配
- 根据
-
找到ServletDemo1这个类后,Tomcat Web服务器就会为ServletDemo1这个类创建一个对象,然后调用对象中的service方法
- ServletDemo1实现了Servlet接口,所以类中必然会重写service方法供Tomcat Web服务器进行调用
- service方法中有ServletRequest和ServletResponse两个参数,ServletRequest封装的是请求数据,ServletResponse封装的是响应数据,后期我们可以通过这两个参数实现前后端的数据交互。
4.2 生命周期
-
生命周期: 对象的生命周期指一个对象从被创建到被销毁的整个过程。
-
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
- 加载和实例化:默认情况下,当Servlet第一次被访问时由容器创建Servlet对象,可以使用
@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
的loadOnStartup
修改成在服务器启动的时候创建。 - 初始化:在Servlet实例化之后,容器将调用Servlet的
init()方法
初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次 - 请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的
service()方法
对请求进行处理 - 服务终止:当需要释放内存或者容器关闭时,容器会调用Servlet实例的
destroy()方法
完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收.
- 加载和实例化:默认情况下,当Servlet第一次被访问时由容器创建Servlet对象,可以使用
4.3 方法介绍
4.4 体系结构
开发B/S架构的web项目,都是针对HTTP协议,所以我们通过继承HttpServlet定义Servlet
- HttpServlet的使用步骤
继承HttpServlet
重写doGet和doPost方法
- HttpServlet原理
获取请求方式,并根据不同的请求方式,调用不同的doXxx方法