Javaweb-Interview

81 阅读4分钟

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

相同:都可以保持数据

sessioncookie
Session是作用于服务器cookie作用与客户端
Session类似一个Map,用于存储登录用户的信息cookie保持着用户的信息,当到服务器中解析当前请求是属于那个用户的,cookie不安全
占用大量服务器资源占用少量内存,存储数据有限

Session与Token的区别

http与https的概念

HTTP协议,超文本传输协议,是互联网应用最为广泛的一种网络协议,是客户端与服务器请求与响应的标准。

HTTPS是以安全为目标的HTTP通道,简单说是HTTP的安全版,HTTPS的安全基础是SSL,

HTTPS协议的作用:①建立一条数据安全的传输通道,来保证数据传输安全;②确认网站的真实性

RequestResponse
请求行:version,请求方式(method),请求url响应行:version,状态码(status code),状态文本(status text)
请求头响应头
请求体响应体

http与https的区别

  • http数据没有加密,不安全,https数据可加密,安全
  • http默认端口80,https默认端口403
  • http不需要证书,https需要证书

https如何实现数据安全

通过在http上包装ssl实现网络通讯安全

一次完整的http请求所经历那几个步骤

  1. 域名解析成ip地址
  2. 建立TCP链接
  3. 发送http请求
  4. 服务器处理请求
  5. 服务器响应内容
  6. 关闭链接
  7. 浏览器解析页面
  8. 浏览器渲染

常用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的区别

getpost
明文传输,不安全安全
没有body,传输数据量有限有body,传输大小没有限制

转发与重定向

转发重定向
forwardredirect
一次请求两次请求
在同一个服务器内可以在不同服务器内
url不变url改变

TCP与UDP的区别

TCPUDP
面向链接面向数据报
保证数据到达不保证数据一定到达
一对一一对一,一对多,多对多
头部16-20字节8字节

三次握手&四次挥手

如何解决跨越问题

实现WebMvcConfigur接口,重写addCrocs方法,在里面添加跨域控制

什么是跨域攻击CSRF,如何预防

跨站请求伪造,CSRF是在受害者毫不知情的情况下,以受害者名义伪造请求发送给受攻击站点,从而在受害者未授权情况下执行受害者权限下各种操作

防御

  • 严重http referer字段
  • 在请求地址添加token并验证
  • 在http添加自定义属性并验证

什么是长链接,什么是短链接

在http1.0中默认使用短链接,即每次发起http请求,都要建立连接,任务结束则断开连接

从http1.1开始,默认使用长链接,用以保持链接特性,使用长链接会加入请求头:Connection:keep-alive

使用长链接的情况下,当网页打开完成后,客户端与服务器之间用于传输HTTP数据的TCP通道不会关闭,当客户端再次访问这个服务器的时候,会继续使用这一条已经建立的链接。keep-alive不会永久保持链接,他有一个链接时间,可以在不同的服务器软件中设置这个时间。实现长链接需要客户端与服务器都支持长链接

长链接短链接数据传输过程

短链接:建立链接-传输数据-关闭链接 。。。循环 长链接:建立链接-传输数据。。。传输数据-关闭链接