servlet范围:数据共享

数据共享:

请求转发:request.getDispatcher("相对路径").forward(request,response)

重定向:response.sendRedirect("/项目名/路径名");

request:一次请求的范围  ,过了这次请求所有数据失效
request.setAttribute(name,value)
request.getAttribute(name)
请求转发时:session、getParameter都有值
重定向时:session、getParameter都无值


session:会话范围 :当前浏览器范围,只要不关闭浏览器 数据一直存在
request.getsession().setAttribute(name,value)
request.getsession().getAttribute(name)
请求转发时:session、getParameter都有值
重定向时:session有值、getParameter无值


servletContext:整个应用范围:服务器范围,只要服务器不关闭,数据一致存在
request.getsession().getServletContext().setAttribute(name,value)
request.getsession().getServletContext().getAttribute(name)
请求转发时:session、getParameter都有值
重定向时:session有值、getParameter无值

原则:能在request 就不要 放session 能在session  就不要在servletContext
原因:服务器可能一跑跑几年,浏览器页面也可能玩一天才关闭,只有请求是一次性的

注意:1、request.getAtribute()与request.getParameter()获得的值是不同的 request.getAtribute(name)获得是request.setAttribute(name,value)里的值,值可以任意改写 request.getParameter()是获得页面的值
2、session范围:赋值粘贴传值后的打开的新窗口,而不是打开新的浏览器
原文地址:https://www.cnblogs.com/1020182600HENG/p/6092926.html