Tôi có ứng dụng mvc mùa xuân với trang jsp giả (tên htmlcontent.jsp). Jsp chỉ chứa một chuỗi:java.lang.NullPointerException tại org.apache.jsp.foo_jsp._jspInit (foo_jsp.java:22)
HalloText
và đây là toàn bộ nội dung của jsp. Bộ điều khiển trông như sau:
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 được thêm vào trong tôi springapp-web.xml
<bean id="htmlcontent" class="springapp.web.HtmlContentController">
Và ánh xạ servlet trong web.xml của tôi được định nghĩa như sau:
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
Khi tôi gọi sau:
http://localhost:8080/spring-mvc-hsqldb/htmlcontent.htm
sau đó tôi nhận được một 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.
Trong catalina.out không có bất kỳ dấu vết ngăn xếp cho lỗi này. Khi tôi cố gắng thay đổi URL thành http://localhost:8080/spring-mvc-hsqldb/htmlcondsasdadastent.htm
, thì tôi nhận được:
WARNUNG: No mapping found for HTTP request with URI [/spring-mvc-hsqldb/htmlcondsasdadastent.htm] in DispatcherServlet with name 'springapp'
Vì vậy, tôi nghĩ rằng đó phải là tệp nhật ký phù hợp. Ai đó có thể cho tôi một gợi ý, những gì tôi đang làm sai? Và tại sao dấu vết ngăn xếp con trỏ null không có trong tệp nhật ký?
phiên bản nào của tomcat này? – skaffman
Nếu bạn đánh dấu bộ điều khiển bằng @Controller thì bạn không cần đăng ký bean trong tệp springapp-web.xml. Bạn có thể đăng cách bạn đã định cấu hình Trình giải quyết Chế độ xem của mình không? Và tôi nghĩ rằng url bạn phải sử dụng là http: // localhost: 8080/htmlcontent.htm thay vì url bạn đang sử dụng. – Javi
khi tôi gọi localhost: 8080/htmlcontent.htm, sau đó tôi nhận được lỗi 404 (Tài nguyên được yêu cầu (/htmlcontent.htm) không có sẵn. ") – cupakob