javaWeb之Http响应和请求,转发和重定向,cookie和session的区分 - Go语言中文社区

javaWeb之Http响应和请求,转发和重定向,cookie和session的区分


http请求包含三部分:请求行,请求头,请求体(post请求会存在请求体并把请求数据存放在请求体中,get方式没有请求体会把请求数据存放在URL中)。

http响应也包含三步分:响应行,响应头,响应体

ContentType的作用:ContenType决定浏览器采用何种方式对 响应体 进行处理。

MIME类型          描述     

 text/plain           纯文本

 text/html           HTML文档

text/xml              XML文档

application/x-msddownload     需要下载的资源

image/(jpeg/gif)       图片资源 

请求转发和响应重定向

请求转发 request.getRequestDispatcher("/***").forward(request, response);

请求转发属于服务器行为,只会产生一次请求,浏览器地址栏的URL不会变化

响应重定向  response.sendRedirect("/**");

是浏览器行为,会重新产生一个请求,浏览器地址栏的URL会发生变化

cookie和session的区别

cookie是浏览器保存在本地的文本内容,常用于保存登录状态,用户资料等小文。cookie具有时效性,cokkie内容会伴随请求发送给Tomcat,默认随着浏览器的关闭而销毁,可用c.setMaxAge(60*60*24)设置cookie的时效。

  cookie使用步骤

    1.创建cookies对象   Cookie c=new Cookies("name","value");

    2.使用 response.addCookie(c); 添加cookie对象

   3.Cookie [] cs=request.getCookies(); 获取用户所有的cookie

 

session(用户会话)则用于保存和“浏览器窗口”对应的数据,数据存储在tomcat服务器的内存中,具有时效性,tomcat默认为保存半小时,session通过浏览器cookie的cookieId值提取对应的用户相关信息,所以关闭浏览器后cookie失效则会失去原有的cookieId值,会导致对应的session数据提取不到,但实际上session不会随浏览器关闭而失效。

   session使用步骤(servlet中)

   1.获取到session对象 HttpSession s=request.getSession();

   2.可通过s.setAttribute(“name”,“value”)方法创建session的自定义属性,其和request.setAttribute()不同之处在于,创建的自定义属性是存储在session的存储空间当中。

session的生命周期

 Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

  Session什么时候失效?

  1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为30分钟。

  2. 调用Session的invalidate方法。

  Session对浏览器的要求:

  虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

  该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

  注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。

 

 

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lane_zhou/article/details/90516531
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 22:22:45
  • 阅读 ( 1176 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