servlet学习笔记(四)

一、cookie

  1. 会话的基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话。
  2. cookie原理图:
    这里写图片描述
    我们可以把cookie想象成一张表比如这样:
    这里写图片描述
    注意一个cookie的名字只能对应一个值,如果重名就会替换存在的cookie值.

3 . cookie的小结:

  • cookie 是在服务端创建
  • cookie 是保存在浏览器这端
  • cookie 的生命周期可以通过 cookie.setMaxAge(2000);设置,如果不设置setMaxAge则该cookie当浏览器关闭时,就消亡。
  • cookie 可以被多个浏览器共享。

4 . 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);

5 . 一个小的cookie应用的例子:
保存上次登录时间:

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //先获取cookie
        // 假设我们 保存上次登录时间的cookie "lasttime" "2011-11-11 12:12:12";
        // 这里我们要考虑一个情况: 用户第一次登录 '您是第一次登录..'
        Cookie []cookies=request.getCookies();
        boolean b=false;//假设没有lasttime cookie
        if(cookies!=null){ //保证有cookie,取遍历
            for(Cookie cookie: cookies){
                //取出名
                String name=cookie.getName();
                if("lasttime".equals(name)){
                    //显示
                    out.println("您上次登录时间是 "+cookie.getValue());
                    //更新时间
                    //把当前日期保存cookie
                    SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    String nowTime=simpleDateFormat.format(new java.util.Date());
                    Cookie mycookie=new Cookie("lasttime",nowTime);
                    mycookie.setMaxAge(7*3600*24);//保存一周
                    response.addCookie(mycookie);
                    b=true;
                    break;
                }
            }
        }
        if(!b){
            //没有找到
            out.println("您是第一次登录..");
            //把当前日期保存cookie
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String nowTime=simpleDateFormat.format(new java.util.Date());
            Cookie cookie=new Cookie("lasttime",nowTime);
            cookie.setMaxAge(7*3600*24);//保存一周
            response.addCookie(cookie);
        }
    }

二、session

1 . session工作原理图:
这里写图片描述
2 . 为什么服务器能够为不同的浏览器提供不同session?
因为每个浏览器去访问web站点的时候,如果发出的http请求头没有带JSESSIONID头就会自动给你创建一个并返回
这里写图片描述
由此也可以看出session是通过cookie来实现的
3 . session小结:

  • session是存在服务器的内存中
  • 一个用户浏览器,独享一个session域对象
  • session中的属性的默认生命周期是30min ,你可以通过 web.xml来修改
  • session中可以存放多个属性
  • session 可以存放对象如果 session.setAttribute(“name”,val) , 如果名字重复,则会替换该属性.

4 . 三种设置session生命周期的方法:
(1)一个地方是 tomcat/conf/web.xml

  <session-config>
        <session-timeout>30</session-timeout>//表示30分钟的意思
  </session-config>

对所有的web应用生效
(2)另外一个地方,就是在单个web应用的下去修改 web.xml

  <session-config>
        <session-timeout>30</session-timeout>//表示30分钟的意思
  </session-config>

如果发生冲突,则以自己的web应用优先级高
(3)session.setMaxInactiveinterval(60)如果六十秒内没有访问该session则该session失效

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值