2013-06-25 70 views
-1

我要顯示存儲在瀏覽器,但得到空指針異常所有Cookie的servlet空指針異常,同時運行在瀏覽器

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class DisplayCookie extends HttpServlet{ 

    public void doGet(HttpServletRequest req,HttpServletResponse res)throws  IOException,ServletException{ 

    Cookie[] c=req.getCookies(); 
    res.setContentType("text/html"); 
    PrintWriter pw=res.getWriter(); 
    int i=0; 
    while(i < c.length){ 
     String cname=c[i].getName(); 
     String cvalue=c[i].getValue(); 
     pw.println("name="+cname+" ;value="+cvalue); 
     i++; 
     } 
    pw.close(); 
    } 
} 

我怎樣才能解決這個問題?

我得到這樣的堆棧跟蹤。

HTTP Status 500 - 
type Exception report message 
description The server encountered an internal error that prevented it from fulfilling this request. 

exception 
java.lang.NullPointerException 

DisplayCookie.doGet(DisplayCookie.java:14) 

javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 

javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
+1

似乎req.getCookies();返回null;在從c獲取元素之前執行NOT NULL檢查。 – kosa

+1

你的代碼哪一行拋出異常?你可以發佈錯誤數據 – Siva

+0

@ user2503916它是沒有火箭科學發現哪個變量將'空'。 –

回答

2

docs

返回: 所有的餅乾的陣列包含在此請求,或者如果請求沒有餅乾

括起來while環在帶有警戒聲明的檢查中:

if (c != null) { 
    while(i<c.length) { 
    ... 
    } 
} 
+0

當我使用如果循環,因爲你說我離開,如果loop.I認爲如果條件不令人滿意..我應該怎麼做? –

+0

這是編譯或運行時錯誤嗎?如果是編譯錯誤,請檢查是否正確地包含了while語句塊 – Reimeus

+0

這是一個運行時錯誤。錯誤行是上面代碼中的while循環行。實際上我想要做的是創建一個名爲「addcookie.html」的html頁面,其中我插入了一個cookie數據並執行了一個servlet以將該cookie保存到瀏覽器「setcookie.java」和我在這裏顯示的第三個servlet,名爲「Displaycooke.java」,我想顯示來自瀏覽器的所有cookie。 –