要从browsert中检索cookie,我写了一个简单的函数dispcookies()
。当我编译时,我得到nullpointerException
,然后我只是从dispcookies()
复制了该代码,然后放入processRequest()
那段时间我没有收到错误原因。
HttpServletRequest request;
HttpServletResponse response;
PrintWriter out=null;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
out = response.getWriter();
String name=request.getParameter("name");
String phone=request.getParameter("phone");
Cookie cname=new Cookie("name",name);
Cookie cphone=new Cookie("phone",phone);
response.addCookie(cname);
response.addCookie(cphone);
out.println("here ok");
dispcookies ();
}
catch(Exception E)
{
out.println(E);
}
}
void dispcookies () throws IOException
{
Cookie[] cookies;
Cookie cookie;
cookies=request.getCookies();
if(cookies!=null)
{
for(int i=0;i<cookies.length;i++)
{
cookie=cookies[i];
out.println("cookie name"+cookie.getName());
out.println("cookie name"+cookie.getValue());
}
}
else
{
out.println("no foumd cooke ");
}
}
答案 0 :(得分:0)
在void dispcookies ()
,您正在尝试访问属性请求的属性。 警告:此请求与processRequest
方法的输入参数不同。 dispcookies
对这些输入参数没有可见性,只能看到在类开头定义的属性HttpServletRequest
,并且此属性尚未初始化,因此每次访问它都会导致null指针异常。
如果您想访问processRequest&#39;请求输入参数您必须更改dispcookies
签名以接受此对象作为输入参数并使用它。
顺便说一下:
cookies=request.getCookies();
if(cookies!=null) {
for(int i=0;i ...
可能会导致空指针异常,因为Cookies[]
不能为空但是为空,并且您正在访问其零位而不检查数组的空白。