<%!
    public static Cookie getCookie(HttpServletRequest request,String name)
    {
    Cookie [] cookies =request.getCookies();
    if(cookies!=null)
    {
    for(int i=0;i<cookies.length;i++)
    {
    if(cookies[i].getName().equals(name))
    {
return cookies[i];   
    }
    }
    }
    return null;
    }
    %> <%
//设置cookie   
//我想把username="heavilyarmed" 和userpwd="123"放到cookie内
//没思路
Cookie nameCookie2=new Cookie("mingzi","nicholas");
nameCookie2.setDomain("http://localhost:1009/twoWeeks");
nameCookie2.setPath("/userinfo");
nameCookie2.setMaxAge(60);
response.addCookie(nameCookie2);
 %> <%
//读取
    String name="mingzi";
Cookie nameCookie=getCookie(request,name);
System.out.println("name is :"+nameCookie.getValue());
System.out.println("thanks");
 %>我这么写上去,会报空异常,从未接触过,还请各位帮忙写详细点儿

解决方案 »

  1.   

    首先要导包
    <%@ page language="java" import="javax.servlet.http.*" %>nameCookie2.setMaxAge(6000);//这里是以毫秒为单位的!你设60太小了!刚存完就失效了!
      

  2.   


    赞同楼上的观点,时间太短了,
    在一个检查下你的IE浏览器是否禁用了Cookie。。
      

  3.   

    好了一部分了,就是名字对不上,在读取cookie数组的时候,只有一个名字是JSESSIONID的,不知道这是什么
      

  4.   

    好像是服务器端在客户端保存的一个sessionId把,很久没用了,忘得差不多了。。
      

  5.   

    我也感觉应该看一下子是否是把浏览器的cookie给禁用了  然后还有一个小方法,就是在用equals()方法的时候,不要把不确定是否为空的变量放在前面,例如把字符串常量放前面,这样就不会报空指针异常错误!!
      

  6.   


    谢谢你的方法,浏览器没有把它禁用,也生成了,就是只有一个名字是JSESSIONID的,不知道怎么办了
      

  7.   

    这样做还想不行吧,通过response添加cookie,在本次请求中它并没有把该Cookie同步到request中吧,你想一想看,所以你只能得到sessionId,是因为session是通过Cookie保存的
      

  8.   

    我只是提供一种思路:东西是死的,人是活的!
    我看了下的代码!(估计你是想,在用户登陆的时候,把用户名和密码保存到cookie中去)
    首先 在JSP页面上做个下拉菜单就是保存的时间(cookie是以秒为单位的!)
    再到逻辑层去判断你的用户名和密码是否正确,如果正确就设置cookie!//1 获取用户保存的时间:可以用request.getParameter();方法
    //2 将用户的用户名和密码保存到cookie中(提示:Cookie uNameCookie = new Cookie("uname",uname)......);
        Cookie是以键值对 的形式保存值的(反正我是这么理解的用法同HashMap),可以通过键来取到值
    //3 设置cookie最大的保存时间
        uNameCookie .setMaxAge(取得用户保存的时间);
    //4 设置保存路径
         uNameCookie.setPath("......");
    //5 添加到响应对象中
         response.addCookie(uNameCookie);
    //---------------------------------------至于取cookie中的值嘛:
                      Cookie[] cookies = request.getCookies();
                                   if(cookies != null){
      Map<String, String> cookieMap = new HashMap<String, String>();
      for(Cookie temp : cookies){
    cookieMap.put(temp.getName(), temp.getValue());
     }
    //获取用户的信息
    String uname = cookieMap.get("uname");
    String upwd = cookieMap.get("upwd");
    可以用HashMap来取值!
       最后像这些基础东西,还希望LZ多多去理解!
      

  9.   

    你的设置Cookie和取出Cookie是在一个页面上吧,设置的时候Cookie只是存在response中,没与浏览器交互,还没被发到客户端,所以request里还没有,还有一个编程的习惯,取出一个对象时尽量判断一下是否为null后再进行操作,否则很可能出空异常也就是这一句        System.out.println("name is :"+nameCookie.getValue());
    加个if判断,如果为null输出提示信息,或进行其它操作
      

  10.   

    把邮箱发来, 我前几天还上传到资源上一个jsp cookie例子 你看看能不能搜到下载
      

  11.   

    [email protected]
    谢谢楼上啦
      

  12.   

    如果是在struts2中的action要生成cookie,该如何使用
      

  13.   

       <!--使用配置的name,value来是指cookies -->    <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/> 
      

  14.   

    我也感觉应该看一下子是否是把浏览器的cookie给禁用了  然后还有一个小方法,就是在用equals()方法的时候,不要把不确定是否为空的变量放在前面,例如把字符串常量放前面,这样就不会报空指针异常错误!!
      

  15.   

    好了一部分了,就是名字对不上,在读取cookie数组的时候,只有一个名字是JSESSIONID的,不知道这是什么
      

  16.   

    首先要导包 
    <%@ page language="java" import="javax.servlet.http.*" %> nameCookie2.setMaxAge(6000);//这里是以毫秒为单位的!你设60太小了!刚存完就失效了!
      

  17.   

    <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/> 
      

  18.   

    http://blog.csdn.net/ghj1976/archive/2007/12/07/1922055.aspx你到此网站就会找到你要的解释
      

  19.   

        刚写的最简单的:
    <%@page pageEncoding="utf-8" %>
    <%@page import="javax.servlet.http.Cookie" %><%
    Cookie nameCookie = new Cookie("username","heavilyarmed");
    nameCookie.setMaxAge(60*60);//1小时
    response.addCookie(nameCookie);

    Cookie pwdCookie = new Cookie("userpwd","123");
    nameCookie.setMaxAge(60*60);//1小时
    response.addCookie(pwdCookie);

    Cookie[] cookies = request.getCookies();
    if( cookies !=null){

    for(int i=0;i<cookies.length;i++){
    Cookie cookie =cookies[i];
    out.println(cookie.getName()+"="+cookie.getValue());

    }
    }
     %>
      

  20.   

    呵呵~~终于搞明白了.
    楼主可以这样做:
    将cookie作为一个属性放到request中:
    request.setAttribute("cookie",nameCookie2);然后再这样取出即可:
     Cookie c = (Cookie)request.getAttribute("cookie");
     System.out.println(c.getName());
     System.out.println(c.getMaxAge());
     System.out.println(c.getPath());
    这样就可以了~~
      

  21.   

    #37的感觉挺好
      可以将最后的
                Cookie cookie =cookies[i];
                        out.println(cookie.getName()+"="+cookie.getValue());
    直接打出来:
            <%=cookies[i].getName%>
           <%=cookies[i].getValue%>
     偶还有一点疑问就是cookie=null    的情况到底有没有?!当打开浏览器的时候,  JSESSIONID已经从在了。此cookie是由服务器端自己设置到客户端上的,表示的信息是一个普通的用户。所以好像可以去掉if( cookies !=null)。
    个人理解,希望大家指正!