2013-08-20 34 views
0

我有在過濾器類,因爲NPE的困難。我知道它是什麼意思,我檢查了空的可能性,但沒有奏效。如果你能幫助我,請問是什麼原因?這裏是我的代碼..NullPointerException異常的CheckFilter?

public void doFilter(ServletRequest request, ServletResponse response, 
     FilterChain chain) throws IOException, ServletException { 

    HttpServletRequest req = (HttpServletRequest) request; 
    HttpSession session = req.getSession(); 
    RequestDispatcher rd = null; 


    if (session != null) { 

     Person user = (Person) session.getAttribute("person"); 
     String personType=user.getType(); **<----- EXCEPTION HERE** 

讓我告訴你我的項目的一部分。我已經和它涉及的Servlet,JSP的Web應用程序,MySQLdb的,過濾器和Java類ofcourse ...我想檢查所有JSP的與我的過濾器,其檢查記錄的用戶的用戶類型爲USER,ADMIN或經理的安全性。和上面我的代碼我檢查,如果任何會議或不(會話!=空),如果沒有重定向用戶重新登錄頁面...那麼我怎麼能避免NPE在這裏?感謝您的回覆

此代碼與用戶管理員是否繼續和經理與否繼續...第一個範圍是如果(會話!= null)..所以如果它是假的,然後過濾重定向用戶登錄。 JSP。如果你願意,我可以發佈代碼。

回答

3

原因是user目的是null。演員的工作,即使session.getAttribute("person")回報null

你需要有user

Person user = (Person) session.getAttribute("person"); 
if(user != null) { 
    String personType=user.getType(); 
} 
+0

加入到這個null檢查:可能的原因可能是你想找回一個錯誤的會話變量或會話已時間到。你可能想檢查這些東西 –

+0

我的NPE問題已解決..但我無法訪問我的登錄頁面,我不明白爲什麼?在我的NPE問題之前它工作得很好......有什麼建議嗎? – Pitch

+0

只顯示空白頁面。 – Pitch