关于cookie

关于cookie

package com.mason.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 MasonLoginServlet
 */
@WebServlet("/cookies/login")
public class MasonLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MasonLoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("用户登录成功");
		Cookie cookie=new Cookie("user", "admin");
		cookie.setMaxAge(60*60*24*7);
		response.addCookie(cookie);
		response.getWriter().println("login success");
	
	}


}
package com.mason.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 MasonIndexServlet
 */
@WebServlet("/cookies/index")
public class MasonIndexServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MasonIndexServlet() {
        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();
		String user=null;
		if(cs==null) {
			response.getWriter().println("user not login");
			return;
		}
		for (Cookie cookie : cs) {
			System.out.println(cookie.getName()+"..."+cookie.getValue());
			if(cookie.getName().equals("user")) {
				user=cookie.getValue();
				break;
			}
		}
		if(user==null) {
			response.getWriter().println("user not login");
		}else {
			response.getWriter().println("user :"+user);
		}
	
	}

}

我的思路是这样的:

MasonLoginServlet这个servlet设置了一个cookie返回给了浏览器本地,然后MasonIndexServlet中有Cookie[] cs=request.getCookies();这行代码来获取浏览器本地所有的cookie,包括其他网站保存下来的cookie,这样的话,就算MasonLoginServlet中设置的cookie被销毁了,MasonIndexServlet也不至于不能读取到别的网站的cookie,那为什么会空指针异常呢?

请老师解答一下,看下是不是我的思路有问题?谢谢老师!

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

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

3回答
慕布斯645313 2019-03-27 19:00:53

哥们你看一下这个博客,https://blog.csdn.net/qq_32331073/article/details/80365871,写的很明白。

  • 提问者 MasonM #1
    非常谢谢你!
    2019-03-27 19:09:34
提问者 MasonM 2019-03-27 13:57:56

 1:sessionid是保存在cookie中的,每次请求之后服务器会从cookie中查找sessionid来判断是否为同一个浏览器窗口,是这样吗? 

2:如果保存sessionid的那个cookie被销毁了,那在cookie中的sessionid也自然没了,那服务器上对应的session区域是在默认的30分钟后就自动销毁吗? 

3:这是否意味着,session要依赖cookie来使用?

 4:cookie是不是由服务器创建,绑定在一个请求上,返回给浏览器本地的?

 5:如果只创建了session,是不是服务器会默认生成cookie来存储sessionid并返回给浏览器?

  • 1、同学的理解是正确的。2、是的,session自动销毁的时间是30分钟。3、在实际的开发中,默认登录一般都是cookie和session一起使用的,session还有存储其他数据的作用。4、是的,同学理解的是正确的。5、cookie是需要同学使用response对象来返回给浏览器的,譬如response.addCookie(cookie);这段代码,祝学习愉快~
    2019-03-27 17:02:31
  • 提问者 MasonM 回复 chrismorgen #2
    老师那我关于第五个问题还有一点小疑惑:如果我在服务器只创建了session,但没有创建cookie,那浏览器怎样去获取包含sessionid的cookie呢?如果没有的话,之后再次发送请求的话,服务器就无法获取到带有sessionid的cookie了呀?
    2019-03-27 18:16:37
chrismorgen 2019-03-27 13:51:15

你好同学,你的思路是正确的,请问同学是否还在纠结判断cs是否为null这个问题吗?如果是,这里只是做了一个保险措施,同学不写也是可以的,祝学习愉快~

  • 提问者 MasonM #1
    好的谢谢老师,我还想问下一些其他问题,我在新的我要回答中把问题提出,请老师解答一下,非常感谢!!!
    2019-03-27 13:56:16
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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