Servlet基础知识

2023-05-16

web应用程序的组成:

网页:浏览器需要显示的内容

Web浏览器:1.向Web服务器发出请求

2.解析网页,渲染显示给用户

Web服务器:1.提供Web服务

2.存放Web应用程序

HTTP协议:Web浏览器和Web服务器之间的相互通讯

解析HTTP协议

什么是HTTP协议?超文本传输协议,是客户端(浏览器)和服务器通讯的一种标准。一套计算机在网络中通讯的规则。位于TCP/IP协议族的顶层(应用层)。

HTTP协议的特点:

1.遵循请求/响应模式

2.无状态的协议--浏览器和服务器不需要建立持久的连接,浏览器发出请求,服务器返回响应,连接就断开

3.http协议的端口为80

HTTP的处理流程:

1.客户端(浏览器)和服务器建立连接(三次握手机制)

2.客户端(浏览器)向服务器发出HTTP请求

3.服务器向客户端(浏览器)回发HTTP响应

4.客户端(浏览器)和服务器关闭连接(四次挥手机制)

三次握手和四次挥手

三次握手:第一次握手,客户端向服务器端发送标有SYN的数据包

第二次握手,服务器端向客户端回发标有SYN/ACK的数据包

第三次握手,客户端向服务器端发送标有ACK的数据包

四次挥手:第一次挥手,客户端发送一个FIN到服务器端,用以关闭客户端到服务器端的数据传送

第二次挥手,服务器端收到FIN后,发送一个ACK给客户端

第三次挥手,服务器端发送一个FIN到客户端,用以关闭服务器端到客户端的数据传送

第四次挥手,客户端收到FIN后,发送一个ACK给服务器端

HTTP请求信息:从上到下----请求行、请求头、空行、消息体

1.请求行:描述请求方式、请求URL,及HTTP协议的版本

2.请求头:以键值对的方式描述客户端的信息

3.空行:标识请求头的结束

4.消息体:描述客户端请求的表单数据(POST请求)

HTTP请求方式:

GET POST HEAD OPTIONS PUT DELETE TRACE CONNECT

其中GET--做资源的获取、POST--做数据的传输、PUT--做数据的修改、DELTE--做数据的删除-----用得较多

GET和POST区别:

1.请求信息格式(流格式)的区别:

GET方式的表单数据附加在URL后面,所以没有消息体

POST方式有消息体,在消息体中描述表单数据

(表单数据如何查看--浏览器-->右键-检查-->network-->Headers查看请求或响应头,Payload查看表单数据)

2.用途区别:

GET方式主要用于资源的查找,POST方式主要用于数据的传输(如上传文件)

3.传输性能的区别:

GET方式只能提交数据量小的文本数据,POST方式可以提交大文本数据,还可以提交二进制数据。GET方式提交的数据会在浏览器地址栏中显示,POST方式提交的数据不会再浏览器地址栏中显示,相对安全。

GET和POST的选用

1.请求静态页面或图形文件使用GET方式,做资源的查找

2.发送大数据时,用POST方式

3.上传文件时,用POST方式

4.发送用户名和密码或者其他保密信息时,用POST方式

HTTP响应信息-- 从上到下,状态行 响应头 空行 消息体

状态行:描述HTTP协议版本、状态码、响应描述

响应头:以键值对方式描述服务器相关的信息,如内容格式

空行:标识响应头的结束

消息体:服务器发送给客户端的具体数据

HTTP协议的响应状态码有5种

100-199:表示信息性代码,标识客户端应该采取其他的动作,请求正在进行

200-299:表示客户请求成功

300-399:表示用于已经移走的资源文件,指示新的地址

400-499:表示由客户端引起的错误

500-599:表示由服务器端引起的错误

响应头中的信息:content-type--由MIME类型表示

什么是MIME类型?设定某种拓展名的文件用一种应用程序打开的方式类型。当该拓展名文件被访问时,浏览器会自动使用指定的应用程序打开。

常见的MIME类型有:

text/html html页面文本数据 text/css css文件数据 text/xml xml数据 application/x-javascript js数据

application/json json数据

image/gif gif图片数据 image/png png图片数据 image/jpeg jpg图片数据

辅助应用

为解决Web服务器无法动态响应信息的缺陷,在Web服务器之后增加了辅助应用来动态生成响应信息。

在Java中,采用Web容器+Servlet方式作为辅助应用的解决方案。

什么是Servlet?Servlet又是如何诞生的呢?

Servlet 是 Server Applet的缩写,服务器端小程序,是一种使用Java开发动态网页的技术。

如果不嫌麻烦,可以使用Java动态生成网页的相应API去完成动态网页的开发,但是此时需要做很多事,解析HTTP请求,解析HTTP响应呀等。为了省事(偷懒)-简化开发,把动态生成网页的Java API进行了封装,形成了一套新的API,称为Servlet API。

Servlet API的结构

Servlet接口 ServletConfig接口

GenericServlet

HttpServlet

严格的说,Servlet只是一套Java Web开发的规范(技术标准)。只有规范(标准)并不能做任何事,必须要实现规范(标准)。所谓实现规范,就是书写代码来完成Servlet规范中提到的各项功能。

public TestServlet implements Servlet{
    // 实现接口方法
}

Servlet又提供了两个抽象类 GenericServlet和HttpServlet,它们都实现了Servlet中的很多常用功能,可以通过继承这两个抽象类的方式简化Servlet的编写。

public TestServlet extends GenericServlet{
    // 实现Service方法
}

HttpServlet继承于GenericServlet,用于开发基于HTTP协议的Servlet程序。

Web 容器

就是Servlet程序的运行环境,它实现了Servlet规范定义的各种接口和类,为Servlet的运行提供底层支持,还可以管理由用户书写的Servlet类,比如,初始化Servlet等

