JSP学习之路(五)

一.状态管理

    1.为什么需要状态管理?

        web应用程序使用HTTP协议通信,而HTTP协议是"无状态"协议.即服务器一旦完成客户的请求之后,就断开连接.而同一个客户的下一次连接须重新建立网络连接

         服务器应用程序有时是需要判断是否是同一个客户发出的请求,因此有必要追踪同一个用户发出的一系列请求.

    2.什么是状态管理?

        将客户端和服务器端之间的多次交互当做一个整体看待,并将多次交互所涉及的数据也即是状态保存下来.

    3.状态管理常见的两种模式

        1>客户端状态管理技术:将状态保存在客户端.代表性的是Cookie技术

         2>服务器状态管理技术:将状态保存在服务器.代表性的是Session技术.

二.Cookie

    1.什么是cookie呢?

        浏览器向web服务器发送请求,服务器会将少量的数据以set-Cookie消息头的方式 发送给浏览器.浏览器会将这些数据保存起来.

        当浏览器再次访问服务器,会将这些数据以Cookie消息头的方式发送给服务器.

    2.cookie原理

    

    3.cookie的使用方法

         1>如何创建cookie

              Cookie cookie = new Cookie(String name,String value);

              response.addCookie(cookie);

         2>如何查询cookie

              获取cookie对象:Cookie[] c = request.getCookies();

              获取cookie对象的名称和值:String name = c.getName();               String value = c.getValue();

         3>如何修改cookie

Cookie[] cookies = request.getCookies();
if (cookies != null) {
	for (Cookie c : cookies) {
		if (c.getName().equals("city") ) {
			c.setValue("上海");
			response.addCookie(c);
		}
	}
}

        4>cookie的生存时间

           --默认情况下,浏览器会将cookie保存在内存当中,只要浏览器不关闭,Cookie就一直存在.如果希望关闭浏览器之后cookie                仍然存在,可以设置过期时间: void Cookie.setMaxAge(int seconds); seconds单位为秒,精度不是很高.

           >>seconds>0:浏览器要保存的cookie的最长时间为设置的参数值,如果超过指定的时间,浏览器会删除这个cookie.此时                       cookie是保存在硬盘中的.

           >>seconds=0:删除cookie.在修改cookie的生存时间为0之后,随着response发送回客户端,替换原有cookie,因生命周期到了                 即将该cookie删除.

           >>seconds<0:缺省值.浏览器会将cookie存到内存中.

      5>cookie编码
           cookie只能保存合法的Ascii码.如果要保存中文,需将中文转换为合法的ASCII字符,即编码.

           Cookie c = new Cookie("city",URLEncoder.encode("北京","utf-8"));

       6>cookie解码      

Cookie[] cookies = request.getCookies();
if(cookies != null) {
    Cookie c = cookies[0];
    String value = c.getValue();
    value = URLDecoder.decode(value,"utf-8");
}

          7>cookie的路径问

              浏览器在访问服务器上的某个地址时,会比较Cookie的路径与该路径是否匹配,只有匹配的cookie才会发送给服务器.

              cookie的默认路径等于添加这个Cookie的web组件的路径.

          8>发送cookie的条件

               要访问的路径必须是cookie的路径或其子路径时,浏览器才会发送cookie.

           9>如何设置cookie路径    

Cookie c = new Cookie("uname","jack");
c.setPath("/appName");
response.addCookie(c);

         10>cookie限制

              cookie可以被用户禁止

              cookie会将状态保存在浏览器端,不安全.对于敏感数据需加密后再保存到cookie中.

              cookie只能保存少量数据.大约4kb左右.

              cookie的个数是有限的.cookie只能保存字符串.

猜你喜欢

转载自blog.csdn.net/weixin_39085109/article/details/81078088