会话:用户开浏览器访问某个网站,只要不关闭浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个过程称为一次会话

cookie会话:

1.记录用户上次登录的时间

2.浏览商品的历史

3.保存用户名和密码

cookie的创建

 //createcookie.java
//创建cookie(api)
Cookie cookie=new Cookie("name","cookietest");
//设置cookie的生命周期
cookie.setMaxAge(3600);
//把cookie信息写回给浏览器
response.addCookie(cookie);

cookie的读取

//readcookie.java
//读取所有cookie信息
Cookie cookies[]=request.getCookies();
//遍历cookie
for(int i=0;i<cookies.length;i++){
  Cookie cookie=cookies[i];
  out.println("cookie 名字= "+cookie.getName());//cookie只能放字符串 }
cookie的小结
①cookie是在服务端创建的
②cookie是保存在浏览器端
③cookie的生命周期可以通过cookie.setMaxAge(2000);
   如果不设置setMaxAge,则该cookie的生命周期当浏览器关闭时,就消亡
④cookie可以被多个浏览器共享
⑤怎么理解:
    可以把cookie理解成一张表(重名就会替换cookie值)

⑥一个web应用可以保存多个cookie
⑦cookie存放的时候以明文方式存放,因此安全较低,我们可以通过加密保存,可以用md5(不可逆)算法加密(想起了base64),经过md5加密后存放到数据库,用户输入密码后加密然后再和数据库里面的匹配
 md5加密:

案例:登录显示上次登录的时间

//获得cookie记录上次登录时间
private String getLasttime(HttpServletRequest request,
HttpServletResponse response) {
//先获取cookie
//保存上次登陆时间的cookie “2012-11-13 12:36:22”
Cookie []cookies=request.getCookies();
// 首次登录
boolean b=false;
String returnName="";
//获取时间,用于更新cookie
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY-MM-DD HH:mm:ss");
String nowTime=simpleDateFormat.format(new java.util.Date());
//遍历cookie找到需要的值
if(cookies!=null)
{
for(Cookie cookie:cookies)
{
//取名字
String name=cookie.getName();
if("lasttime".equals(name))
{
returnName=cookie.getValue();
//更新cookie 的时间
Cookie mycookie = new Cookie("lasttime",nowTime);
mycookie.setMaxAge(7*24*3600);//保存一周
response.addCookie(mycookie);
b=true;
break;
} }
}
if(!b)//第一次登陆的设置
{
Cookie mycookie=new Cookie("lasttime",nowTime);
mycookie.setMaxAge(7*24*3600);
response.addCookie(mycookie);
returnName=null;
}
return returnName;
}

保存用户的名字的案例:

登录界面

String username="";
Cookie cookies[]=request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("username")){
username=cookie.getValue();
}
}
}
out.println("用户名:<input type='text' name='username' value='"+username+"'/><br/>");
out.println("密 码:<input type='password' name='password'/><br/>");
out.println("<input type='checkbox' name='iskeepinfo' value='keep'/>在此电脑上保存用户名<br/>");

提交后台的servlet

String val=request.getParameter("iskeepinfo");
if(val!=null&&val.equals("keep")){
//保存
//创建cookie并保存登录用户的机器上
Cookie cookie=new Cookie("username",username);
cookie.setMaxAge(7*2*24*3600);
//会写
response.addCookie(cookie);
}
cookie的细节
①一般一个浏览器只允许存放300个cookie,一个web站点最多允许20个cookie,一个cookie的大小为4k
②cookie的生命周期
1.cookie默认生命周期是会话级别
2.通过setMAxAge()可以设置cookie的生命周期
    setMaxAge(正数),多少秒后cookie失效
    setMaxAge(0),删除cookie

特别说明:如果web应用只有一个cookie,则删除该cookie后,在浏览器的临时文件夹下没有该cookie文件,如果该web应用有多个cookie,则删除一个cookie后,文件夹还在,只是该cookie没有了。
setMaxAge(负数),相当于cookie生命周期是会话级别。
3.cookie存放中文,怎样处理
   存放
String val=java.net.URLEncoder.encode("顺平","utf-8");
Cookie cookie=new Cookie("name",val);

 取出

