HTTP&Tomcat&Servlet

26 阅读6分钟

Web概述

1. JavaWeb技术栈

B/S架构

B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。

静态资源

  • 静态资源主要包含HTML、CSS、JavaScript、图片等,主要负责页面的展示。由于做出来的这些内容都是静态的,这就会导致所有的人看到的内容将是一模一样。

动态资源

  • 动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。
  • 动态资源处理完逻辑后会把得到的结果交给静态资源来进行展示,动态资源和静态资源要结合一起使用。

Web的访问过程就如下图所示: image.png

(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 请求数据格式

image.png

请求数据总共分为三部分内容,分别是==请求行==、==请求头==、==请求体==

  • 请求行: HTTP请求中的第一行数据,请求行包含三块内容
    GET[请求方式] /[请求URL路径] HTTP/1.1[HTTP协议及版本]

    请求方式有七种,最常用的是GET和POST

  • 请求头: 第二行开始,格式为key: value形式

  • 请求体: POST请求的最后一部分,存储请求参数

GET和POST请求的区别:

  • GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
  • GET请求请求参数大小有限制,POST没有

2.3 响应数据格式

  1. 响应数据中包含三部分内容,分别是响应行、响应头和响应体
  2. 掌握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项目结构: 开发中的项目 image.png
  • 开发完成部署的Web项目 image.png

4. Servlet

  • Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术
  • 使用Servlet可以实现根据不同的登录用户在页面上动态显示不同内容。
  • Servlet是JavaEE规范之一,其实就是一个接口,通过定义Servlet类实现Servlet接口,并由web服务器运行Servlet

4.1 Servlet执行流程

image.png

  • 浏览器发出http://localhost:8080/web-demo/demo1请求,从请求中可以解析出三部分内容,分别是localhost:8080web-demodemo1

    • 根据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个阶段:

    1. 加载和实例化:默认情况下,当Servlet第一次被访问时由容器创建Servlet对象,可以使用@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)loadOnStartup修改成在服务器启动的时候创建。
    2. 初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
    3. 请求处理每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理
    4. 服务终止:当需要释放内存或者容器关闭时,容器会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收.

4.3 方法介绍

image.png

4.4 体系结构

开发B/S架构的web项目,都是针对HTTP协议,所以我们通过继承HttpServlet定义Servlet

  1. HttpServlet的使用步骤

继承HttpServlet

重写doGet和doPost方法

  1. HttpServlet原理

获取请求方式,并根据不同的请求方式,调用不同的doXxx方法