2013-06-29 2 views
1

привет. Я занимаюсь отслеживанием сеансов с помощью HttpServlets. В этом коде (в блоке else) я получаю исключение ошибки null-указателя ошибки. Кто-нибудь может мне помочь, пожалуйста! БлагодаряNullPointerException при выполнении отслеживания сеанса

@WebServlet(name = "SessionTracking", urlPatterns = {"/SessionTracking"}) 

public class SessionTracking extends HttpServlet { 

/** 
* Processes requests for both HTTP 
* <code>GET</code> and 
* <code>POST</code> methods. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    HttpSession session = request.getSession(true); 
    Integer counter = (Integer)session.getAttribute("sessionCounter"); 

    if (session.isNew()) 
    { 
     counter = new Integer(1); 
     session.setMaxInactiveInterval(10); 
    } 
    else 
    { 
     counter = new Integer(counter.intValue() + 1);//nullPointerException Here 
    } 

    session.setAttribute("sessionCounter", counter); 
    try { 
     /* TODO output your page here. You may use following sample code. */ 
     out.println("<!DOCTYPE html>"); 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Servlet SessionTracking</title>");    
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<h1>Session Tracking: </h1>"); 
     out.println("<p>You have visited this page <b>" + counter + "</b> times</p>"); 
     out.println("<h3>Session Data: </h3>"); 
     out.println("New Session: " + session.isNew() + "<br/>"); 
     out.println("Session ID: " + session.getId()); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
    finally 
    {    
     out.close(); 
    } 
} 

ответ

1

Кажется, что session.getAttribute("sessionCounter") возвращается нуль, даже если сессия не является новым в соответствии с session.isNew(). Попробуйте заменить session.isNew() на counter == null и посмотреть, не работает ли он. Эффект должен быть одинаковым.

+1

Нет, приведение значения null не приведет к возникновению исключения. –

+0

Спасибо, что отлично работает – mbass

Смежные вопросы