空指针???
来源:3-1 浏览器Cookie
Ctrlzhao
2019-11-17 23:41:45
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 imoocIndexServlet
*/
@WebServlet("/cookies/index")
public class imoocIndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public imoocIndexServlet() {
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;
for(Cookie c:cs) {
System.out.println(c.getName()+":"+c.getValue());
if(c.getName().equals("user")) {
user=c.getValue();
break;
}
}
if(user==null) {
response.getWriter().println("user ont login");
}else {
response.getWriter().println("user:"+user);
}
}
}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 ImoocLoginServlet
*/
@WebServlet("/cookie/login")
public class ImoocLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ImoocLoginServlet() {
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");//对象与对象名;
response.addCookie(cookie);
response.getWriter().println("login success");
}
}4回答
好帮手慕小班
2019-11-18
同学你好,1、根据同学贴出的报错信息,在/cookies/index下的imoocIndexServlet中第33行出现空指针异常,同学可以查看自己的33行是什么内容,尝试输出一下cs的内容,看是否为null,如果是null,再对它进行遍历输出,就会报出空指针异常的错误。
如果数组cs为null,就是没有获取到cookie的内容,同学可以再次访问/cookie/login的ImoocLoginServlet后,再来尝试。
2、关于cs内容出现空指针的原因及解决在课程中有具体的讲解,在课程16分03秒后,同学可以再来复习一下。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小班
2019-11-18
同学你好,出现这个问题是因为,同学的@WebServlet("")中两个Servlet中一个是cookie一个是cookies,这两个需要保持一致,例如:


这是因为cookie的作用范围是当前目录和当前目录的子目录. 但不能作用于当前目录的上一级目录。也就是说login在这个/cookies路径下,只能在当前路径和当前路径的子路径有效。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Ctrlzhao
提问者
2019-11-18
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 imoocIndexServlet
*/
@WebServlet("/cookies/index")
public class imoocIndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public imoocIndexServlet() {
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();
if(cs==null) {
response.getWriter().println("user ont login");
return;
}
String user=null;
//循环遍历出用户信息
for(Cookie c:cs) {
System.out.println(c.getName()+":"+c.getValue());
if(c.getName().equals("user")) {
user=c.getValue();
break;
}
}
//判断是否得到用户信息
if(user==null) {
response.getWriter().println("user ont login");
}else {
response.getWriter().println("user:"+user);
}
}
}
Ctrlzhao
提问者
2019-11-17

相似问题