Springboot的Javaweb基础知识

Http协议的内容

  • 基于TCP协议,面向连接,安全
  • 一次请求一次响应
  • 每次请求都是独立的,多次请求不共享数据,但节约信道资源
  • Java中利用会话(cookie,session)来解决多次请求数据共享问题

请求数据格式

打开F12访问百度,点击网络可查看

  • Get没有请求体
  • 请求数据有三部分:请求行,请求头,请求体

响应数据格式

常见响应状态码

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304Not Modified告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400Bad Request客户端请求有语法错误,不能被服务器所理解
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了
428Precondition Required服务器要求有条件的请求,告诉客户端要想访问该资源,必须携带特定的请求头
429Too Many Requests太多请求,可以限制客户端请求某个资源的数量,配合 Retry-After(多长时间后可以请求)响应头一起使用
431Request Header Fields Too Large请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资源,用了POST
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧
503Service Unavailable服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好
511Network Authentication Required客户端需要进行身份验证才能获得网络访问权限

Apache Tomcat

  • Tomcat是一个轻量级web服务器,封装了Http协议的很多代码
  • 支持Servlet/JSP,也称Web容器,也称Servlet容器
  • SpringBoot 本身支持有两类的 WEB 容器:默认的 Tomcat、Jetty

Servlet

  • Tomcat服务器内嵌Servlet
  • Servlet是处理请求的技术
  • 不同于静态资源html等,servlet是动态的

url和uri

urn:统一资源名称(目前几乎没有使用urn,uri包括urn和url,目前的uri基本都是url)
uri:统一资源标识符,用于标识唯一的资源
url:统一资源定位符,用于找到资源的路径

Request请求

  • HttpServletRequest和HttpServletResponse直接放在方法的形参中就可以使用了,servlet会自动拦截请求中的请求行,请求头,请求体并将其封装在httpServletRequest对象中
  • 同样的,在服务器响应时,servlet会将httpServletResponse中设置的响应头等信息封装后发送给客户端

Request请求转发

  • 服务器内部的资源跳转方式
  • 用户不知道被转发了,浏览器路径不变
  • 转发需要使用setAttribute等方法共享数据
    跳转需要转发请求响应对象

共享数据用Attribute

Response响应

会话跟踪技术

  • 打开浏览器,访问一个网站:建立会话
  • 服务器or浏览器关闭:结束会话
  • 一次会话可以包含多次请求和响应
  • 会话跟踪:服务器需要识别多次请求是否来自同一个浏览器,以便在同一会话的多次请求中共享数据
  • Http是无状态的,所以需要会话跟踪实现会话内数据共享
  • 客户端会话跟踪技术:Cookie
  • 服务的会话跟踪技术:Session

Cookie

实际上就是一个保存在客户端某cookie文件中的键值对,客户端可以获取cookie,服务端可以设置cookie

cookie一般最大只有3kb,但可以存储特别多的键值对,cookie在前端每次发送请求时都会发送

后端发送cookie

一定要new一个Cookie对象

后端接收cookie

getCookies()获取特定的cookie

Cookie的原理

  • Cookie基于HTTP协议
  • 请求头:发送所有Cookie的数组;
    响应头:set-Cookie:键:值
  • 设置Cookie存活时间:先new一个Cookie对象,然后setMaxAge(),然后response.setCookie()

Cookie存储中文

  • 中文必须先编码,取时必须先解码
  • 由于Cookie是携带在URL中的,因此用URLEncoder类中的方法来进行编码解码

编码
解码

Session

  • 服务的会话跟踪技术,数据保存在服务的
  • Session相比Cookie更安全,但不能实现类似:客户端记住账号密码的功能
  • Session保存在后端的内存中

后端设置Session

会自动生成一个JSessionID=xxxxxxxxxx保存在Cookie中,因此保证了会话中Session的共享

钝化、活化

销毁

Cookie和Session区别

Filter拦截器

配置拦截资源路径

过滤链

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值