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. linux系统利用yum安装其他软件或服务

    1.下载yum的配置源(最好用网易163的源,也可以使其他的源) wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo 下载到 /etc/ ...

  2. 都说ConcurrentDictionary<TKey, TValue>有陷阱

    看这么几句解释(英文原帖): private static void ConcurrentDictionary() { var dict = new ConcurrentDictionary<i ...

  3. 活用maven使web.xml可以用maven变量

    活用maven使web.xml可以用maven变量 废话不多说,直接上代码 <build> <finalName>${finalWarName}</finalName&g ...

  4. 【Java基础】final关键字总结

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  5. boj1267 Infinite’s Cave 树形dp + 背包

    题目链接:http://acm.bupt.edu.cn/onlinejudge/newoj/showProblem/show_problem.php?problem_id=1267         / ...

  6. 10个强大的Apache开源模块

    1.单点登录模块 LemonLDAP LemonLdap可以很棒地实现Apache的SSO功能,并且可以处理超过 20 万的用户请求.LemonLdap支持Java, PHP, .Net, Perl, ...

  7. javascript闭包问题

    <script type="text/javascript"> window.onload = function(){ var name = "The Win ...

  8. maven工程-eclipse红叹号

    从公司代码库中check下一份完整代码,在其他开发机器上都能正确构建,唯独一台机器无法正确构建,查证了2个小时,最后还是死在了最基础的问题上 maven工程 工程如下,创建了一个新的maven工程,j ...

  9. Java-日历表

    效果图 import java.util.*; import java.text.*; class demo { public static void main(String[] args) { // ...

  10. Unity: How to build and debug external DLLs

    法一:http://forum.unity3d.com/threads/161685-How-to-build-and-debug-external-DLLs http://docs.unity3d. ...