2016-03-26 11 views
1

Ich schrieb diesen Code zum Überprüfen und Erstellen eines cookie.It Schleifen durch das Array vom Request-Objekt zurückgegeben.Aber es wirft Ausnahme.Es wird am Anfang der for-Schleife geworfen.getcookies() null Zeiger Ausnahme

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

public class CookieLogin extends HttpServlet { 
    PrintWriter out;  
    boolean flag; 
    public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{ 
       Cookie[] cookies = req.getCookies(); 
       out = res.getWriter();    
       for(int i=0;i<cookies.length;i++){ 
        if(cookies[i].getName().equals("session_started")){ 
         flag=true; 
         out.println("Your session started on "+cookies[i].getValue()); 
        } 
       } 
       if(!flag){ 
        String time = new java.util.Date().toString(); 
        res.addCookie(new Cookie("session_started",time)); 
        out.println("just started"); 
       } 
    } 
} 

Hier ist der Stack Trace von Eclipse.

java.lang.NullPointerException 
    at CookieLogin.doPost(CookieLogin.java:11) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
+1

Es scheint kein Cookie in Ihrer Anfrage zu sein – Rehman

Antwort

2

req.getCookies()null zurückgekehrt, so cookies.length wirft Nullpointer,

sollten Sie überprüfen, wheather die req.getCookies();null ist;

1

Die NullPointerException liegt daran, dass die Methode getCookies() null zurückgibt, wenn keine Cookies vorhanden sind. Und so löst es eine NullPointerException aus.

Lösung: Überprüfen Sie für null

for(int i=0;cookies!=null&&i<cookies.length;i++)