Web相关

互联网通信

通信协议

计算机通信的规则必须同时遵守才能完成通信。

TCP/IP:

  • TCP(Transmission Control Protocol)又叫传输控制协议,TCP是面向连接的,并且是一种可靠的协议,在基于TCP进行通信时,通信双方需要建立TCP连接,建立连接需要经过三次握手,握手成功才可以通信。
    在这里插入图片描述
  • UDP: 无连接通信协议,发送端和接收端不用建立连接,消耗资源小通信效率高,常用在消息通信,图片传输。限制64kb,可能数据丢失。

HTTP

超文本传输协议是建立在TCP协议之上的一种应用。

  • HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
  • http 报文格式分为两种,请求报文响应报文

HTTP协议有7种请求方式,常用的有2种

在这里插入图片描述

  • get:请求参数显示在URL,参数有长度限制(受限于url长度),安全性比post差。
  • post:请求参数在请求体中,请求的url长度没有限制的,相对安全,。

请求报文

在这里插入图片描述

在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

常见状态码
在这里插入图片描述

响应报文

在这里插入图片描述

cookie&session

cookie

  • Cookie 是服务器通知客户端保存键值对的一种技术。
  • 客户端有了 Cookie 后,每次请求都发送给服务器。
  • 每个 Cookie 的大小不能超过 4kb
  • 可以设置超时时间
  • 调用 response.addCookie( Cookie )通知浏览器保存

session

  • 基于cookie实现的,session是会话级别的。
  • 浏览器关闭session失效,默认超时时间为30分钟

在这里插入图片描述

互联网通信模型

  • c/s模型: 客户端发送请求给服务器软件将定位的文件内容解析为【二进制数据】通过网络发送回发起请求的客户端软件上。类似qq,英雄联盟。
    优点:安全性较高,有效降低服务端的计算机的压力。
    缺点:增加客户获得服务的成本(要下载),更新较为繁琐。
  • b/s模型: 浏览器和客户端进行通信,将定位的文件内容解析为【二进制数据】通过网络发送回发起请求的客户端软件上。
    优点:不会增加客户获取服务的成本,几乎不需要更新。
    缺点:无法有效的对服务端计算机资源文件进行保护,服务端压力大 (高并发场景)

动态资源文件与静态资源文件获取的区别

  • 静态文件被索要时,Http服务器直接通过 【输出流】 将静态文件中内容或者命令以【二进制形式】推送给发起请求浏览器。
  • 动态文件被索要时,Http服务器需要创建当前class文件的实例对象,通过实例对象调用对应的方法处理用户请求,通过 【输出流】 将运行结果以【二进制形式】推送给发起请求浏览器

Http服务器介绍

  • Http服务器可以接收由浏览器发动的Http请求协议包
  • Http服务器可以解析Http请求协议包二进制数据了解用户请求
  • Http服务器可以自动定位被访问的资源文件
  • Http服务器可以自动将被访问文件内容或则文件运行结果通过输出流以二进制形式写入到Http响应协议包中响应体
  • Http服务器可以自动将Http响应协议包推送回发起请求的浏览器

Servlet

  • JavaWeb 三大组件之一。三大组件分别是:Servlet 程序Filter 过滤器Listener 监听器。
  • Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。

Servlet生命周期

  1. 执行servlet构造器方法。
  2. 调用init方法初始化。
  3. 调用service方法请求分发,每次请求都会调用。
  4. 执行destroy 销毁方法

ServletConfig

  • ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对象。
  • 可以获取Servlet的别名(需要设置)
  • 获取初始化参数
  • 获取servletContext对象

ServletContext

  • 一个 web 工程,只有一个 ServletContext 对象实例,是一个域对象,可以设置域对象配合JSP使用。

HttpServletRequest

Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。

  • getRequestURI() 获取请求的资源路径
  • getRequestURL() 获取请求的统一资源定位符(绝对路径)
  • getRemoteHost() 获取客户端的 ip 地址
  • getHeader() 获取请求头
  • getParameter() 获取请求的参数
  • getParameterValues() 获取请求的参数(多个值的时候使用)
  • getMethod() 获取请求的方式 GET 或 POST
  • setAttribute(key, value); 设置域数据
  • getAttribute(key); 获取域数
  • getRequestDispatcher() 获取请求转发对象

请求转发&请求重定向

  • 重定向代表之前的请求已结束,给客户端一个新的url,让客户端重新请求去获取资源。这个url可以是站外的,效率相对于转发要低。之前的request域已经失效,可以通过session来获得一些参数。
	resp.sendRedirect("http://localhost:8080");
  • 转发则和它大致相反:还是同一个request请求,浏览器地址栏不发生变化,只能访问站内资源。
    -

重定向偏向不同业务的跳转,转发偏向同业务的跳转。

过滤器&拦截器&监听器

  • 过滤器: 依赖于servlet容器,可以对几乎所有请求进行过滤,缺点是一个过滤器实例只能在容器初始化时调用一次,生命周期随容器。可以做一些过滤获得我们需要的字段。
  • 拦截器: 拦截器是在面向切面编程中应用的,就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现。
  • 监听器: 基于servlet随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

项目启动时,先启动监听器,再启动过滤器—>拦截

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值