学习笔记之jsp状态管理之cookie
发布日期:2022-02-17 02:39:51
浏览次数:49
分类:技术文章
本文共 3709 字,大约阅读时间需要 12 分钟。
jsp状态管理
http协议的无状态性
无状态是指 当浏览器放松请求给服务器的时候,服务器响应客户端请求。但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器。 简单地说,就是服务器不会去记得你,所以就是无状态协议 保存用户的状态的两大机制: Session Cookie(客户端的技术) 什么是CookieWeb服务器保存在客户端的一系列文本信息
1.判断是否已经登录网站(保存了登录信息) 2.购物车的处理 Cookie- 对特定对象的追踪
- 保存用户网页浏览记录与习惯
- 简化登录 Cookie容易泄露用户信息
Jsp中创建与使用Cookie
创建Cookie对象
Cookie newCookie = new Cookie(String key,Object value)
写入Cookie对象
response.addCookie(newCookie);
读取Cookie对象
Cookie[]cookies=request.getCookies();
void setMaxAge(int expiry) 设置cookie有效期,以秒为单位
void setValue(String value)在cookie创建后,对cookie进行赋值 String getName()获取cookie的名称 String getValue()获取cookie的值 int getMaxAge()获取cookie的有效时间,以秒为单位<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.net.*" %>首页 今天的日期<%= new java.util.Date().toString()%><% request.setCharacterEncoding("utf-8"); String username=""; String password=""; Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0){ for (Cookie c:cookies){ if(c.getName().equals("username")){ username=URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")){ password=URLDecoder.decode(c.getValue(),"utf-8"); } } }%>
Title 登录成功
<% request.setCharacterEncoding("utf-8"); //首先判断用户是否选择了记住 String[] isUseCookies =request.getParameterValues("isUseCookies"); if(isUseCookies!=null&&isUseCookies.length>0) { //把用户名和密码保存在Cookie对象里面 String username = URLEncoder.encode(request.getParameter("username"),"utf-8"); String password =URLEncoder.encode( request.getParameter("password"),"utf-8"); Cookie usernameCookie = new Cookie("username",username); Cookie passwordCookie = new Cookie("password",password); response.addCookie(usernameCookie); response.addCookie(passwordCookie); usernameCookie.setMaxAge(864000); passwordCookie.setMaxAge(864000); } else{ Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0){ for (Cookie c:cookies){ if(c.getName().equals("username")||c.getName().equals("password")){ c.setMaxAge(0);//设置Cookie失效 response.addCookie(c);//重新保存 } } } } %> 查看用户信息
<%-- Created by IntelliJ IDEA. User: HJCD Date: 2020/5/16 Time: 11:44 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" import="java.net.*" %>Title 用户信息
<% request.setCharacterEncoding("utf-8"); String username=""; String password=""; Cookie[] cookies = request.getCookies(); if(cookies!=null&&cookies.length>0){ for (Cookie c:cookies){ if(c.getName().equals("username")){ username = URLDecoder.decode(c.getValue(),"utf-8"); } if(c.getName().equals("password")){ password = URLDecoder.decode(c.getValue(),"utf-8"); } } } %> 用户名:<%=username%> 密码:<%=password%>
以上3个jsp页面使用了cookie存储信息
1.URLEncoder.encode(String s, String enc) 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式URLDecoder.decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。2.发送的时候使用URLEncoder.encode编码,接收的时候使用URLDecoder.decode解码,都按指定的编码格式进行编码、解码,可以保证不会出现乱码
3.主要用来http get请求不能传输中文参数问题。http请求是不接受中文参数的。
这就需要发送方,将中文参数encode,接收方将参数decode,这样接收方就能收到准确的原始字符串了。
转载地址:https://blog.csdn.net/qq_39814938/article/details/106157682 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月09日 10时53分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在 Centos7 下使用 Docker 快速搭建 Hadoop 集群
2019-04-27
Python web 框架 Flask 蓝图的正确使用姿势
2019-04-27
领扣LintCode算法问题答案-1053. 至少是其他数字两倍的最大数
2019-04-27
领扣LintCode算法问题答案-1054. 最少费用的爬台阶方法
2019-04-27
领扣LintCode算法问题答案-1056. 请找出大于目标的最小字母
2019-04-27
领扣LintCode算法问题答案-1062. 洪水填充
2019-04-27
领扣LintCode算法问题答案-1068. 寻找数组的中心索引
2019-04-27
领扣LintCode算法问题答案-1071. 词典中最长的单词
2019-04-27
领扣LintCode算法问题答案-1078. 数组的度
2019-04-27
领扣LintCode算法问题答案-1079. 连续子串计数
2019-04-27
领扣LintCode算法问题答案-1080. 最大的岛
2019-04-27
【精】LintCode领扣算法问题答案:1082. 员工的重要度
2019-04-27
领扣LintCode算法问题答案-1085. 最长的单一路径
2019-04-27
【精】LintCode领扣算法问题答案:1086. 重复字符串匹配
2019-04-27
SMTP 550错误
2019-04-27
Functional Interface JDK1.8
2019-04-27
windows 编写的脚本 无法在linux下运行
2019-04-27
Hive函数大全
2019-04-27
大数据系列的默认端口(hbase,hadoop,hived等)
2019-04-27
Hive 创建表的三种方式
2019-04-27