关于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
1:sessionid是保存在cookie中的,每次请求之后服务器会从cookie中查找sessionid来判断是否为同一个浏览器窗口,是这样吗?
2:如果保存sessionid的那个cookie被销毁了,那在cookie中的sessionid也自然没了,那服务器上对应的session区域是在默认的30分钟后就自动销毁吗?
3:这是否意味着,session要依赖cookie来使用?
4:cookie是不是由服务器创建,绑定在一个请求上,返回给浏览器本地的?
5:如果只创建了session,是不是服务器会默认生成cookie来存储sessionid并返回给浏览器?
你好同学,你的思路是正确的,请问同学是否还在纠结判断cs是否为null这个问题吗?如果是,这里只是做了一个保险措施,同学不写也是可以的,祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星