我有彈簧mvc應用與虛擬jsp頁面(名爲htmlcontent.jsp)。 jsp只包含一個字符串:java.lang.NullPointerException在org.apache.jsp.foo_jsp._jspInit(foo_jsp.java:22)
HalloText
這是jsp的全部內容。控制器看起來如下:
package springapp.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HtmlContentController {
@RequestMapping("/htmlcontent.htm")
public String view() {
return "htmlcontent";
}
}
的bean是在我springapp-web.xml中
<bean id="htmlcontent" class="springapp.web.HtmlContentController">
而在我的web.xml中的servlet映射添加的定義如下:
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
當我撥打以下電話:
http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm
然後我得到一個NullPointerException異常:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error() that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:536)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.NullPointerException
org.apache.jsp.htmlcontent_jsp._jspInit(htmlcontent_jsp.java:22)
org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:338)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
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.30 logs.
在catalina.out中沒有此錯誤的任何堆棧跟蹤。當我嘗試將URL更改爲http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm
,然後我得到:
WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp'
所以,我想,那一定是正確的日誌文件。有人可以給我一個提示,我做錯了什麼?爲什麼空指針堆棧跟蹤不在日誌文件中?
哪個版本的tomcat是這樣的? – skaffman 2011-02-03 13:12:09
如果使用@Controller標記控制器,則不需要在springapp-web.xml中註冊bean。你能發佈你如何配置你的View Resolver嗎?我認爲你必須使用的URL是http:// localhost:8080/htmlcontent.htm,而不是你正在使用的那個。 – Javi 2011-02-03 13:22:00