Cookie和Session
来源:互联网 发布:赛车游戏网络同步 编辑:程序博客网 时间:2024/05/24 06:10
Cookie 和 Session
1 修改jsp页面的编码 window——jsp——jsp File
1.会话:一次交互流程,交互开始会话开始,交互结束会话结束。
2.web中 :浏览器连接到服务器,会话开始,浏览器结束,会话结束。
3.Cookie和session是保存会话中产生的数据,
Cookie——是保存在浏览器(客户端),生命周期可设置。
Session——是保存在服务器 生命周期是会话结束终止使用,但是存在于服务器中。
4.Cookie的API
Cookie C = new Cookie(”键name”,”值”)键自定义
response.addCookie(C):将cookie发送到浏览器
request.getCookies():获取Cookie数组对象
cookie.setPath(“路径”):给cookie自定义添加路径
cookie.setMaxAge(“时间”):给cookie 设置生存时间
cookie.getName():获取cookie的名字
cookie.getValue():获取cookie的值
5.Cookie生命周期
默认:浏览器关闭Cookie死亡
设置:cookie.setMaxAge(“时间”),浏览器关时会将Cookie写到磁盘,第二次打开使用
6. Cookie使用:
服务器创建cookie对象:Cookie C = new Cookie(”键name”,”值”)键自定义
注意:一个Cookie是保存少量信息的键值对,路径相同 重名,则覆盖
Cookie被服务器发送到浏览器:response.addCookie(C)
本质是设置响应头:set—Cookie name=value
Cookie由浏览器保存
以后请求,Cookie会被带到服务器,请求体携带过来。
服务器获取:
Cookie[] Cs = request.getCookies();
If(cs !=null){
For(Cookie c :cs){
c.getName()+c.getValue()
}
}
7.注意事项:
*除了name,value其余属性为可选属性
*Cookie存储数量是有限的,一般浏览器300是上限,针对于单个服务器20个
*cookie大小有限制4kb
*cookie也可以由浏览器产生
8.session :域对象。由服务器创建,存在服务器,结合Cookie使用。可以跨多个也面请求
9.sessionAPI:
HttpSession hs = request.getSession():
hs.setAttribute():给Session设置值
hs.getAttribute():获得Session设置的值
hs.removeAttribute():移除session的数据
Session.invalidate():移除session则连其中的数据一起移除
10.第一次访问Servlet会生成session,
HttpSession hs = request.getSession()创建Session对象
给Session设置属性,再在其他页面取出属性值
创建完Session之后会给浏览器发送一个Cookie,这个Cookie JSESSIONID=字符串这个Cookie值和上面Session对应。
第二次访问服务器,携带Cookie到服务器
获取Session对象,根据cookie的ID获取到已经存在的Session
操作Session
注意:同一个Session,可以实现不同页面的共享,对于同一个访问者,Session唯一,不同访问者不唯yi
11.Session生命周期:
出生:可以理解为getSession时(但是实际是访问页面的时候就已经创建了)
死亡:服务器非正常关闭 、invalidate、session如果不适用30分钟服务器会自动将其销毁
12.Cookie和Session使用时机:
数据安全性高:用Session
多个页面要实现复杂的数据共享:使用Session
Cookie一般用于数据短小安全性不高的场合。
13.浏览器端的会话技术: cookie
存储完交互产生的数据保存在浏览器端
浏览器(自动): 接收cookie---保存cookie--传递cookie
服务器(重点): 创建cookie---传递cookie---接收cookie
创建cookie: new cookie("","");
传递cookie: addCookie(cookie对象);
接收cookie: Cookie[] getCookies();
JSP页面想获得cookie就必须要用重定向,跟浏览器交互后才有Cookie
14.默认情况: 会话级别 只要关闭浏览器 cookie销毁
持久化: setMaxAge(默认是秒值开始的)
0 移除cookie
>1 设置申明周期
-1 会话级别
15.服务器端的会话技术: session
存储完交互产生的数据保存在服务器端
session是一个域对象
xxxAttribute("",object)
作用域:
一次会话中有效
*(重点) request.getSession()
如何去保证一次会话中使用的是同一个session?
jsid ---session基于cookie
为什么浏览器关闭就不是同一个session?
浏览器关闭 cookie销毁
案例一: 统计一个servlet的访问次数
需求:
有一个servlet(countServlet),每访问一次这个servlet,将访问的次数+1,
当我们访问另一个servlet(showServlet),展示访问CountServlet的次数
技术分析:ServletContext对象
ServletContext: 上下文对象(全局管理者)
服务器启动的时候就会为每一个项目创建一个全局管理者--ServletContext对象
ServletContext的作用:
2 .获取全局的初始化参数
3 .获取一个文件的MIME类型( 例如:一个html文件 mime类型:text/html text/css img/jpeg)
4 .管理文件 (例如:获取文件路径,根据文件获取流)
1 .资源共享(在本项目下的所有servlet都可以共享它)
获取ServletContext:
方式1:
ServletContext getServletConfig().getServletContext()
方式2:
ServletContext getServletContext()
获取ServletConfig对象和ServletContext对象
直接在自己的servlet里面调用
this.getServletConfig()
this.getServletContext()
常用的方法:
获取全局的初始化参数
String getInitParameter(String name):获取指定的初始化参数
获取一个文件的MIME类型
getMimeType(String filename):获取文件的mime类型
管理文件
getRealPath(String path):获取当前项目在tomcat服务器中的根路径
InputStream is=new FileInputStream(new File(path)) 之前的获取方式
getResourceAsStream(String path):根据文件获取流
资源共享的方法(可以把他当成一个map集合) (掌握)
setAttribute(String key,Object value):储存值
Object getAttribute(String key):获取值,若没有则返回一个null
removeAttribute(String key):移除值
ServletContext资源共享的方法:可以被多个servlet共
---------------------------------------------------------------------------------------------------
步骤分析:
1 需要2个servlet(countServlet和showServlet)
2 在countServlet
1 创建servletContext对象
2 从servletContext取值
无:count=1
有:count=count+1
3 在将设置完的值存到servletContext
3 在showServlet
1 创建servletContext对象
2 从servletContext取值
无: 直接响应页面 没有访问过
有: 直接取值,响应给页面访问次数
---------------------------------------------------------------------------------------------------
案例二: 文件下载
需求:
在页面上有几个连接,点击连接就可以下载相应的文件了
技术分析: response---响应对象
作用:
通过他可以往浏览器输出内容
响应的组成:
响应行 响应头 响应体
1 操作响应行
格式:
协议/版本 状态码 状态码说明 HTTP/1.1 200 OK
常用的方法:
操作状态码:5种状态码
1 2 3 :正常的响应
4 5:有问题的响应
(理解)setStatus(状态码):针对的是 1xx 2xx 3xx
setStatus(302)
需要一个头
(了解)sendError(int code):针对的是 4xx 5xx
2 操作响应头(重点)
格式:
key:value(value可以是多个值)
常用的方法:
★setHeader(String key,String value):设置字符串形式的响应头
(了解)
addHeader(String key,String value);添加字符串形式的响应头
若没有设置则设置,若设置过则添加
常用的响应头:
1 location:重定向
重定向方式1(了解)需要配合302状态码一起使用
response.setStatus(302);
response.setHeader("location", "/servlet02/helloServlet7");
重定向方式2(掌握)
常用方法:
★response.sendRedirect("url");
2 refresh:定时刷新
response.setHeader("refresh","秒数;url=跳转的路径");
3 content-type:设置文件的mime类型 并且通知浏览器用什么编码打开
(了解)response.setHeader("content-type","文件的mime类型;charset=utf-8");
(重要)response.setContentType("文件的mime类型;charset=utf-8");
response.setContentType("文件的mime类型")
4 content-disposition:文件下载
response.setHeader("content-disposition","attachment;filename="+文件名称);
3 操作响应体
页面上要展示的内容
常用方法:
PrintWriter getWriter():字符流
ServletOutputStream getOutputStream():字节流
注意:
若是能写的出来的内容用字符流,其他全用字节流
中文乱码问题
字符流和字节流不能同时出现
服务器会自动帮我们关闭流.
阅读全文
0 0
- session和cookie
- Cookie和Session专题
- Cookie和Session专题
- Cookie和Session专题
- Cookie和Session专题
- 关于Session和Cookie
- Cookie和Session专题
- session 和 cookie
- Cookie和Session专题
- cookie和session
- 浅谈Session和Cookie
- Cookie和Session专题
- Cookie和Session专题
- Cookie和Session专题
- Cookie和Session专题
- Cookie和Session专题
- Cookie和session
- cookie和session关系
- 使用java创建一个简易的视屏播放器
- Java lambda 实现sort
- UDP协议的两个主要方法sendto和recvfrom详解
- 记 Ionic2混合开发遇到的坑
- super关键字
- Cookie和Session
- 移动端多线程编程高级篇-阻塞队列实现生产者消费者模式
- 利用mybatis-generator自动生成代码
- ssh整合
- DB2 创建索引语句
- Linux系统直接升级GLIBC版本
- AppCompatDelegate夜间模式
- spyder的工作路径和python的搜索路径
- Oracle-性能优化(二)