Get请求与Post请求的区别?
- 数据传递长度:get的长度比较小,post没有限制
- 数据传递方式:get使用URL来传递参数值,post直接将参数放入request body
- 数据传递安全性:get不安全,post安全
- 发送的数据包数量:get发送1个TCP数据包,post发送2个TCP数据包
- post首先发送1个请求头request head(1个TCP数据包),服务器接收后返回100状态码,再发送request body(1个数据包)
- get的地址可以被缓存,post不能被缓存
请求转发与重定向的区别?
首先我们要分清请求转发和重定位是发生在浏览器客户端和服务器端之间通信的时候,当客户端发起一个请求,服务器会获取到客户端的request请求对象,然后对客户端的请求进行处理,处理完成之后给客户端一个响应结果,这里的响应有两种方式,也就是我们所说的重定向和请求转发,重定向是服务器端通知客户端重新发起一个请求,是客户端的转发行为,而请求转发是服务器端的转发行为。服务器在重定向的时候会调用response对象的sendRedirect()方法去通知客户端,在请求转发的时候调用request对象的getRequestDispatcher()方法获取RequestDispatcher转发对象,再调用forward(request,response)方法请求转发。以上便可以知道重定向和请求转发主要区别表现在以下三方面
- 重定向之后,客户端浏览器地址栏显示新的请求地址
- 请求转之发后,客户端浏览器地址栏显示旧的请求地址
- 重定向代表一次新的请求,请求转发并没有发起新的请求
Servlet的生命周期
Servlet的生命周期分为实例化、初始化、服务、销毁四个阶段
- 1.实例化:当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。Servlet实例只会创建一次实例。
- 2初始化:执行当前Servlet实例的init()初始化方法,初始化只会执行一次。
- 3.服务:调用父类HttpServlet的service()方法,该方法会根据客户端请求方式的不同,调用不同 的doXXX()方法处理请求,比如doGet()、doPost()等
- 4.销毁:当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)