主要区别在于 生命周期不同
request
生命周期为一个请求,范围较小。
不需要声明,系统自动封装了,可以直接用。
存值:request.setAttribute(“名字”, 要存的值);
取值:request.getParameter(“名字”);
或者用EL表达式: ${名字}
session
生命周期为一次会话,一次会话内session存储的内容将一直存在。
声明:HttpSession session = request.getSession();
存值:session.setAttribute(“名字”, 要存的值);
取值:session.getAttribute(“名字”)
或者用EL表达式 ${sessionScope.所存值的对象 }
比较
request占用资源比较少,安全性比较高,但缺乏持续性。
session相对来说对资源的消耗会大点,安全性相对来说也会稍微低点,但它生命周期长。
如果可以使用request的情况下,尽量使用request ,因为相对于服务器来说资源的消耗还是比较重要的。
重定向和转发
(redirect)重定向的特点:
- 地址栏发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是两次请求。不能使用request对象来共享数据
(forward)转发的特点:
- 转发地址栏路径不变
- 转发只能访问当前服务器下的资源
- 转发是一次请求,可以使用request对象来共享数据
所以转发可以用request对象传值,重定向要用session对象传值