空指针???

来源: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秒后,同学可以再来复习一下。

http://img.mukewang.com/climg/5dd1fe5809557ed013790900.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

1
htrlzhao
h 新的问题出来了;浏览器输入:login;后在输入index没有捕获用户信息! 代码在下面:
h019-11-18
共1条回复

好帮手慕小班

2019-11-18

同学你好,出现这个问题是因为,同学的@WebServlet("")中两个Servlet中一个是cookie一个是cookies,这两个需要保持一致,例如:

http://img.mukewang.com/climg/5dd2655a09caf5dd05570102.jpg

http://img.mukewang.com/climg/5dd265650902ae5805570098.jpg

这是因为cookie的作用范围是当前目录和当前目录的子目录. 但不能作用于当前目录的上一级目录。也就是说login在这个/cookies路径下,只能在当前路径和当前路径的子路径有效。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

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);
		}
	}	
}

http://img.mukewang.com/climg/5dd212d909adfe9108210204.jpg

0

Ctrlzhao

提问者

2019-11-17

http://img.mukewang.com/climg/5dd16acb095f0e1012560796.jpg

0

0 学习 · 9666 问题

查看课程