最近在工作中,牛逼的前端为追求更好的体验,如对于无需与后台请求交互(纯前端的页面跳转、页面内容的展示),但Session已过期,用户操作后提交,后台再提示已过期,给用户的体验不好,于是想到了Cookie,具体如下:
1.后台过依然在过滤器中以Session来进行是否过期的判断
2.在过滤器中增加设置Cookie的逻辑,过期时间同Session,即从Sesion中获取用户信息,如果不为空,说明没过期,然后设置Cookie(name为用户ID)
3.前端从Cookie中获取用户ID,如能获取到,说明未过期,即无需做跳转,否则跳转到登录页面
JAVA:
String userId = (String) request.getSession().getAttribute(Constants.SESSION_KEY_USER_ID); if (userId != null) { //cookie 同属性(name、value、path)对象,重复添加会覆盖 Cookie cookie = new Cookie(Constants.COOKIE_KEY_USER_ID, userId); cookie.setMaxAge(Constants.SESSION_TIME_OUT); cookie.setPath(request.getContextPath() + "/"); response.addCookie(cookie); }
前端:
var userId = $.cookie('userId'); if(!userId){ window.location.href='login.html?'+new Date().getTime(); }
附:
一.Cookies入门
Cookies是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。IE浏览器把Cookie信息保存在类似于C://windows//cookies的目录下。
当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。
cookies给网站和用户带来的好处非常多:
1.Cookie能使站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径
2.Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告
3.Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
4.Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务
二.cookie过期时间设置方式
cookie.setMaxAge(0);//不记录cookie cookie.setMaxAge(-1);//会话级cookie,关闭浏览器失效 cookie.setMaxAge(60*60);//过期时间为1小时
三.JS设置Cookie
1.jQuery方法(当然,前提是要引入jquery.cookie.js):
var date = new Date(); var loginCount = 0; date.setTime(date.getTime()+10*1000);//只能这么写,10表示10秒钟 $.cookie('loginCount', ++loginCount, {expires: date});
2.js方法:
document.cookie='loginCount=1;expires='+new Date()+';path=/';
3.检查cookies是否可用
方法一:
jquery的$.cookie("cookie名称");判断是否为空就可以
方法二:
$(document).ready(function() {var dt = new date();dt.setseconds(dt.getseconds() + 60);document.cookie = "cookietest=1; expires=" + dt.togmtstring();var cookiesenabled = document.cookie.indexof("cookietest=") != -1;if(!cookiesenabled){//cookies不能用……..}});
四.Cookie中的path与domain属性详解
1.domain表示的是cookie所在的域,默认为请求的地址,如网址为www.jb51.net/test/test.aspx,那么domain默认为www.jb51.net。而跨域访问,如域A为t1.test.com,域B为t2.test.com,那么在域A生产一个令域A和域B都能访问的cookie就要将该cookie的domain设置为.test.com;如果要在域A生产一个令域A不能访问而域B能访问的cookie就要将该cookie的domain设置为t2.test.com。
2.path表示cookie所在的目录,asp.net默认为/,就是根目录。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个cookie1的path为/test/,cookie2的path为/test/cd/,那么test下的所有页面都可以访问到cookie1,而/test/和/test/dd/的子页面不能访问cookie2。这是因为cookie能让其path路径下的页面访问。
3.浏览器会将domain和path都相同的cookie保存在一个文件里,cookie间用*隔开。
4.含值键值对的cookie:以前一直用的是name=value单键值对的cookie,含多个子键值对的cookie格式是name=key1=value1&key2=value2。可以理解为单键值对的值保存一个自定义的多键值字符串,其中的键值对分割符为&,当然可以自定义一个分隔符,但用asp.net获取时是以&为分割符。
相关推荐
NodeJS入门项目案例(Express+Mysql)是一个适合初学者的教程,旨在引导你进入Node.js服务端开发的世界。在这个项目中,我们将使用Express框架,一个简洁且强大的Web应用开发框架,以及Mysql,一个流行的开源关系型...
【JavaWeb程序设计入门课件Cookie对象共6页.pdf....这个入门课件可能涵盖了以上内容,并通过6页的PDF深入解释了Cookie对象的使用方法和实践案例。学习和理解这些知识点对于初学者来说,是迈向JavaWeb开发的重要一步。
《C#+Web应用程序入门经典源码》是一本面向初学者的教程,旨在通过实例项目来讲解C#语言和ASP.NET框架在开发Web应用程序时的核心概念和技术。这本书的原书源码提供了丰富的实践材料,帮助读者深入理解理论知识,并将...
在实际代码实例中,你可能会遇到文件上传、用户认证和授权、状态管理(比如Session和Cookie)、邮件发送、缓存管理等常见功能的实现。ASP.NET 3.5提供了内置的机制来处理这些问题,例如,使用FileUpload控件处理文件...
这个"Html5从入门到精通-实例源程序"的资源包,是针对学习者提供的一套实战教程,由清华大学出版社出版,旨在帮助初学者快速掌握HTML5的基础知识并能实际应用。 HTML5的主要更新和改进包括: 1. **语义化标签**:...
本资源"ASP.NET 3.5入门经典实例锦集,C#版源代码程序"是一份非常宝贵的参考资料,适合初学者快速掌握ASP.NET 3.5和C#的基础知识。通过实际操作和学习这些实例,开发者能够更好地理解ASP.NET 3.5的工作原理以及如何...
《目前最新最好的PHP入门实例教程 CHM》是一本专为初学者设计的PHP学习资源,旨在帮助新手快速掌握PHP编程语言的基本概念、语法和实践应用。CHM(Compiled Help Manual)格式是一种常见的Windows帮助文件格式,它将...
本资源"《C#网络编程及应用案例四》"是针对初学者设计的,旨在帮助新接触C#的朋友理解如何利用C#进行网络编程。尽管这个资源可能不适合已经熟练掌握C#的开发者,但对于初学者来说,它提供了实用的示例和实践经验,有...
这个VB6.0项目可以帮助开发者理解如何与网络交互,特别是如何读取和修改Cookie,这对于网页自动化、测试或隐私保护等场景都有一定的应用价值。 描述中重复的“VB6.0改COOKIE浏览器带源码”强调了这个项目的特点,即...
本书列举了大量的小型实例、综合实例和部分项目案例;所附DVD光盘内容有同 步视频讲解、实例源程序、“实践与练习”答案等;本书的服务网站提供了模块 库、案例库、题库、素材库、答疑服务。 本书内容详尽,实例...
"Java应用实例彻查"这个资源旨在帮助初学者和有一定经验的开发者深化对Java语言的理解,通过实例学习来提升编程技能。 一、Java入门 对于初学者来说,Java入门阶段主要涉及以下几个知识点: 1. **基础语法**:包括...
《PHP 7从入门到精通(视频教学版)》循序渐进地介绍了PHP 7开发动态网站的主要知识和技能,提供了大量的PHP应用实例供读者实践。每一章节都清晰讲述了代码作用及其编写思路,使读者能在*短时间内迅速掌握PHP的应用...
在IT行业中,PHP是一种广泛应用的服务器端脚本语言,...通过"PHP新手入门案例",初学者可以通过实例学习这些概念,逐步提升PHP编程技能。在实践中,不断编写和运行代码,结合注释理解,将有助于更好地掌握这些知识点。
此外,书中的实例应用部分可能会涉及实际的项目开发流程,比如搭建博客系统、电商网站或者论坛,通过实践巩固理论知识,让读者能够将所学应用于实际工作。 总之,《PHP+MySQL网络开发从入门到精通》这本书旨在帮助...
3. **状态管理**:讲述如何在ASP.NET中保持用户状态,如ViewState、Session、Cookie等,并讨论它们的优缺点和应用场景。 4. **数据访问**:通过ADO.NET和Entity Framework介绍如何与数据库交互,进行数据的读取、...
本教程将深入探讨ASP.NET的应用与开发,通过一系列案例来帮助学习者掌握这项技术。 首先,ASP.NET的核心概念包括Web Forms、MVC(Model-View-Controller)和Web API。Web Forms是ASP.NET最初提供的编程模型,基于...
本课程“Java Web应用开发从入门到实战”旨在为初学者提供一个全面的学习路径,逐步掌握这一领域的核心技能。 首先,我们需要了解Java语言的基础。Java是一种面向对象的编程语言,具有跨平台性、稳定性和高效性。...
在这个"asp.net3.5基础知识入门案例"中,PPT可能包含详细的教学步骤,讲解以上各个知识点,并通过实际案例演示如何应用。通过这些案例,你可以逐步理解并掌握ASP.NET 3.5的开发技能,为将来更高级的Web开发打下坚实...
JSP 程序设计从入门到精通 本书主要介绍了 JSP 程序设计的基础知识和高级技术,涵盖了 JSP 的概述、环境安装配置、语法介绍、变量、运算符、控制结构、函数、数组、对象等方面的内容。 JSP 概述 JSP(Java Server...
《PHP从入门到精通(第2版)》列举了大量的小型实例、综合实例和部分项目案例;所附DVD光盘内容有同步视频讲解、实例源程序、“实践与练习”答案等;《PHP从入门到精通(第2版)》的服务网站提供了模块库、案例库、题库...