JavaWeb基础-HTTP和Servlet

一、HTTP概念作用及特点

  • 概念:
    • 超文本传输协议
  • 作用:
    • 规范了浏览器和服务器数据交互格式
  • 特点:
    • 简单快速:基于键值对发送,客户向服务器请求服务,只需要传送请求方法和路径,http服务器程序规模小,因而通信速度很快
    • 灵活:允许传输任意类型的数据对象,传输的类型由content-type 标记
    • 无连接:每次连接只处理一个一个请求,服务器处理完请求后,接到用户应答后,断开连接。节省传输时间
      HTTP1.1之后支持可持续连接
    • 无状态:协议对事务处理没有记忆,后续如果需要前面的信息,必须重重,但是可能会导致每次连接传送的数据量增大,好处是在服务器不需要前面信息的时候应答就比较快了

二、HTTP的交互流程

  1. 客户端和服务器创建连接
  2. 客户端发送请求数据到服务器端
  3. 服务器接受请求,进行处理,将处理结果响应客户端
  4. 关闭客户端和服务端的连接(HTTP1.1之后不会立即关闭)

三、请求格式

  1. 请求头:请求方式、请求地址、HTTP 版本
  2. 请求行:客户端要使用的一些附加信息
  3. 空行:位于请求行和请求数据之间
  4. 请求数据:非必须

四、请求方式

HTTP1.0 定义了三种:Get、Post、HEAD方法
HTTP1.1新增了五种:Options、TRACE、DELETE、CONNECT

get:请求指定页面,返回实体主体
head:类似宇get请求、只是返回的响应中没有具体内容,用于获取请求头
post:像指定资源提交数据进行处理,数据被包含在请求体中。POST请求可能会导致新资源的建立,或者已有资源的修改
put:从客户端向服务器传送的数据取代指定的文档内容
delete:请求服务器删除指定页面
connect:预留能够将连接改为管道方式的代理服务器
options:允许客户端查看服务器的性能
trace:回显服务器收到的请求,主要用于测试或诊断

五、get和post请求方式的区别:

get请求方式:

   请求数据会以?的形式隔开拼接再请求头的请求地址中,不安全,没有请求实体部分
HTTP协议虽然没规定请求数据大小,但是浏览器对URL长度有所限制,所以Get请求不能携带数据

post请求方式:

   请求数据在请求实体中进行发送,在url中看不到具体的请求数据,数据封装到请求数据体中,安全,适合数据量大的数据发送

六、响应:

格式:
	响应行(状态行):HTTP版本、状态码、状态消息
	响应头:消息报头、客户端房附加的信息
	空行:响应头和响应实体之间的,必须存在
	响应实体:正文,服务器返回给浏览器的信息

七、状态码

含义:
	状态码由三个十进制数组成,第一位定义了状态码的类型,后两个数字没有分类的作用
类型:
	1**:信息,服务器收到请求,需要请求者继续执行操作
	2**:成功,操作被成功接受并处理
	3**:重定向,需要进一步操作完成请求
	4**:客户端错误,请求包含语法错误或无法完成请求
	5**:服务器错误,服务器在处理请求的过程中发生了错误
	
常见的状态码:
	200 OK	客户端请求成功
	400 Bad Request	客户端请求有语法错误,不能被服务器所理解
	401 Unauthorized	请求未经授权,代码必须和www-Authenticate包头域一起使用
	403 Forbidden	服务器收到请求,但是拒绝提供服务
	404 Not Found	请求资源不存在/输入了错误的URL
	500 Internal Server Error 	服务器发生不可预期的错误 
	503 Server unavailable	服务器当前不能处理客户端请求,一段时间后恢复

八、什么是Servlet

定义:
	Servlet指规范了服务器能够认知的接口规范,广义上只要实现了这个接口的类,都被称为Servlet类
使用:
	创建普通java类,并继承HttpServlet
	复写service方法
	在service方法中书写逻辑代码
	在web.xml配置servlet(目前可直接使用注解)

一、Servlet声明周期

  • 从第一次调用到服务器关闭
  • 如果Servlet在web.xml中配置了load-on-startup,生命周期为从服务器启动到服务器关闭

注: init方法是对Servlet进行初始化的一个方法,会在Servlet第一次加载进内存时执行
destory方法是在Servlet被销毁时执行,也就是服务器关闭时
load-on-startup:数字表示加载顺序,每个Servlet可能都会配load-on-startup
因为每次tomcat都会将内容先加载到内存,因此每次修改都需要重启tomcat服务器

二、Service方法和doGet、doPost方法

  • Service方法:
    • 可以处理get、post方法是请求,如果servlet中有service方法,系统会有限调用service 方法对请求进行处理
  • doGet方法:
    • 可以处理get方式的请求
  • doPost方法:
    • 可以处理post方式的请求

三、Servlet常见错误

404错误:资源未找到
	1、请求地址中servlet的别名拼写错误
	2、请求地址中虚拟项目名称拼写错误
500错误:
	1、java.lang.ClassNotFoundExeception
	解决:
		在web.xml中教案servlet类全限定路径错误,目前使用注解,基本及已经解决该问题
	2、Servlet中,方法体中代码出现逻辑语法错误
	解决:
		根据错误提示对方法体中的错误进行更改
405错误:请求方式不支持
	1、请求方式和servlet中的方法不匹配所造成
	解决:使用service中进行处理,并且不要在service中调用父类service 方法

感谢阅读,只是记录自己的漫漫IT学习之路,如有错漏,还请不吝赐教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章