关于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 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星