Web容器的作用:

1.通讯支持

2.Servlet生命周期的管理

3.线程支持

4.jsp支持

5.处理安全性

Servlet的生命周期:

1.容器加载并实例化Servlet

2.调用init方法完成初始化

3.当请求到达,调用service()方法,处理请求,产生响应

4.销毁阶段,容器调用destroy()方法,完成资源清理

常用的Web容器,Tomcat、Jboss,WebLogic等,我们选用Tomcat。和以往大家接触的外置安装Tomcat的形式不同,我们使用内置tomcat的形式--使用Java代码书写Tomcat容器。

   <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.36</version>
        </dependency>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Servlet基础知识 的相关文章

随机推荐

  • Linux网络配置

    目录 1 查看网络配置 1 1ifconfig命令 查看网络接口信息 1 2 hostname 查看主机名称 1 2 1查看主机名 1 2 2修改主机名称 1 3route 查看路由表条目 1 4 netstat 查看网络连接情况 1 5
  • KVM virt-manager 启动不了 cannot open display,和中文乱码

    首先启动不了 如下情况 xff0c 启动不了 先重启虚拟机 span class token punctuation span root 64 kvm1 span class token operator span span class t
  • python使用request+xpath爬取豆瓣电影数据

    python使用request 43 xpath爬取豆瓣电影 背景话不多说上代码 背景 由于毕设需要用到电影相关的数据 xff0c 在网上想查找一个可以爬电影的教程 xff0c 但是基本上所有的教程都是爬的豆瓣top250 xff0c 并没
  • IDEA mvn阿里云镜像设置 保姆级教程

    设置 打开 文件 设置 搜索mvn 修改用户设置文件 和 本地仓库 路径为自己喜欢的目录下 以下为我此处的文件 新项目设置 xff08 创建新项目默认设置 xff09 打开 文件 新项目设置 新项目的设置 把刚才的设置设置一遍 文件 地址
  • 解压码

    BN00001 22kke BN00002 88cde BN00003 00ike BN00004 76cdb BN00005 09dbm BN00006 0mndc BN00007 cd78d BN00008 bdmf8 BN00009
  • 保险项目业务流程

    1 整个项目分为四分模块 xff1a 信息采集模块 信息验证 审批 生成合同 xff08 开单 xff09 信息采集模块 xff1a 包括购买保险产品 xff0c 客户个人信息 1 纸质文档给客户填写 xff0c 在回来录入系统 2 客户直
  • IDEA使用maven自定义archetype

    标题自定义archetype 在pom文件中添加archetype plugin span class token generics span class token punctuation lt span plugin span clas
  • 自定义Perperties文件内容读取

    新建properties文件放在resources目录下 properties文件内容 url span class token operator 61 span jdbc span class token operator span my
  • 使用CSS中的Hover控制显示子元素或者兄弟元素

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 viewport
  • iphone表情显示问号_如何在iPhone上搜索特定的表情符号

    iphone表情显示问号 Most of us use emoji on our iPhone but until recently finding the right one has been tricky Luckily startin
  • maven项目中的jdbc连接步骤

    在maven项目pom xml中到入驱动包 xff08 以下是驱动包代码 xff09 lt dependencies gt lt https mvnrepository com artifact mysql mysql connector
  • executeUpdate()与executeQuery()的使用

    增 删 改 用executeUpdate xff08 xff09 返回值为int型 xff0c 表示被影响的行数 例子 查用executeQuery 返回的是一个集合 next xff08 xff09 表示 指针先下一行 xff0c 还有f
  • Access denied for user ''@'localhost' (using password: YES)错误解决方法

    远程登录被拒绝 xff0c 要改一个表数据的属性让他可以远程登录 解决方法如下 xff0c 执行命令 xff1a mysql gt use mysql mysql gt select host user from user 查看结果是不是r
  • leetcode部分数据库+sqlzoo练习题

    175 组合两个表 SQL架构 表1 Person 43 43 43 列名 类型 43 43 43 PersonId int FirstName varchar LastName varchar 43 43 43 PersonId 是上表主
  • ubuntu下手动安装gnome插件

    ubuntu下手动安装gnome插件 span class token comment 下载环境 span sudo apt span class token operator span span class token keyword g
  • 类和对象的理解

    类和对象的关系 是java中两个重要的概念 xff0c 简单一句话将就是 xff1a 类是对象的模板 xff0c 对象是类的实例 比如 xff1a 设计车的图纸是类 xff0c 然后比亚迪 本田 奔驰这些车 xff08 对象 xff09 都
  • java设计模式的几种体现方式

    1 单例模型 有时候在我的设计中 xff0c 所有的类只共享一个实例 xff0c 那么这时候就需要设计一个单实例的类 思路是将这个类构造器私有化 xff0c 这样外部就无法直接创建对象 xff0c 然后提供公有的静态方法 xff0c 让外部
  • springIOC使用xml装配JavaBean对象

    在一个maven工程下 xff0c 在pom xml中导入spring依赖和相关的配置 lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt project xmlns 61 3
  • spring整合MyBatis代码

    Spring 整合 MyBatis 就是把Spring和MyBatis应用到同一个项目中 xff1b 其中MyBatis提供数据库相关的操作 xff0c 完成对象数据和关系数据的转换 xff1b Spring完成项目的管理 xff0c 通过
  • Servlet基础知识

    web应用程序的组成 xff1a 网页 xff1a 浏览器需要显示的内容 Web浏览器 xff1a 1 向Web服务器发出请求 2 解析网页 xff0c 渲染显示给用户 Web服务器 xff1a 1 提供Web服务 2 存放Web应用程序