2014-01-04 3 views
0

Я только начинаю с J2E.Servlet HTTP 500 - NullPointerException

Я получил NullPointerException в строке:

if (!userName.equals("") && userName != null) 

Когда я запускаю сервер так:

http://localhost:8080/SimpleServletProject/SimpleServletPath?name=test 

Он отлично работает. но не принимает значение null.

Всего код:

package org.mojservlet; 

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 


@WebServlet("/SimpleServletPath") 
public class SimpleServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    System.out.println("get method"); 
    response.setContentType("text/html"); 
    PrintWriter writer = response.getWriter(); 
    String userName = request.getParameter("name"); 
    HttpSession session = request.getSession(); 
    ServletContext context = request.getServletContext(); 
    if (!userName.equals("") && userName != null){ 
     session.setAttribute("savedUserName", userName); 
     context.setAttribute("savedUserName", userName); 
    } 
    writer.println("Request parameter has username as " + userName); 
    writer.println("  Session paramter has username as " + (String) session.getAttribute("savedUserName")); 
    writer.println("  context is " + (String) context.getAttribute(userName)); 
}} 
+1

Сначала отправьте нулевой чек. –

+0

Вы должны прочитать stacktrace и попытаться понять сообщение об ошибке ... –

+0

Что сказал Сотириос, и помните, что Java делает [оценку короткого замыкания] (http://en.wikipedia.org/wiki/Short-circuit_evaluation), поэтому (после того, как вы исправите свои условия 'if'), когда username равно null, все тело' if' пропущено без оценки '! userName.equals (" ")' – watery

ответ

12
if (!userName.equals("") && userName != null) 

Должно быть

if (userName != null &&!userName.equals("")) 

Потому что сначала Вам нужно будет проверить на null.So если username = null так Java будет использовать short circuit и не будет проверять второе условие.

+0

Good Catch +1 !!! –

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