Я просматриваю этот онлайн-учебник Spring на сайте springsource.org.
http://static.springsource.org/docs/Spring-MVC-step-by-step/part2.html
В конце главы 2 вы добавляете bean-компонент к префиксу и суффиксу /WEB-INF/jsp/
и .jsp
к ответам.
Код до сих пор должен в основном загружать index.jsp, когда вы переходите на localhost: 8080/springapp/, который будет перенаправлять на localhost: 8080/springapp/hello.htm, который создает экземпляр HelloController, который теоретически должен отправить вас на /WEB -INF/jsp/hello.jsp. Когда я добавил bean-компонент префикса/суффикса и изменил все свои ссылки на просто «привет» вместо файла jsp с полным путем, я начал получать следующую ошибку:
message Handler processing failed; nested exception is
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext
Я несколько раз пытался вернуться к примерам и проверить наличие опечаток, но до сих пор не могу найти проблему. Любые советы или указатели?
index.jsp (в корне веб-приложения:
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%-- Redirected because we can't set the welcome page to a virtual URL. --%>
<c:redirect url="/hello.htm" />
HelloController.java (без импорта и пакета:
public class HelloController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String now = (new Date()).toString();
logger.info("Returning hello view with " + now);
return new ModelAndView("hello", "now", now);
}
}
Мой файл hello.jsp:
<%@ include file="/WEB-INF/jsp/include.jsp" %>
<!DOCTYPE html>
<html>
<head>
<title>Hello :: Spring Application</title>
</head>
<body>
<h1>Hello - Spring Application</h1>
<p>Greetings, it is now <c:out value="${now}" /></p>
</body>
</html>