cookie和session
来源:互联网 发布:nginx 自定义404页面 编辑:程序博客网 时间:2024/06/08 09:28
一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。 一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。 如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。删除持久cookie,可以将cookie最大时效设为0,注意,删除cookie时,path必须一致,否则不会删除 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。
设置有效时间
setMaxAge()
设置有效路径
setPath()
设置有效域名
setDomain()
Session和Cookie的主要区别在于:
**Cookie是把用户的数据写给用户的浏览器。(客户端)
Session技术把用户的数据写到用户独占的session中(服务器端)所以cookie不是很安全例如用户的登陆信息应该放在session中**
* Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象
session:
* session的创建,request.getSession();服务器创建session,会把session的id号,以cookie的形式返回到客户机。
public class SessionDemo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF=8"); response.setContentType("text/html;charset=UTF-8"); //使用request对象的getSession()获取session,如果session不存在则创建一个 HttpSession session = request.getSession(); //将数据存储到session中 session.setAttribute("data", "小二斗鱼"); //获取session的Id22 String sessionId = session.getId(); //判断session是不是新创建的 if (session.isNew()) { response.getWriter().print("session创建成功,session的id是:"+sessionId); }else { response.getWriter().print("服务器已经存在该session了,session的id是:"+sessionId); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
session的几个重要方法:
isNew() 判断session是否为新创建的
int getId() 获取session的id
long getLastAccessedTime() 获取session的最后作用时间
long getCreationTime() 获取session的创建时间
getSession()将session的Id存储到名字为JSESSIONID的cookie中.
所以session的创建分为以下几种情况。
* 请求中如果没有jsessionid,那么就是创建session对象。* 如果请求头中有jsessionid值: 1.如果在服务器端,有一个session的id值与其一样,不创建,直接使用。 2.如果在服务器端,没有这个session的id值,那么会创建。* session销毁: 1.默认超时 30分钟 2.设置session超时时间 setMaxInactiveInterval(int interval) 3.invalidate()手动销毁. 4.关闭服务器 5.在xml中设置
<!-- 设置Session的有效时间:以分钟为单位--> <session-config> <session-timeout>15</session-timeout> </session-config>
浏览器禁用cookie后实现servlet中session数据共享:
Url重写 response.encodeRedirectURL(java.lang.String url) 用于对sendRedirect方法后的url地址进行重写。 response.encodeURL(java.lang.String url) 用于对表单action和超链接的url地址进行重写
一个小问题:关闭浏览器之后Session是否销毁了?
我认为是没有销毁的因为Session的默认销毁时常是30分钟。关闭浏览器后session会保存在硬盘上。当再次开启浏览器之后是一个新window所有会是一个新的id。所以我们在处理的时候要考虑到是否需要在数据库建表的时候有session的id字段 或者计算他的有效时常及时销毁上一个session。
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关系
- Android利用MPAndroidChart制作饼图
- sdutacm-图的基本存储的基本方式三
- logstash参数配置
- 记录maven+spring+spring mvc+mybatis的配置
- MapReduce
- cookie和session
- python学习[3]_按日期分割数据集
- Different Ways to Add Parentheses
- sdutacm-图的深度遍历
- C++ STL 学习笔记 stack
- faster R-CNN windows caffe cpu
- 如何将自己的Java项目部署到外网
- Opencv读取和保存视频
- forward和redirect