0604 HTTP协议

web应用(web资源)
1.服务器进程
2.浏览器进程和web服务器之间通信使用的HTTP
Hyper Text Transmission Protocol
应用层协议(1.基于某个特定的传输层协议之上 2.描述业务 3.非操作系统代码)
3.HTTP协议主要是一种文本协议(1.对人类友好 2.对程序不太友好/性能差)
客户端(浏览器进程)
HTTP协议的格式(图解 HTTP协议/图解TCP/IP协议)

1.如何表述我们请求哪个资源(URL)

—需要一种统一的规范给资源命名

URL的具体格式:
1.资源在哪台主机上 ——域名(domain)或者ip来体现 ——主机(post)
2.和主机上的哪个进程去获取资源 ——端口(port)
3.具体定位到是该进程管理的哪个资源 ——资源路径/路径(path)
4.URL设计之处,不仅仅为HTTP协议使用,所以,需要标识出本次资源对应的协议(protocol/schema)
5.针对本次请求,处了资源本身之外的特殊要求
1.查询字符串 query string
2.文档片段 fragment

URL基本格式:
在这里插入图片描述
端口(其中当HTTP协议 && port == 80),80可以省略
基本上每种应用层协议都有其默认端口(当端口是这个默认端口时,可以省略)
http:默认端口 80 https:默认端口 443
/dir/index.html 路径(path)
1.当文件名是index.html index/php index.jsp,大部分的web服务器兼容不写文件名
2.也有绝对路径 vs 相对路径
绝对路径:以被web进程管理的资源的根目录为根

查询字符串(query string)

该内容不是必须的,可以没有
具体格式:问号开头 以一个key-value 如果是多个key-value则中间用&间隔
例如:?name=wyy&age=20&gender=fm

可以省略的部分

1.协议可以省略
example.html <a href = "//www.baidu.com/index.html">百度</a>协议等同于请求example.html的协议
2.端口可以省略(协议的默认端口)
3.主机部分可以省略
example.html <a href="http:///index.html">some</a>
4.可以完全省略路径前面的部分
example.html <a href = "/hello.html">some</a>
5.查询字符串和文档片段可以省略
6.路径是index协议,可以省略文件名

example.html   <a href = "http:///index.html">some</ a>

此处是三个///意思为http带两个// 中间省略了主机,主机为请求example.html的主机

如何准确描述哪个资源,通过URL

2.是获得还是提交内容
10:00

请求

请求的格式:请求行+请求头们+可能存在的请求体
request list+request headers + request body
请求行:请求方法 + 资源URL (一般省略为路径)+ 版本 \r\n
请求头们:请求头\r\n请求头\r\n…请求头\r\n
请求头:请求头名字:请求头值
请求体的格式HTTP协议没有规定

响应的结果

1xx 请求进行时
2xx 请求成功

响应头 Content-XXX

Content-Type

内容为html text/html text/html;charset=utf-8;
内容为css text/css
内容为javaScript application/javascript text/javascript
纯文本 text/plain
jpg image/jpeg
png image/png

JSON格式 application/json text/json

Content-Length

请求体的长度
TCP是面向字节流的,应用层协议设计时,需要自行考虑在协议中考虑解包信息

静态资源 动态资源

static resource dynamic resource


在有tomcat的基础上

1.JS中的ajax(Asynchronous JavaScript and XML)
< a > < form > 间接地引导 浏览器 发送HTTP请求

2.JS的功能通过修改DOM树,进而进行影响到用户看到的内容


0606
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何使用Servlet技术开发动态资源

1.为什么需要动态资源:在某些资源路径固定的情况下,我们需要对应不同的环境、条件,产生不同的内容
2.Servlet:Server let(服务器 小物件) —— 官方提供的标准,输入JavaEE标准(一组抽象类、接口)
3.当下主要使用SpringMVC(基于Servlet而诞生)

大体的开发流程:(整个过程都需要遵守规则,否则tomcat不能认)
1.通过继承HttpServlet抽象类,完成我们自己的类(每个都是一个独立的Web资源)
2.重写其中的方法(get,post…)输出资源内容的过程
3.把动态资源和路径建立绑定关系

DNS

在这里插入图片描述

原理:输入URL看到网页内容发生了什么(重要!!!!!)


0607

HttpServlet是什么

Servlet标准,大概规定的是一个 请求-响应服务器模型(不仅仅针对HTTP协议)
interface Servlet -> abs class HttpServlet -> MyServlet

三个阶段:
1.初始化阶段 init(…); 有且只有一次
2.处理 请求-响应阶段 service(req,resp) 每次请求-响应都会执行一次
HttpServlet变成doGet/doPost
3.销毁阶段 destory(); 有且仅有一次


重写 构造方法(必须是无参) init doget dopost destory

LifecycleServlet

1.init()、service()、destory()的被调用次数以及被调用时机
2.类是被Tomcat的代码实例化的
3.写的方法是被Tomcat的代码调用的
4.对象是单例模式
5.
懒汉模式 只有访问的时候才调用 第一次访问 构造方法、init()、doget方法被访问
但因为是单例模式 ,第二次访问之后就不会实例化,只会有doget方法被调用

Sevlet 的日常使用

WebServlet

1.@WebServlet(…) 填写的资源路径的问题
1.必须以 / 开头(有特殊情况)
2.路径不能重复
3.正常情况:" /hello " " /hello/world " " /hello.html " " /hello.jpg "
4.两个特殊情况:
1.通配符" *.do" 只要路径后缀是 .do的URL都可以访问
2." / " 所有的URL路径都可以访问(已经定义了的明确的路径会执行其准确定义的方法)
3. " " 代表根 URL
2.
3.读取请求参数(params)——读取网页中收集到的用户信息
GET 和POST方法区别:
GET方法的参数放在query string 中,
POST方法的参数放在query string 和 query body中(必须是form提交的POST请求) 请求的Content-Type必须是application/x-wwww-form-urlencoded 类型

对于GET和POST,我们的代码可以采用相同的方式读取
req.getParamater(…)系列

GET和POST的区别(面视)

根本区别只有一个,语义不同:GET代表是获取的语义;POST代表的是提交的语义。
具体表现上有很多不同:
1.标准中规定:GET不应该(should not)带有请求体;POST可以带有请求体
2.请求有参数的话,GET请求防砸查询字符串中。POST请求放在查询字符串或请求体中(form表单)
由于各个浏览器的实现,URL的长度限制(短于请求体的限制)
URL一般在日志中总会记录,请求体中的内容不会记录到日志,所以有种说法 POST比GET稍微安全。
3.GET获取 将HTTP方法类比成SQL动作
GET(select)、POST(insert)、PUT(update)、DELETE(delete)——Restful建议
GET、PUT是幂等的;GET方法是无副作用的,PUT是有副作用的
POST、DELETE不是幂等的。
约束限制等级:无副作用->幂等的。无副作用的一定是幂等的,但是幂等的不一定是无副作用的。
每次执行得到的结果永远是一致的---->幂等的
反之,同样的语句,第一次成功,今后可能失败,就是不幂等

执行不会影响数据,叫做无副作用

4.资源重定向(redirect) 3XX + 响应头 :Location
重定向:永久重定向 + 临时重定向 (举例:石头记和红楼梦)

常用:临时重定向(redirect)


0613
JDBC
1.需要引入一个jdbc-mysql的依赖
2.DataSource 对象 Connection 对象 PrepareStatement对象 executeUpdate/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值