JavaWeb基础-Session和Cookie
JSP状态管理
http的无状态性,服务器不会记得发送请求的浏览器是哪一个
保存用户状态的两大机制:session和cookie
Cookie:是web服务器保存在客户端的一系列文本信息
作用:对特定对象的追踪,保存用户浏览记录和习惯,简化登录,容易泄露安全信息
Cookie
Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。
方法:

使用:
创建Cookie对象,名称和值不能包含[ ] ( ) = , " / ? @ : ;
Cookie newCookie = new Cookie(String key,Object values);
设置有效值,调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。
cookie.setMaxAge(606024);
写入Cookie对象,将cookie发送至HTTP响应头中
Response.addCookie(newCookie);
读取Cookie对象
Cookie[] cookie= request.getCookie();
JSP Cookie 处理需要对中文进行编码与解码,方法如下:
String str = java.net.URLEncoder.encode("中文","UTF-8"); //编码
String str = java.net.URLDecoder.decode("编码后的字符串","UTF-8");// 解码
例子:
使用Cookie保存用户信息
<%
request.setCharacterEncoding("utf-8");
//首先判断用户是否选择了记住登录状态
String[] isUserCookies = request.getParameterValues("isUserCookie");
if (isUserCookies != null && isUserCookies.length > 0) {
//把用户名和密码保存在Cookie对象里
String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
//解决无法在Cookie中保存中文字符串的问题(添加java.net.*包)
String password = URLEncoder.encode(request.getParameter("password"),"utf-8");
Cookie usernameCookie = new Cookie("username", username);
Cookie passwordCookie = new Cookie("password", password);
usernameCookie.setMaxAge(864000);
passwordCookie.setMaxAge(864000);//设置最大的生存期间为10天
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
} else {
Cookie[] cookie = request.getCookies();
if (cookie != null && cookie.length > 0) {
for (Cookie c : cookie) {
if (c.getName().equals("username") || (c.getName().equals("password"))) {
c.setMaxAge(0);//设置保存Cookie失效
response.addCookie(c);//重新保存
}
}
}
}
%>
提取Cookie中的用户信息
<%
request.setCharacterEncoding("utf-8");
String username="";
String password="";
Cookie[] cookie = request.getCookies();
if (cookie != null && cookie.length > 0) {
for (Cookie c : cookie) {
if (c.getName().equals("username")){
username = URLDecoder.decode(c.getValue(),"utf-8");
}
if (c.getName().equals("password")){
password = URLDecoder.decode(c.getValue(),"utf-8");
}
}
}
%>
Session

session和Cookie的区别
1相同点,都会保存用户状态,都会过期
2区别 session在服务端保存用户信息,Cookie在客户端保存用户信息;session保存的是Object类型,Cookie保存的是String类型;session随着会话的结束而将其数据销毁,Cookie可以长期的保存在客户端;session一般保存是重要的用户信息,Cookie保存不重要的用户信息。
JavaWeb基础-Session和Cookie的更多相关文章
- javaweb学习——session和Cookie实现购物车功能
1.创建Book类,实现对图书信息的封装. package cn.it.sessionDemo.example1; import java.io.Serializable; /** * 该类实现对图书 ...
- JavaWeb基于session和cookie的数据共享
在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样, ...
- 基础-session,cookie,jsp,EL,JSTL
会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. kookie是在服务器端创建的,返回给浏览器,在浏览器的目录中保存了,下一次 ...
- 一、基础篇--1.1Java基础-Session和Cookie的区别【转】
https://www.cnblogs.com/zlw-xf/p/8001383.html 1:cookie数据存放在客户的浏览器上(客户端),session数据放 @1:cookie不是很安全,别人 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- JavaWeb—Session与Cookie
概念 会话:指从一个浏览器窗口打开到关闭期间的一系列动作(可简单理解为用户开一个浏览器,点击多个链接,访问服务器多个web资源,然后关闭浏览器). HTTP协议是无状态协议:每次连接(比如同一个网站的 ...
- day 62.3 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...
- day 73 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...
- Django基础六之cookie和session
Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...
随机推荐
- 雷林鹏分享:查看 XML 文件
查看 XML 文件 在所有主流的浏览器中,均能够查看原始的 XML 文件. 不要指望 XML 文件会直接显示为 HTML 页面. 查看 XML 文件 - Tove Jani Reminder Don' ...
- LeetCode--008--字符串转换整数 (atoi)(java)
请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之 ...
- centos 安装 和 linux 简单命令
1. centos 安装 参照:https://www.cnblogs.com/tiger666/articles/10259102.html 安装过程注意点: 1. 安装过程中的选择安装Basic ...
- Fiddler简介及web抓包
1.Fiddler界面如下 2.Fiddler开关 界面左下角或点击F12控制Fiddler开关,开关是“Capturing”: 启动之后,Fiddler代理永远是开着的. 3.浏览器代理 ...
- 小程序模板中data传值有无...
A:<template is="gemSelectColor" data="{{optionData}}" />B:<template is= ...
- Vue之单文件组件的数据传递,axios请求数据及路由router
1.传递数据 例如,我们希望把父组件的数据传递给子组件. 可以通过props属性来进行传递. 传递数据三个步骤: 步骤1:在父组件中,调用子组件的组名处,使用属性值的方式往下传递数据 <Menu ...
- hadoopMR自定义输入格式
输入格式 1.输入分片与记录 2.文件输入 3.文本输入 4.二进制输入 5.多文件输入 6.数据库格式输入 详细的介绍:https://blog.csdn.net/py_123456/ar ...
- Spring注解之@Import
/** * Indicates one or more {@link Configuration @Configuration} classes to import. * 表示import 一个或多个 ...
- Vue 项目骨架屏注入与实践
作为与用户联系最为密切的前端开发者,用户体验是最值得关注的问题.关于页面loading状态的展示,主流的主要有loading图和进度条两种.除此之外,越来越多的APP采用了“骨架屏”的方式去展示未加载 ...
- 牛客第二场Dmoney
链接:https://www.nowcoder.com/acm/contest/140/D 来源:牛客网 题目描述 White Cloud has built n stores numbered to ...