重定向和请求转发的区别、Cookie和Session

文章目录

  • 重定向和请求转发的区别
    • 请求转发
    • 重定向
    • 总结
  • Cookie和Session
    • Cookie
    • Session
    • ServletContext/applicationContext

重定向和请求转发的区别

请求转发

重定向和请求转发的区别、Cookie和Session_第1张图片

A想连接C获取资源,但A只能连接B,而B可以连接C,则B连接C,C将资源返回给B,B在转换给A。
这样A只面向了B,从来没有连接C,所以路径不会改变

重定向

重定向和请求转发的区别、Cookie和Session_第2张图片

A连接B拿某个资源,但B没有,告诉A C有,则A再连接C。
A从连接B到连接C,所以路径改变

总结

相同点
页面都会实现跳转
不同点
请求转发的时候,url不会产生变化
重定向时候,url会发生变化;

Cookie和Session

  • 为什么需要 Cookie和Session
    因为客户端和服务器之间的通信使用的是HTTP,又因为HTTP是无状态的,所以客户端和服务器之间的会话,服务器是不知道客户端来过与否,之间的会话记录也无法保存,所以需要Cookie和Session
  • 场景:
    前提:这里客户端和用户一样
    重定向和请求转发的区别、Cookie和Session_第3张图片

用户通过电脑的客户端(比如:浏览器)向服务器发送多个请求(s1,s2,s3…,一个servlet程序代表一个请求,并且一个servlet程序需要在web.xml中注册并映射地址,所以一个servlet程序也代表一个请求地址

Cookie

重定向和请求转发的区别、Cookie和Session_第4张图片

①客户端第一次访问服务器时,服务器给客户端发一个Cookie;
②此时客户端有了Cookie,以后每次向服务器请求,都带上这个Cookie,服务器收个Cookie后就知道是哪个用户了。

Session

重定向和请求转发的区别、Cookie和Session_第5张图片

①客户端第一次访问服务器时,客户端在服务器登记一个Session,这个Session有一个唯一的SessionID用来区别;
②Session在服务器端创建,但SessionID发给了客户端;客户端向服务器请求时,服务器通过SessionID来确定是哪个客户端。(比如不同的用户(客户端)添加购物车,服务器通过SessionID能确定不同用户所添加的商品,存在不同的Session中)

注:SessionID是通过Cookie传递的

ServletContext/applicationContext

  • 若有两个(或多个)用户请求服务器,它们通过各自的SessionID取得服务器中的资源,但对于不是各自私有的而是它们的共有资源怎么获取(比如说,统计总共有多少用户访问服务器,这时人数就不能存放在某个Session中),此时就需要ServletContext/applicationContext(它用来存储的资源可共享),用户可以在这取到共有资源。
  • ServletContext/applicationContext代表一个web应用,所以web应用里的所有servlet程序(请求)可共享它。
  • 重定向和请求转发的区别、Cookie和Session_第6张图片

你可能感兴趣的:(JavaWeb)