cookie - session的详细用法
更新时间:2023-12-30 19:34:01 阅读量: 教育文库 文档下载
- cookie推荐度:
- 相关推荐
相对路径与绝对路径
相对路径:
链接地址
状态管理
(1)什么是状态管理 将客户端(浏览器)与服务器之间多次交互当作一个整体来看,并且将多次交互所涉及的数据(状态)保存下来。 (2)如何进行状态管理 第一类方式:将状态保存在客户端(Cookie) 第二类方式: 将状态保存在服务器端(Session)
(3)cookie技术:
1) 什么是cookie? a,cookie是一种客户端的状态管理技术 b,当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器, 浏览器会将这些数据保存下来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送给服务器。 2)如何创建一个cookie? Cookie c = new Cookie(String name,String value); response.addCookie(c);
3)cookie的查询 Cookie[] request.getCookies(); 注意,该方法有可能返回null。 String cookie.getName(); String cookie.getValue(); 4)cookie的生存时间 cookie.setMaxAge(int seconds); 注意:单位是秒 seconds >0 : 浏览器会将cookie保存在硬盘上,超过 指定的时间,会删除该cookie。 seconds < 0 : 缺省值,浏览器会将cookie保存在内存 里,只要浏览器不关闭,cookie一直保存,当浏览器 关闭,cookie会被清空。 seconds = 0 : 删除cookie 比如,要删除一个名叫userId的cookie: Cookie c = new Cookie(\ c.setMaxAge(0); response.addCookie(c); 5)cookie的编码问题 cookie只能保存ascii字符,对于不合法的字符(比如中文)需要进行编码,即转换成合法的ascii字符。 可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换。 6)cookie的路径问题 a,什么是cookie的路径问题? 浏览器在向服务器发送请求时,会比较cookie的路径与要访问的服务器的路径是否匹配,只有 匹配的cookie才会发送给服务器。 b, cookie的默认路径 默认路径等于创建该cookie的组件的路径。 c,匹配规则 浏览器要访问的路径必须是cookie的路径或者 其子路径时,才会发送对应的cookie。 d, 设置cookie的路径cookie.setPath(String path); 比如 cookie.setPath(\ 将cookie的路径一般设置为应用名,这样可以保证 该cookie可以被该应用的其它组件都能访问到。 7) cookie的限制 a, cookie可以被用户禁止。 b, cookie不安全,敏感数据,比如密码,帐号等等需要加密。 c, cookie的大小有限制,大约是4k左右(具体大小跟浏览器有关系)。 d, cookie的个数也有限制,大约是300个(具体个数跟浏览器有关系)。 e, cookie只能够保存字符串。
8)保存和查询Cookie流程 a. 浏览器向服务器发送addCookie请求 服务器中的AddCookieServlet创建了两个Cookie:cookie和cookie2 b. 服务器端执行语句response.addCookie(cookie);生成消息头“set-cookie”, 并将两个Cookie以键值对的方式(“name=aaa”、“passwd=123”)存放在消息头中发 送给浏览器 c. 浏览器将Cookie信息保存到本地内存中 d. 浏览器继续向服务器发送请求(带着消息头cookie) 服务器端的FindCookieServlet找到Cookie信息,并显示给浏览器
(4)session技术
1)什么是session? a, session是一种服务器端的状态管理技术。 b, 当浏览器访问服务器时,服务器创建一个session对象(该对象有一个唯一的id号,称之为sessionId),服务器在默认情况下,会将sessionId以cookie的方式(set-cookie消息头)发送给浏览器,浏览器会将sessionId保存到内存。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId就可以找到之前创建的session对象。 2)如何获得session对象? 方式一: HttpSession s = request.getSession(boolean flag); 当flag=true时:服务器会先查看请求当中有没有sessionId,如果没有,则创建一个session对象。 如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果找不 到,则创建一个新的session对象。 当flag = false时:服务器会先查看请求当中有没有sessionId,如果没有,会返回null。 如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果 找不到,返回null。 方式二: HttpSession s = request.getSession(); 等价于 request.getSession(true)。 3)常用方法 String session.getId(); //obj类型最好实现Serializable接口,因为服务器在持久化session时,会使用java序列化协议。 session.setAttribute(String name,Object obj); //如果name对应的值不存在,返回null。 Object session.getAttribute(String name); //解除绑订 session.removeAttribute(String name); 4)session超时
所谓session的超时,指的是服务器会空闲时间过长的 session对象从内存空间里删除掉。原因是,过多的session 的对象会占用服务器过多的内存空间。 大部分服务器都会有一个缺省的超时限制,一般是 30分钟。可以修改服务器的缺省的超时限制。 比如,可以修改tomcat的web.xml配置文件(conf/web.xml)
我们在连接mysql数据库的时候一般都会在url后面添加 useUnicode=true&characterEncoding=UTF-8 ,但是问什么要添加呢? 添加的作用是:指定字符的编码、解码格式。
例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面: 1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。 2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。 注意:在xml配置文件中配置数据库utl时,要使用&的转义字符也就是& 例如: 1、用户禁止cookie,如何继续使用session?(了解) (1)当用户禁止cookie以后,服务器仍然会发送sessionId(以set-cookie消息头的方式),但是,浏览器会拒绝接受,这样,session机制会失效。 (2)可以使用url重写来解决该问题 a,什么是url重写? 如果某个组件需要session机制的支持,则不能直接使用该组件的地址去访问,而应该使用服务器生成的组件的地址(会在组件的地址后面添加sessionId)去访问。 b,如何重写? //用于链接地址,表单提交地址。 response.encodeURL(String url); //用于重定向 response.encodeRedirectURL(String url); 比如: response.sendRedirect(response.encodeRedirectURL(\; 转发不用考虑。 2、session的优缺点 优点: session相对安全 session能够保存的数据类型更丰富 session能够保存的数据大小更大 缺点: session需要将所有数据写在服务器端,所以,服务器会占用过多的内存空间。可以考虑使用cookie来代替或者使用数据库来保存状态(即数据)。 servlet容器如何处理请求资源路径? 比如,在浏览器地址栏输入http://ip:port/web04/abc.html 请求资源路径是: /web04/abc.html 1, 容器依据应用名找到应用所在的文件夹。 2,容器会假设要访问的是一个servlet,会比较web.xml文件中 过滤器 (1)什么是过滤器? servlet规范当中定义的一种特殊的组件,用来拦截容器的调用过程并进行相应的处理。 (2)如何写一个过滤器 step1,写一个java类,实现Filter接口。
正在阅读:
2017年12月23日是什么日子03-10
2D游戏中的碰撞检测04-20
泰合嘉园小高层施工组织设计 - 图文03-09
英语口语常用日常交际用语03-08
养肝片功效如何生产厂家价格多少07-24
小学生演讲稿——我热爱花朵里的祖国06-09
高中生物选修三测试题106-04
单词起源,英语单词02-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 用法
- session
- cookie
- 详细
- 英语泛读教程3 - - 课文翻译 完整版
- 2018年7月1日 每周一测-学易试题君之每日一题君2017-2018学年下学期七年级数学人教版(期末复习)
- 机械原理试卷(手动组卷)10
- 多种图案霓虹灯控制器设计综合课设
- 学习资料汇总—Python(转载)
- 最新人教版七年级上册语文第一次月考试卷
- 财务管理模拟试题5
- 二人转唱词《白蛇传》
- 高三物理考前专项练习(选择题)-精选教学文档
- 小区智能监控系统方案
- 代理人考试复习资料 考试真题(答案版),江苏版
- 界山玉湖中心小学“一校一品”创建规划 2
- 学雷锋月活动策划
- 外国人签证证件申请表2016
- 小学生四年级家长会班主任发言稿
- 执行力学习心得
- 流行病实习课1
- 毕业设计 基于Multisim - 11的模拟乘法器应用设计与仿真
- (一)招聘岗位炼油化工装置工艺技术管理岗招聘人数
- 上海医学院历年组织胚胎学试题汇总(精品)