簡體   English   中英

jsp和servlet中的錯誤

[英]Error in jsp and servlets

堆棧跟蹤:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

java.lang.NullPointerException
    org.apache.jsp.jsp.Report_jsp._jspService(Report_jsp.java:79)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.

至此:只需閱讀stacktrace並相應地修復null指針即可。

stacktrace的第一行應包含引起它的源代碼的行號。 打開Report.jsp的已編譯源代碼,然后轉到該行。 它應該看起來像:

someObject.doSomething();

特別要看那里的點運算符. 用於訪問或調用某些對象實例。 這樣的代碼行上的NullPointerException意味着someObject實際上為null 它只是什么都沒有 您不能訪問它,也不能調用任何方法。

修復NullPointerException所需要做的就是確保someObject 不為 null:

if (someObject == null) {
    someObject = new SomeObject();
}
someObject.doSomething();

或者,如果someObject不為null則僅執行訪問/調用。

if (someObject != null) {
    someObject.doSomething();
}

就是說,由於taglib和EL通常是NPE安全的,這表明您使用老式的scriptlet在JSP文件中編寫了原始Java代碼。 我強烈建議您不要這樣做,而只是在真實的Java類中編寫Java代碼,並使用taglibs控制頁面流和輸出,並使用EL訪問后端數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM