热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jsp学习与提高(三)——JSPCookie处理

1.cookie是什么Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTPcookie

1.COOKIE是什么

COOKIE是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP COOKIE的支持。

通常有三个步骤来识别回头客:

  • 服务器脚本发送一系列COOKIE至浏览器。比如名字,年龄,ID号码等等。
  • 浏览器在本地机中存储这些信息,以备不时之需。
  • 当下一次浏览器发送任何请求至服务器时,它会同时将这些COOKIE信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情

2.使用JSP设置COOKIE

(1)创建一个COOKIE对象: 调用COOKIE的构造函数,使用一个COOKIE名称和值做参数,它们都是字符串。

COOKIE COOKIE = new COOKIE("key","value");

请务必牢记,名称和值中都不能包含空格或者如下的字符:

[ ] ( ) = , " / ? @ : ;

(2) 设置有效期:调用setMaxAge()函数表明COOKIE在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。

COOKIE.setMaxAge(60*60*24);

(3) 将COOKIE发送至HTTP响应头中:调用response.addCOOKIE()函数来向HTTP响应头中添加COOKIE。

response.addCOOKIE(COOKIE);


3.实例演示

main.jsp 文件代码如下所示:

<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> <% // 编码&#xff0c;解决中文乱码 String str &#61; URLEncoder.encode(request.getParameter("name"),"utf-8"); // 设置 name 和 url COOKIE COOKIE name &#61; new COOKIE("name",          str); COOKIE url &#61; new COOKIE("url",              request.getParameter("url")); // 设置COOKIE过期时间为24小时。 name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // 在响应头部添加COOKIE response.addCOOKIE( name ); response.addCOOKIE( url ); %>

设置 COOKIE

  • 网站名: <%&#61; request.getParameter("name")%>

  • 网址: <%&#61; request.getParameter("url")%>

以下是一个简单的 HTML 表单通过GET方法将客户端数据提交到 main.jsp 文件中,并设置 COOKIE&#xff1a;



charset&#61;"utf-8"> action&#61;"main.jsp" method&#61;GET> 站点名: type&#61;"text" name&#61;"name"> /> 网址: type&#61;"text" name&#61;"url" /> type&#61;"submit" value&#61;"提交" />


4.使用 JSP 读取 COOKIE

想要读取COOKIE&#xff0c;您就需要调用request.getCOOKIEs()方法来获得一个javax.servlet.http.COOKIE对象的数组&#xff0c;然后遍历这个数组&#xff0c;使用getName()方法和getValue()方法来获取每一个COOKIE的名称和值。

让我们来读取上个例子中的COOKIE, 以下为 COOKIE.jsp 文件代码&#xff1a;

<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> http-equiv&#61;"Content-Type" content&#61;"text/html; charset&#61;UTF-8"> <% COOKIE COOKIE &#61; null; COOKIE[] COOKIEs &#61; null; // 获取COOKIEs的数据,是一个数组 COOKIEs &#61; request.getCOOKIEs(); if( COOKIEs !&#61; null ){ out.println("

查找 COOKIE 名与值

"); for (int i &#61; 0; i < COOKIEs.length; i&#43;&#43;){ COOKIE &#61; COOKIEs[i]; out.print("参数名 : " &#43; COOKIE.getName()); out.print("
"); out.print("参数值: " &#43; URLDecoder.decode(COOKIE.getValue(), "utf-8") &#43;"
"); out.print("------------------------------------
"); } }else{ out.println("

没有发现 COOKIE

"); } %>


5.使用JSP删除COOKIE

使用JSP删除COOKIE

删除COOKIE非常简单。如果您想要删除一个COOKIE&#xff0c;按照下面给的步骤来做就行了&#xff1a;

  • 获取一个已经存在的COOKIE然后存储在COOKIE对象中。
  • 将COOKIE的有效期设置为0。
  • 将这个COOKIE重新添加进响应头中。

实例演示

下面的程序删除一个名为"name"的COOKIE&#xff0c;当您第二次运行COOKIE.jsp时&#xff0c;name 将会为 null。

<%&#64; page language&#61;"java" contentType&#61;"text/html; charset&#61;UTF-8" pageEncoding&#61;"UTF-8"%> <%&#64; page import&#61;"java.net.*" %> http-equiv&#61;"Content-Type" content&#61;"text/html; charset&#61;UTF-8"> <% COOKIE COOKIE &#61; null; COOKIE[] COOKIEs &#61; null; // 获取当前域名下的COOKIEs&#xff0c;是一个数组 COOKIEs &#61; request.getCOOKIEs(); if( COOKIEs !&#61; null ){      out.println("

查找 COOKIE 名与值

"); for (int i &#61; 0; i < COOKIEs.length; i&#43;&#43;){ COOKIE &#61; COOKIEs[i]; if((COOKIE.getName( )).compareTo("name") &#61;&#61; 0 ){ COOKIE.setMaxAge(0); response.addCOOKIE(COOKIE); out.print("删除 COOKIE: " &#43; COOKIE.getName( ) &#43; "
"); } out.print("参数名 : " &#43; COOKIE.getName()); out.print("
"); out.print("参数值: " &#43; URLDecoder.decode(COOKIE.getValue(), "utf-8") &#43;"
"); out.print("------------------------------------
"); } }else{      out.println("

没有发现 COOKIE

"); } %>

转:https://www.cnblogs.com/tongcc/p/10964892.html



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
author-avatar
手机用户2502887447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有