关于cookie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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" ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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
1:sessionid是保存在cookie中的,每次请求之后服务器会从cookie中查找sessionid来判断是否为同一个浏览器窗口,是这样吗?
2:如果保存sessionid的那个cookie被销毁了,那在cookie中的sessionid也自然没了,那服务器上对应的session区域是在默认的30分钟后就自动销毁吗?
3:这是否意味着,session要依赖cookie来使用?
4:cookie是不是由服务器创建,绑定在一个请求上,返回给浏览器本地的?
5:如果只创建了session,是不是服务器会默认生成cookie来存储sessionid并返回给浏览器?
你好同学,你的思路是正确的,请问同学是否还在纠结判断cs是否为null这个问题吗?如果是,这里只是做了一个保险措施,同学不写也是可以的,祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