一、servlet数据存储
pageContext
仅在当前jsp对应的servlet(jsp会转为servlet)jsp会被解析为一个Servlet类
request
仅在一次请求中有效,如果请求结束了,保存的数据就销毁了
如果请求被转发了,一次请求的多次请求,还是同一次请求
请求转发(同一次请求,经历了多次转发)
注意:如果数据存到请求中,一定不要使用响应重定向
//响应重定向(给客户端重新响应了一个新的url,客户端会重新请求这个新的url)
//相当于,客户端第一次请求已经响应了(生命周期结束)
//客户端又根据响应的新的url,作出了第二次请求
// (新的请求,原来存在请求中的数据已经随着第一次请求的结束而销毁)
resp.sendRedirect("home.jsp");
//home.jsp也是一个servlet,将访问不到存到第一次请求中的数据
//因为第一次请求已经结束了(生命周期)
session
仅在一次会话中有效(客户端和服务器建立一次连接,称为会话)一次会话可以包含多次请求
session默认的生命周期是(客户端和服务器无操作,30分钟后会自动销毁)
你打开浏览器登录账号,过30分钟,再访问需要你重新登录!!
特殊情况就是服务器自定义了时间
(有的网站设置的时间永远,只要你浏览器本地cookie存的有账号和密码)
不建议再session中存数据,仅存登录相关信息就可以
如果会话中存太多数据,服务器压力会太大(存的数据会占用服务器内存)
application
服务器启动,代码整个服务器程序,只要服务器不关闭就一致有效(生命周期长)
这是jsp内置对象中的名称,servletContext(Servlet上下文)
二、请求转发和响应重定向
//请求转发:获取转发器,设定转发的目标;forward执行转发(同一个请求对象和响应对象)
req.getRequestDispatcher("home.jsp").forward(req, resp);
//响应重定向(注意:两次请求)
resp.sendRedirect("selectAllUser");//响应重定向
请求转发,地址栏不会变,依然是你请求的第一个资源路径Url
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXClWUWv-1658990738864)(Img\image-20220728093544871.png)]
假如现在登录了,浏览器地址栏不建议显示登录的url,因为一旦刷新,会重新发送login请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BYit7mkw-1658990738866)(Img\image-20220728093825240.png)]
如何解决这个问题?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ei3SYVhy-1658990738867)(Img\image-20220728094216859.png)]
注意:对于资源请求,切记不可在地址栏显示资源名,如(login.jsp index.html)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYwp1wwU-1658990738867)(Img\image-20220728100535179.png)]
三、JSP九大内置对象
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-slehIqQI-1658990738868)(Img\image-20220728095045103.png)]
四、JavaScript操作确认
<script type="text/javascript">
//删除函数
function