• servlet同一用户不同页面共享数据


    如何实现不同页面之间的数据传递,实现页面的数据共享?常见的方法有以下4种:

    1)表单提交(form)

    2)sendRedirect()跳转

    3)session技术

    4)Cookie技术

    表单提交

    这是最常见的一种方式,也是最简单的,但有时该技巧非常管用,形如:
    <form action=login>

    <input type=text name=a value=b>

    <input type=hidden name=c value=d>

    </form>
    通过表单,我们也可以将一个页面信息,传递给另外的页面。特别注意隐藏表单的应用,如果不想讲提交的信息显示出来可以用它。

    sendRedirect()跳转

    sendRedirect("welcome?uname=xiangkejin");
    优点:传送信息的速度比较快
    缺点:它只能传送字符串,而不能传送一个对象
    注意点:
    1.welcome代表你要跳转的那个servlet的url
    2.servlet url名和变量之间有?号
    3.如要传递两个以上的值,它们间要用&号分开比如sendRedirect("welcome?uname=xiangkejin&PassWord=ok");
    4.如果传递的是中文,那可能会是乱码,需要处理一下

    session技术

    当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存中为该浏览器分配一个
    空间,该空间被浏览器独占。
    这个空间就是session空间,该空间中的数据默认存在时间30min,你也可以修改。
    用处:
    1.网上商城中的购物车
    2.保存登录用户的信息
    3.将某些数据放入到Session中,供同一用户的各个页面使用
    4.防止用户非法登录到某个页面
    session可以看做是一张表,这张表有两列。每一行即是session的一个属性
    每个属性包含有两个部分,一个是该属性的名字(String)另一个是它的值(Object)

    如何使用Session?
    得到session的id,这是容器分配的,每个浏览器占有不是属于一个机器客户端,是属于一次请求
    String sessionId=ht.getId();
    1.得到session
    HttpSession hs=req.getSession(true);
    2.向session添加属性
    hs.setAttribute(String name,Object val);
    3.从session得到某个属性
    String name=hs.getAttibute(String name);
    4.从session删除某个属性
    hs.removeAttribute(String name);
    //这样讲删除全部的session
    hs.setMaxInactiveInterval(0);

    session的注意事项:
    1.在web.xml中修改默认session时间30min,也可在程序中修改。可在tomcat中修改也可以在自己的站点修改
    2.当某个浏览器访问网站时,服务器会给浏览器分配唯一一个session id,并以此来区分不同的浏览器
    3.因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用

    Cookie技术

    cookie是服务器在客户端保存用户的信息这些信息就像是小甜饼一样,数据量不大,服务器端在需要的时候可以从客户端读取

    一般保存在C:Documents and Settings目录下

    用处:
    1.保存用户名、密码,在一定时间不用重新登录
    2.记录用户访问网站的喜好
    3.网站的个性化,定制网站的服务内容

    如何使用Cookie?
    1.Cookie优点像一张表,分两列,一个是名字,一个是值
    数据类型都是String
    2.如何创建一个Cookie(在服务器端创建的)
    Cookie c=new Cookie(String name,String val);
    3.如何将一个Cookie添加到客户端
    response.addCookie(c)
    4.如何读取Cookie(从客户端掉服务器)
    Cookie [] cookie=request.getCookies();

    其他说明:
    1.可以通过IE-工具-Internet选项-隐私-高级来启用或是禁用cookie
    2.由于cookie的信息是保存在客户端的,因此安全性不高
    3.cookie信息的生命周期可以在创建时设置

    Cookie和session的区别
    1.存在的位置

     cookie保存在客户端,session保存在服务器端

    2.安全性

    cookie的安全性比session要弱。cookie是明文保存,session是保存在内存中

    3.网络传输量

    cookie通过网络在客户端与服务器端传输

    session保存在服务器端,不需要传输

    4.生命周期(20分钟为例)

         (1)cookie的生命周期是类的,从创建时,就开始计时,

             20分钟后cookie生命周期结束。

         (2)session的生命周期是间隔的,从创建时,开始计时如果在20分钟,

            没有访问过session,那么session信息五小,如果在20分钟内,

            访问过session,那么,它的生命周期将重新开始计算。

         (3)另外,关机会造成session生命周期结束,但是cookie没有任何影响。

  • 相关阅读:
    10分钟用JS实现微信 "炸屎"大作战
    基于nodejs 的多页面爬虫
    react+react-router 4.0+redux 构建购物车实战项目
    vue+websocket+express+mongodb实战项目(实时聊天)
    用vuejs仿网易云音乐(实现听歌以及搜索功能)
    js 实现 bind 的这五层,你在第几层?
    教你如何搭建一个自动化构建的博客
    vue-chat项目之重构与体验优化
    vue+websocket+express+mongodb实战项目(实时聊天)(二)
    css 多栏自适应布局
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/5693124.html
Copyright © 2020-2023  润新知