java中的Servlet(二)

来源:互联网 发布:人工智能语音计算器 编辑:程序博客网 时间:2024/05/02 00:38










Cookie 
(1)什么是cookie?
   网站为了识别用户身份而在浏览器端
存放的少量的数据。
(2)cookie的工作原理
   浏览器访问web服务器时,服务器会将
少量的数据以"set-cookie"消息头的方式发
送给浏览器,浏览器会将这些数据临时保存
下来。当浏览器再次访问服务器时,浏览器
会将这些数据以"cookie"消息头的方式发送
给服务器。
(3)如何添加一个cookie
   Cookie c = new Cookie(String name,
String value);
   response.addCookie(c);
(4)查看cookie
   Cookie[] request.getCookies();
   注:
该方法有可能返回null。
   String cookie.getName();
   String cookie.getValue();
(5)编码问题
   cookie只能存放合法的ascii字符,对于
  中文,需要将中文转换成相应的ascii字符
  的表示形式。
    String URLEncoder.encode(String str,
String charset);
    String URLDecoder.decode(String str,
String charset);
   注意:在添加cookie时,最好对
要添加的数据都进行编码处理。
(6)生存时间问题
   默认情况下,浏览器会将cookie保存在
  内存里面,浏览器关闭之后,cookie会被
  删除。
   可以通过
    setMaxAge(int seconds)设置cookie
   的生存时间。
   注意:
      a.单位是秒。
      b.值可以 > 0
浏览器会将cookie保存在硬盘上,
        超过指定时间,cookie会被删除。
        可以 < 0
           默认情况(放到内存)
        可以 = 0
          删除cookie。
          比如,要删除一个名称为"city"
          的cookie:
             Cookie c = 
new Cookie("city","");
             c.setMaxAge(0);
             response.addCookie(c);
    (7)路径问题
    a.什么是cookie的路径问题
    浏览器向服务器发送请求时,会比较
    要访问的地址是否与cookie的路径
    匹配,只有匹配的cookie才会被发送。
    b.cookie默认路径
    等于添加该cookie的组件的路径。
    c.匹配规则
    要访问的地址与cookie的路径相等
    或者是其子路径。
    d.修改路径
     setPath(String path)
     比如
       cookie.setPath("/web01");
    (8)cookie的限制
       a.不安全,对于敏感数据一定要加密。
       b.可以被禁止。
       c.只能够保存少量的数据(约4k)
       d.数量也有限制(约几百个)。
       e.只能保存字符串。
           
练习:
      写一个Find_addCookieServlet,该servlet
      会先查看有没有一个名称为"cart"的cookie,
      如果有,则显示该cookie的值;如果没有,
      则创建之。
      不用考虑编码问题和生存时间问题。


session(会话)
(1)session是什么
是服务器为维护状态而创建的一个对象。
(2)工作原理
  浏览器访问服务器时,服务器会创建一个
  session对象(有一个sessionId,值是
  唯一的)。服务器会将这个sesssionId以
  cookie的方式发送给浏览器,浏览器会
  将sessionId保存下来。
  当浏览器再次访问服务器时,
  会将sessionId发送给服务器,服务器依据
  sessionId找到对应的session对象。
 (3)如何获得session对象?
  方式一
  HttpSession s = 
  request.getSession(boolean flag);
  当flag = true时
  先查看请求当中是否有sessionId,
  如果没有sessionId,则创建一个session
  对象。如果有sessionId,依据这个
  sessionId查找对应的session对象,
  如果找到了,则返回;找不到,则创建
  一个新的session对象。
  当flag = false时
  先查看请求当中是否有sessionId,
  如果没有sessionId,返回null。
  如果有sessionId,依据这个
  sessionId查找对应的session对象,
  如果找到了,则返回;找不到,返回null。
  方式二
  HttpSession s = 
  request.getSession();
  等价于 request.getSession(true)。
 
 
 

  


   


   



0 0