请求转发与请求重定向与jsp四大作用域

请求转发:

请求转发,即request.getRequestDispatcher().forward(),是一种服务器的行为,客户端只有一次请求,服务器端转发后会将请求对象保存,地址栏中的URL地址不会改变,得到响应后服务器端再将响应发给客户端;

请求重定向:

请求重定向,即response.sendRedirect(),是一种客户端行为,从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变。

session长驻在服务器内存里,session有id标识,一个session专供一个用户使用。
request只能存在于一次访问里,为了让每次访问区分开是哪个用户,所以request中会带上session的id标识,就是每个request都会属于一个session,一个session能为很多次request服务。类似于数据库的多对一关系
所以request.getSession的本质是使用request中的session id去找到这个用户对应的session


可以解答为什么请求转发需要将参数保存一次才能在转发后的页面得到。

request只存在于一次访问里


JavaWeb的四大作用域为:PageContextServletRequestHttpSessionServletContext

扫描二维码关注公众号,回复: 1574669 查看本文章


PageContext域:作用范围是整个JSP页面,是四大作用域中最小的一个;生命周期是当对JSP的请求时开始,当响应结束时销毁。


ServletRequest域:作用范围是整个请求链(请求转发也存在);生命周期是在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。


HttpSession域:作用范围是一次会话。生命周期是在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate() ,可以立即销毁session。


猜你喜欢

转载自blog.csdn.net/qq_37812895/article/details/80659944
今日推荐