String val=java.net.URLDecoder.decode("cookie.getValue()","utf-8");
out.println("name="+val);

  

 

1.servlet的会话机制cookie的更多相关文章

  1. Django之会话机制cookie、session使用

    login视图函数: def login(request): if request.method == 'POST': username = request.POST.get('username') ...

  2. 一,PHP会话机制---cookie

    1,  什么是会话 会话可简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 2,  cookie技术 cookie(小甜饼)是客户端技 ...

  3. Servlet的会话机制?

    因为http协议是无状态协议,又称为一次性连接,所以webapp必须有一种机制 能够记住用户的一系列操作,并且唯一标示一个用户. Cookie: 又称为小饼干,实际就是使用一个短文本保存用户信息, 在 ...

  4. 2.servlet的会话机制session

    session的说明: 1.session是服务端技术,存放在服务器 2.一个用户浏览器对应一个session域对象,一对一的对应关系 3.session的默认生命周期是30min,可以通过web.x ...

  5. Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同

    Servlet会话机制: Http是一种无状态协议,它是无记忆的.也就是说,服务器不会保存用户的任何信息,当同一用户再次去访问时,服务器是不认识你的,它还是会建立新的连接. 但有时候我们需要服务器保留 ...

  6. Cookie&Seesion会话 共享数据 工作流程 持久化 Servlet三个作用域 会话机制

    Day37 Cookie&Seesion会话 1.1.1 什么是cookie 当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,这些信息都保存在Cookie中.这样,当该浏览器 ...

  7. Java Web(三) 会话机制,Cookie和Session详解

    很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因可能是没能好好理解这两种会话机制,所以会一直遗忘,一直重新回过头来学习它,今天好好把他总 ...

  8. Java Web(三) 会话机制,Cookie和Session详解(转载)

    https://www.cnblogs.com/whgk/p/6422391.html 很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因 ...

  9. web开发(三) 会话机制,Cookie和Session详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6422391.html>,在此仅供学习参考之用. 一.会话 ...

随机推荐

  1. maven2打包不同jdk版本的包

    通常在一些特别情况下,我们需要为单独某一个构件打包多个不同jdk版本的包,用来支持不同的jdk,基于maven我们就可以很方便的做到这点. 1.在项目的pom文件中加入如下配置 <project ...

  2. 一起学HTML基础-CSS样式表常用样式属性

    样式属性 背景与前景: background-color:#F90; /*背景颜色,样式表优先级最高*/ background-image:url(路径); /*设置背景图片(默认)*/ backgr ...

  3. 【转】在mac上配置安卓SDK

    众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一.先下载android sdk for mac 给二个靠谱的网址: ...

  4. 58. Android一些开发习惯总结

    作者:漫步 链接:https://www.zhihu.com/question/27227425/answer/35973793 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  5. javaBean和Servlet有什么区别

    1.javabean无非就是里面有些set和get方法 2.servlet用来处理一些逻辑层 3.javabean.servlet.jsp分别对应M(odel).C(ontroller).V(iew) ...

  6. Akka: actor应用的一些小结

    1.消息: 1) case class是scala中一个不可变对象(当然你可以让他成为可变的),通过不可变对象来进行消息传递可以更加明确内容,也能保证线程安全 2) 在Java中如果你将class对象 ...

  7. 基本概率分布Basic Concept of Probability Distributions 1: Binomial Distribution

    PDF下载链接 PMF If the random variable $X$ follows the binomial distribution with parameters $n$ and $p$ ...

  8. Newton-Raphson算法简介及其R实现

    本文简要介绍了Newton-Raphson方法及其R语言实现并给出几道练习题供参考使用. 下载PDF格式文档(Academia.edu) Newton-Raphson Method Let $f(x) ...

  9. Distance Between Points

    I need some help. I have to create a function that will calculate the distance between points (x1,y1 ...

  10. 【Beta】第二次任务发布

    后端 了解社区新建文章.添加评论(回复)的机制.整理成API文档,包括如何请求新建文章.新建评论(回复).如何获取文章内容和评论内容. 验收条件:文档PM要能看懂. 前端 微调数据输入部分的布局和操作 ...