扩展阅读
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  •  
    当前位置:  编程语言>java/jsp

    java Servlet获取和设置cookie实例代码

     
        发布时间:2013-10-4  


        本文导语:  cookie是web服务器通过浏览器保存在www用户端硬盘上的一个文本文件,这个文件中包含了文本信息文本信息的内容是以“名/值”对的形式进行储存。可以让web开发者通过程序读写这个文本文件在Windows XP中保存Cookie的目...

       cookiejava Servlet实现Session创建存取以及url重写代码示例 iis7站长之家通过浏览器保存在www用户端硬盘上的一个文本文件,这个文件中包含了文本信息文本信息的内容是以“名/值”对的形式进行储存。可以让web开发者通过程序读写这个文本文件在Windows XP中保存Cookie的目录是:C:Documents and Settings用户名CookiesCookie的作用是解决浏览器用户与web服务器之间无状态通信

       注意:

    cookie的大小和数量是有限制的。

    cookie在个人硬盘上所保存的文本信息是以明文格式进行保存的,没有任何的加密措施。

    浏览器可以设定不使用cookie。


    实例代码1

    文件 cookiesInput.html

    <html>
    <head>
    <title>cookie input page</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body>
    请输入用户名<br>
    <form name="form1" action="/article/SetCookiesServlet/index.html"  method="post" >
    <table border="0">
    <tr><td>用户名:</td>
    <td><input type="text" name="username">
    </td></tr>
    <tr><td colspan="2" align="center">
    <input name="submit" value="submit" type="submit">
    </td></tr>
    </table>
    </form>
    </body>
    </html>


    SetCookiesServlet

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import webbook.util.StringUtil;
    public class SetCookiesServlet extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      String output = null;
      String username = request.getParameter("username");
      if (!StringUtil.validateNull(username)) {
       Cookie cookie1 = new Cookie("username", StringUtil.filterHtml(username));
       // cookie的有效期为1个月
       cookie1.setMaxAge(24 * 60 * 60 * 30);
       response.addCookie(cookie1);
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
       Cookie cookie2 = new Cookie("lastTime", sdf.format(new Date()));
       cookie2.setMaxAge(24 * 60 * 60 * 30);
       response.addCookie(cookie2);
       output = "本次登录时间与用户名已经写到Cookie中";
      }
      else {
       output = "用户名为空,请重新输入";
      }
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      out.println("<html>");
      out.println("<head><title>set cookies </title></head>");
      out.println("<body>");
      out.println("<h2>" + output + "</h2>");
      out.println("</body>");
      out.println("</html>");
      out.flush();
      out.close();
     }
    }


    GetCookiesServlet

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class GetCookiesServlet extends HttpServlet {
     public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      // 获取所有的cookie值
      Cookie[] cookies = request.getCookies();
      Cookie cookie = null;
      for (int i = 0; i < cookies.length; i++) {
       cookie = cookies[i];
       if (cookie.getName().equals("username")) {
        out.println("用户名:" + cookie.getValue());
       }
       if (cookie.getName().equals("lastTime")) {
        out.println("上次登录时间:" + cookie.getValue());
       }
      }
      out.flush();
      out.close();
     }
    }


    销毁Cookie

    Cookie cookies[] = request.getCookies();  
    if (cookies != null)  
    {  
        for (int i = 0; i < cookies.length; i++)  
        {                     
            cookies[i].setMaxAge(0);
            response.addCookie(cookies[i]);  
        }  
    }


    实例代码2:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {
         response.setContentType("text/html");
         PrintWriter out = response.getWriter();
         String option = request.getParameter("option");
         if ("show".equals(option)) {
             //获得请求信息中的Cookie数据
             Cookie[] cookies = request.getCookies();
             if (cookies != null) {
                 //找出名称(键)为“cool”的Cookie
                 for (int i = 0; i < cookies.length; i++) {
                     if ("cool".equals(cookies[i].getName())) {
                         out.println("<h2>" + cookies[i].getName() + ":"
                             + cookies[i].getValue() + "</h2>");
                      }
                 }
            }
         } else if ("add".equals(option)) {
             //创建Cookie对象
             Cookie cookie = new Cookie("cool", "yeah!");
             //设置生命周期以秒为单位
             cookie.setMaxAge(20);
             //添加Cookie
             response.addCookie(cookie);
        }

    servlet对应的url-pattern为/testcookie

    当浏览器请求地址“.../tst/testCookie?option=add”时,该Servlet创建一个Cookie对象,存储的键-值对为“cool”-“yeah”。通过response的addCookie方法将该Cookie信息添加到相应信息中。需要注意的是cookie的setMaxAge方法用于设置该cookie生命周期单位是秒,如果过了这个期间,Cookie将失效。setMaxAge方法的参数如果为负值则表示该Cookie将在浏览器关闭时过期,如果参数为0则表示立刻删除该Cookie。访问该地址,对应的请求和响应的HTTP信息为:

    请求:

    GET /tst/testCookie?option=add HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, **
    Accept-Language: zh-cn
    UA-CPU: x86
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
    Host: 192.168.5.100:8080
    Connection: Keep-Alive
    Cookie: cool=yeah!

    响应:

    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=ISO-8859-1
    Content-Length: 21
    Date: Sun, 29 Jun 2008 06:15:26 GMT
    <h2>cool:yeah!</h2>

    注意,请求协议头中用于携带cookie信息的格式。

       Cookie可以用于保持用户的会话状态,但Cookie信息保存在客户端,存在较大的安全隐患,且一般浏览器对Cookie的数目及数据大小有严格的限制。在Web应用中,一般情况下通过HttpSession对象保持会话状态。


    • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:java Servlet获取和设置cookie实例代码
    相关文章推荐:
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: servlet_context定义参考
  • JCreator里为什么找不到java.servlet.* java.servlet.http.* 类 ,求助!
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: servlet_response定义参考
  • 请问用javac编译一般*.java能通过,但不能编译Servlet写的*.java.提示javax.servlet.http不存在。
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: servlet_request定义参考
  • 关于servlet 的编译问题,怎样设置classpth,把那些java servlet类包含到classpath?而且无法调用servlet!谢谢!
  • java Servlet实现Session创建存取以及url重写代码示例
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 很菜鸟的问题: 请看我的servlet的helloworld.java程序编译时为什么出现这些错误??我用的是jdk,环境变量里面已经设置了servlet包。
  • 我在jbuilder中新建一个servlet,源程序为java文件,是怎么从java到servler转换的?
  • 学JAVA是先学JSP还是SERVLET?
  • 关于Servlet的导入java package?
  • 我要晕倒了,怎么在java.sun.com/products/servlet下找不到servlet的开发包在哪下载,1个小时都浪费了,帮忙啦*_*
  • 菜鸟问题:编译后提示错误,package java.servlet doesn't exsit
  • 大家好,我下载的j2sdk1.4标准版里面怎么不包括,java.servlet和java.security呀?
  • 关于编译java servlet
  • Java Servlet是什么东东,它和JSP有什么关系,谢谢。
  • 在编译使用扩展标签的java文件时,得到package javax.servlet.jsp does not exist,package javax.servlet.jsp does not exist的错误
  • servlet和java bean 到底是什么关系呀???
  • 真的有点灰心了,学java两个月才,最近在用jb6+weblogic6.1学习servlet,可使无论如何都无法运行,就连一个小小的.java格式的servlet程序我都没办法编译成.class文件,真的对java有点灰心了.....
  • 求最容易理解,最容易上手的java书籍,servlet书籍,请指教,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3