Javaweb = Servlet + jsp + session + cookie ?? 网络编程:TCP + UDP + HTTP 机械工程学:解体
Servlet的生命周期
Servlet线程安全
Servlet线程不安全,所以在Servlet中的成员变量是线程不安全的,
Servlet执行流程
Servlet与Jsp的区别
- Jsp的本质是Servlet,JVM只能识别Java类,不能识别jsp代码
- jsp更擅长表现与页面显示,Servlet更擅长逻辑控制
- jsp有九大内置对象,Servlet没有内置对象
Jsp九大内置对象
四大域对象
Session&Cookie
相同:都可以保持数据
| session | cookie |
|---|---|
| Session是作用于服务器 | cookie作用与客户端 |
| Session类似一个Map,用于存储登录用户的信息 | cookie保持着用户的信息,当到服务器中解析当前请求是属于那个用户的,cookie不安全 |
| 占用大量服务器资源 | 占用少量内存,存储数据有限 |
Session与Token的区别
http与https的概念
HTTP协议,超文本传输协议,是互联网应用最为广泛的一种网络协议,是客户端与服务器请求与响应的标准。
HTTPS是以安全为目标的HTTP通道,简单说是HTTP的安全版,HTTPS的安全基础是SSL,
HTTPS协议的作用:①建立一条数据安全的传输通道,来保证数据传输安全;②确认网站的真实性
| Request | Response |
|---|---|
| 请求行:version,请求方式(method),请求url | 响应行:version,状态码(status code),状态文本(status text) |
| 请求头 | 响应头 |
| 请求体 | 响应体 |
http与https的区别
- http数据没有加密,不安全,https数据可加密,安全
- http默认端口80,https默认端口403
- http不需要证书,https需要证书
https如何实现数据安全
通过在http上包装ssl实现网络通讯安全
一次完整的http请求所经历那几个步骤
- 域名解析成ip地址
- 建立TCP链接
- 发送http请求
- 服务器处理请求
- 服务器响应内容
- 关闭链接
- 浏览器解析页面
- 浏览器渲染
常用http状态码
| 状态码 | 类别 | 描述 | 具体状态 |
|---|---|---|---|
| 1xx | 信息状态码 | 信息,服务器接受请求,需要请求者继续操作 | |
| 2xx | 成功状态码 | 成功,操作被成功接受并处理 | 200:成功,201: |
| 3xx | 重定向状态码 | 重定向,需要进一步操作完成请求 | 301:永久重定向,302:临时重定向 |
| 4xx | 客户端异常状态码 | 客户端异常,请求包含语法错误和无法完成的请求 | 400:,401:没有权限,402,403:没有权限(找不到资源),404:url找不到,405:请求参数格式错误 |
| 5xx | 服务器异常状态码 | 服务器异常,服务器在处理请求时服务器发生错误 | 500:服务器错误,501,502:网关异常 |
http1.0,http1.1,http2.0之间的区别
- http1.0无状态,无连接
- http1.1长连接,请求管道化,增加缓存处理
- http2.0二进制分帧,多路复用(连接共享),头部压缩
get和post的区别
| get | post |
|---|---|
| 明文传输,不安全 | 安全 |
| 没有body,传输数据量有限 | 有body,传输大小没有限制 |
转发与重定向
| 转发 | 重定向 |
|---|---|
| forward | redirect |
| 一次请求 | 两次请求 |
| 在同一个服务器内 | 可以在不同服务器内 |
| url不变 | url改变 |
TCP与UDP的区别
| TCP | UDP |
|---|---|
| 面向链接 | 面向数据报 |
| 保证数据到达 | 不保证数据一定到达 |
| 一对一 | 一对一,一对多,多对多 |
| 头部16-20字节 | 8字节 |
三次握手&四次挥手
如何解决跨越问题
实现WebMvcConfigur接口,重写addCrocs方法,在里面添加跨域控制
什么是跨域攻击CSRF,如何预防
跨站请求伪造,CSRF是在受害者毫不知情的情况下,以受害者名义伪造请求发送给受攻击站点,从而在受害者未授权情况下执行受害者权限下各种操作
防御
- 严重http referer字段
- 在请求地址添加token并验证
- 在http添加自定义属性并验证
什么是长链接,什么是短链接
在http1.0中默认使用短链接,即每次发起http请求,都要建立连接,任务结束则断开连接
从http1.1开始,默认使用长链接,用以保持链接特性,使用长链接会加入请求头:Connection:keep-alive
使用长链接的情况下,当网页打开完成后,客户端与服务器之间用于传输HTTP数据的TCP通道不会关闭,当客户端再次访问这个服务器的时候,会继续使用这一条已经建立的链接。keep-alive不会永久保持链接,他有一个链接时间,可以在不同的服务器软件中设置这个时间。实现长链接需要客户端与服务器都支持长链接
长链接短链接数据传输过程
短链接:建立链接-传输数据-关闭链接 。。。循环 长链接:建立链接-传输数据。。。传输数据-关闭链接