空指针???
来源: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
相似问题