JavaEE开发学习笔记(3)

11. 同一用户共享不同页面的数据

       1cookie技术

       服务器保存客户端的信息,例如保存用户名,密码。服务器获得这些信息后,需要回写到客户端的某个目录。这样服务器在使用的时候可以从客户端读取Cookie中的信息。

      

       实现功能:

       * 保存用户名密码,在一定时间内不需要登录

       * 记录用户访问网站的喜好

       * 网站的个性化,可以定制网站服务器等。

      

       2sendRedirect()转向

       通过该方法将信息传递给下一个页面:比如sendRedirect(“welcome?uname=shunping”);

      

       优点:传递信息的速度比较快

       缺点:只能传递字符串,不能传递对象等其他信息

      

       sendRedirect(“welcome?uname=shunping”);

       注:

       1. welcome代表要跳转的那个servleturl

       2. servlet url名和变量之间有?号

       3. 如果传递两个以上值,需要使用&号分开,例如:

       sendRedirect(“welcome?uname=shunping&&pass=ok”);

       4. 如果传递的是中文,那么可能会得到乱码,需要进行处理。

       注意每一个参数获取时要与发送是相同

       例如参数发送的代码如下:

              res.sendRedirect("welcome?usrname=" + u + "&&passwd=" + p);

      

              // loginhandle中得到或得的用户名

              String u = req.getParameter("usrname");

              // loginhandle中获得密码

              String p = req.getParameter( "passwd");

       参数获取时,usrname要与发送时完全相同,否则获得的值为null

      

 

       3)隐藏表单

       最常见的一种方式,也是最简单的一种,但是这种技巧非常管用

       它使用的是html中的隐藏表单,因为隐藏表单除了不显示以外,其他的功能都有。既有名字也有动作。

       例如隐藏表单:

       <form action=login >

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

       </form>

      

       4session技术

       当用户打开浏览器,访问某个网站,被访问的服务器就会在服务器中为该浏览器分配一个内存,该空间被这个浏览器独占。

      

       这个空间就是session空间,该空间中的数据默认存在时间是30min,可以进行修改。

 

       完成功能:

       * 网上商城中的购物车

       * 保存登录用户的信息

       * 将某些数据放入到session中,供同一个用户的各个页面使用

       * 防止用户非法登录到某个页面

      

       如何理解session

       * session可以看做一张表,这个表有两列,多少行没有限制,每一个就是session 的一个属性。包含了两部分,名字和名字对应的值。

       使用session

       1)得到session

              HttpSession hs = request.getSession(true);

       2) session添加属性

              hs.setAttribute(String name, Object val);

      

       3)session中得到一个属性的值:

              String name = hs.getAttribute(String name);

       4) session中删除摸个属性值:

              hs.removeAttribute(String name);

              上面说过,session的时间是有限制的,超过一定时间没有访问某一个值,这个值就会被删除掉。

              要修改session的保存时间,在tomcat下的conf目录下的web.xml中进行修改。

              找到session-config标签,即可修改session的时间。这个时间是用户的发呆时间,也就是用户登录在本网站,但是并没有进行任何动作了。

      

       5) 当浏览器访问某个网站时,服务器会给浏览器分配一个唯一的session ID,并以此来区分不同的浏览器(即客户端)

       Session 的各个属性都要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用。

      

       使用Session共享数据,使用记录登陆成功为例:

       (1) // 将验证成功的信息写入session

              HttpSession hs = req.getSession(true);

              // 为了测试,修改session的存在时间

              hs.setMaxInactiveInterval( 20);

             

              // 将登陆成功设置进session

              hs.setAttribute("pass", "ok");

       (2) 取出session的数据,根据数据进行处理

              // 得到session

              HttpSession hs = req.getSession(true);

              String val = (String)hs.getAttribute("pass");

             

              if(val == null)

              {

                     try

                     {

                            res.sendRedirect("login");                         

                     }

                     catch(Exception ex)

                     {

                            ex.printStackTrace();

                     }

              }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值