2013-04-28 39 views
0

這可能是一個非常愚蠢的問題,即時嘗試弄清楚爲什麼即時通過空例外,請幫助。jsp和.equals和.trim()空指針異常

String username = (String)session.getAttribute("username"); 

if (!username.equals("ADMIN")) { 
    request.setAttribute("Error", "You are not the admin"); 
    RequestDispatcher rd = request.getRequestDispatcher("LoginPage.jsp"); 
    rd.forward(request,response); 
} 

IM試圖讓JSP來檢查用戶名是否等於「ADMIN」,如果它不等於管理,然後它會給出一個錯誤,然後請求登錄頁面。

,但我得到了行一個空指針異常:

if (!username.equals("ADMIN")) { 

感謝

+1

看起來您在會話中沒有屬性「用戶名」。也許你會將會話屬性與請求參數混淆。 – 2013-04-28 13:50:59

回答

2

那是因爲username是空

最佳做法是說if (!"ADMIN".equals(username))

由於常量字符串「 ADMIN「是一個非空值,在其上調用equals()不會導致任何錯誤並且將是安全的

或做username空校驗比較之前:

​​
0

貌似username是空的,即不存儲在會話。如果使用像Eclipse這樣的IDE,則可以放置一個斷點,用鼠標懸停在該術語上,然後查看哪些內容爲空。