Cookie

//创建一个Cookie对象
Cookie cookie = new Cookie("username","JACK");
//在客户端存储的时间(生命周期)单位是秒 7天 7*24*60*60
//如果这里设置为0 就表示客户端不保存该cookie 即临时cookie
//如果设置为-1 就表示客户端关闭之后就删除该cookie 也可以称之为临时cookie
cookie.setMaxAge(-1);
//设置cookie在客户端存放的路径 如果不设置,默认在本项目名称目录下
cookie.setPath("/");
//将创建完好的cookie存放在response相应对象中
response.addCookie(cookie);

如果浏览器端拒绝存储cookie信息,就会导致JSESSIONID的值不能正常到达客户端,
那么客户端向服务器发送请求时,就无法将JSESSIONID的值带回到服务器中,从而导致找不到自己的会话Session
怎么解决:我们可以使用URL地址重写的办法解决

因为cookie在客户端只允许存储4k的数据,那么实际上cookie存储了3k数据就已经到达了一个极限了,cookie就会显得力不从心了,
所以在B/S交互中就需要一个更大的存储数据对象,这就是session存在的重要起因。

Session会话

当用户通过浏览器访问服务器的应用程序时,程序会为每一个用户创建一个session对象,实际上就是在内存中分配一块内存给该用户使用
该对象可以存储大量的数据;
如果浏览器端禁用了cookie功能,那么服务器端传递给浏览器端的jsessionid就没有办法保存,
这时候当用户再一次向服务器发送请求时,服务器会因为无法找到为用户创建好的session,
就会再次创建一个session对象,这时就需要我们考虑如何为服务器减少创建session对象的次数;
使用response对象的两个方法,保证服务端和浏览器端使用的是用一个jsessionid值。
URL重写
1--servlet中涉及向客户端输出页面元素的时候,可以在相应的请求地址外面包上一层方法,
  也就是说使用response.encodeURL(“请求地址”);为请求地址添加一个JSESSIONID的值
2--servlet中涉及跳转到新的页面时,可以使用response.encodeRedirectURL(“请求地址”);为请求地址添加一个JSESSIONID的值
3--在jsp页面中,涉及到的请求地址,可以使用jstl标签中url的value属性进行设置
  前提是需要导入两个jar包 jstl-1.2.jar 和 standard-1.1.2.jar
  <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
  如:<a href=<c:url value="encodeURL.action"></c:url>>encodeURL</a>
4--在jsp页面中使用:<a href="<%=response.encodeURL("encodeURL.action")%>">encodeURL</a>

Cookie / Session / URL重写的更多相关文章

  1. cookie session URL重写 与考试

    状态管理.Cookie.Session.URL重写 HTTP协议:无状态的连接(每次连接都是新的请求)1.隐藏字段 <input type="hidden" name=&qu ...

  2. 关于session的实现:cookie与url重写

    本文讨论的语境是java EE servlet. 我们都知道session的实现主要两种方式:cookie与url重写,而cookie是首选(默认)的方式,因为各种现代浏览器都默认开通cookie功能 ...

  3. javaWeb学习总结(7)-关于session的实现:cookie与url重写

    本文讨论的语境是java EE servlet.我们都知道session的实现主要两种方式:cookie与url重写,而cookie是首选(默认)的方式,因为各种现代浏览器都默认开通cookie功能, ...

  4. (转)Session URL重写

    Session URL重写 发表于 2012 年 3 月 5 日 Session URL重写,保证在客户端禁用或不支持COOKIE时,仍然可以使用Session session机制.session机制 ...

  5. Session,Cookie,jsessionid,Url重写

    在一些投票之类的场合,我们往往因为公平的原则要求每人只能投一票,在一些WEB开发中也有类似的情况,这时候我们通常会使用COOKIE来实现,例如如下的代码: < % cookie[]cookies ...

  6. 【Head First Servlets and JSP】笔记12:URL重写

    1.会话管理的核心在于“交换会话ID”,来回传递cookie是最简单的方法,容器通过客户端发来的JSSESIONID查找匹配的对话. 2.如果浏览器禁用了cookie,那就意味着浏览器将忽略响应首部中 ...

  7. Servlet之会话(Session)以及会话追踪技术(Cookie),(URL重写)和(隐藏表单域)

    Session 什么是会话? 会话: Web应用中的会话 指的是一个客户端浏览器与Web服务器之间连续发生的一系列请求和响应的过程 会话状态: Web服务器和浏览器在会话的过程中产生的状态信息 作用: ...

  8. 隐藏表单域、URL重写、cookie、session

    隐藏表单域: 隐藏域是用来收集或发送信息的不可见元素,对于网页的访问者来说,隐藏域是看不见的.当表单被提交时,隐藏域就会将信息用你设置时定义的名称和值发送到服务器上. 代码格式:<input t ...

  9. 客户端禁用cookie情况下的URL重写

    客户端禁用cookie情况下的URL重写: servlet: package com.stono.servlet.listenerorder; import java.io.IOException; ...

随机推荐

  1. 【转】Django+Mysql安装配置详解(Linux)

    参考:http://dmyz.org/archives/110 报错TemplateDoesNotExist at 解决: 新建mysite/articles/article.html文件: 文件内容 ...

  2. ios之UI中自定义cell

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. linux 密码安全脚本

    #!/bin/bash #by:osx1260@.com DIESO=/etc/pam.d PAMSO=$(ls $DIESO/* |awk -F'/' '{print $4}') NEPAMUN=' ...

  4. python seq

    missing parentheses in call to print  ==> python高版本 print("") name 'raw_input' is not d ...

  5. 全英文版时间格式化07/29/2010 4:14:01 PM

    之前格式化,AM PM出不来,总是显示上午 下午 aspx页面的绑定: <%#Eval("AddDate") == DBNull.Value ? "" : ...

  6. Prime Land

    http://poj.org/problem?id=1365 题意:给定一个数字n的拆分形式,然后让你求解n-1的值: 解析:直接爆搞 // File Name: poj1365.cpp // Aut ...

  7. oc学习之路----application.keyWindow.rootViewController与self.window.rootViewController与[self.window makeKeyAndVisible];小发现

    刚才调试的时候除了一些小问题,有一段代码要重用 NSString *key = @"CFBundleVersion"; // 取出沙盒中存储的上次使用软件的版本号 NSUserDe ...

  8. codeforces 721C (拓扑+dp)

    题意就是某个人去游览,起点是1点,终点是n点,他总的游览时间不能超过t,第一行给你3个数字,点的个数n,边的个数m,时间t,然后底下m行数据,每行代表一条边,边的起点,终点和权值(走过去花的时间),然 ...

  9. redis多实例运行

    有的时候会遇到一种情况,在一台服务器,一个redis实例会出现不够用的情况 那么这时我们可以创建多个实例,以满足不同的业务需求和功能需求 1.首先创建一个运行redis的普通用户 useradd -s ...

  10. iOS Xcode8的适配

    1.打开应用后打印了很多的log信息 解决方法: Xcode8里边 Edit Scheme... -> Run -> Arguments, 在Environment Variables里边 ...