获取不到cookie

获取不到cookie

第一个servlet:设置cookie:

package com.imooc.servlet.cookie;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletCookie
 */
@WebServlet("/sc/setcookie")
public class ServletCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletCookie() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		Cookie cookie=new Cookie("name","Tom");
		Cookie cookie2=new Cookie("sex","man");
		Cookie cookie3=new Cookie("age","18");
		response.addCookie(cookie);
		response.addCookie(cookie2);
		response.addCookie(cookie3);	
		cookie.setMaxAge(60*60*24);
		cookie2.setMaxAge(60*60*24);
		cookie3.setMaxAge(60*60*24);
		response.getWriter().println("Hello World");
	}

}

第二个servlet:设置cookie:

package com.imooc.servlet.cookie;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletSetCookie
 */
@WebServlet("/sc/setcookie2")
public class ServletSetCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletSetCookie() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Cookie cookie=new Cookie("grade","A");
		cookie.setMaxAge(60*60*24);
		response.addCookie(cookie);
		response.getWriter().println("Hello DamnWorld");
	}

}

获取cookie:

package com.imooc.servlet.cookie;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ServletGetCookie
 */
@WebServlet("/gc/getcookie")
public class ServletGetCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletGetCookie() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Cookie[] cs = request.getCookies();
		for(Cookie c : cs) {
			response.getWriter().println(c.getName() + ":" + c.getValue());
		}
	}
}


我写了两个servlet来获取不同的cookie,为什么在设置了cookie时效的情况下还是不能获取cookie?

错误代码为 500;

我这么做只是想证明在不同servlet中创建的cookie是不是都保存在了同一个文件中?

还有就是创建的cookie为什么能被另外创建的servlet访问,是因为cookie是全局的吗?(因为我想这儿为什么没使用 转发请求 就可以访问另一个servlet中创建的数据)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕阿满 2018-12-31 12:20:19

同学你好,在getcookie之前,同学是否先运行setcookie和setcookie2呢,先运行setcookie,再getcookie,才能显示name,sex等内容。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快!

chrismorgen 2018-12-29 18:02:54

你好同学,如下图所示,建议你设置完cookie之后,访问getcookie,就可以达到你说的效果了。如下结果是你代码的运行效果,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5c2741fb0001b19304230220.jpg

  • 你能获取到,为什么我就只能获取到你给的图中的最后一行: JSESSIONID:2C15F3961E4F5F7E9C6C172F0A29315E 而且我在获取cookie的servlet中加了一行 System.out.println(cs.length); 控制台返回了 1; 为什么没获取到我设置的cookie呢? 我在Chrome和ie浏览器中运行直接报空指针异常,是不是和浏览器有关呢? 怎么解决?
    2018-12-29 18:40:33
chrismorgen 2018-12-29 15:55:30

因为测试同学的代码是没有问题的,所以建议你clean一下项目工程,然后在用chrome浏览器访问试试,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5c27285600016cdf02440248.jpg

  • 我试了下其它浏览器都可以,Chrome和ie就不行
    2018-12-29 16:27:37
  • 我获取cookie得到的是一串字符串,要怎么得到和设置cookie时相同的字段呢 比如 name:Tom
    2018-12-29 16:38:38
好帮手慕阿莹 2018-12-28 11:01:10

是报空指针异常吧,同学是用的什么浏览器呢?是不是eclipse内置的浏览器呢?同学用其他的浏览器试试。

用chrome是可以的,但是用内置的浏览器就会报空指针异常。

http://img1.sycdn.imooc.com//climg/5c25918f00014dbb05000125.jpg

http://img1.sycdn.imooc.com//climg/5c2591990001974807540371.jpg

建议同学以后都用外置浏览器,eclipse的内置浏览器和ie有时候很多东西不支持。不推荐使用。

另外,cookie是存在浏览器端的,所以不用转发也可以获取到。


如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 我就是用的chrome,为什么还是报的空指针异常呢?
    2018-12-29 13:10:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师