pageContext
仅在当前jsp对应的servlet(jsp会转为servlet)jsp会被解析为一个Servlet类
request
仅在一次请求中有效,如果请求结束了,保存的数据就销毁了
如果请求被转发了,一次请求的多次请求,还是同一次请求
请求转发(同一次请求,经历了多次转发)
注意:如果数据存到请求中,一定不要使用响应重定向
java
//响应重定向(给客户端重新响应了一个新的url,客户端会重新请求这个新的url)
//相当于,客户端第一次请求已经响应了(生命周期结束)
//客户端又根据响应的新的url,作出了第二次请求
// (新的请求,原来存在请求中的数据已经随着第一次请求的结束而销毁)
resp.sendRedirect("home.jsp");
//home.jsp也是一个servlet,将访问不到存到第一次请求中的数据
//因为第一次请求已经结束了(生命周期)
session
仅在一次会话中有效(客户端和服务器建立一次连接,称为会话)一次会话可以包含多次请求
session默认的生命周期是(客户端和服务器无操作,30分钟后会自动销毁)
你打开浏览器登录账号,过30分钟,再访问需要你重新登录!!
特殊情况就是服务器自定义了时间
(有的网站设置的时间永远,只要你浏览器本地cookie存的有账号和密码)
不建议再session中存数据,仅存登录相关信息就可以
如果会话中存太多数据,服务器压力会太大(存的数据会占用服务器内存)
application
服务器启动,代码整个服务器程序,只要服务器不关闭就一致有效(生命周期长)
这是jsp内置对象中的名称,servletContext(Servlet上下文)
二、请求转发和响应重定向
java
//请求转发:获取转发器,设定转发的目标;forward执行转发(同一个请求对象和响应对象)
req.getRequestDispatcher("home.jsp").forward(req, resp);
//响应重定向(注意:两次请求)
resp.sendRedirect("selectAllUser");//响应重定向