#java #spring-boot #jsp #thymeleaf
#java #весенняя загрузка #jsp #thymeleaf
Вопрос:
Я создал страницу JSP для обработки исключений:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<div class="row">
<div class="col-md-6 col-md-offset-3 col-sm-8 offset-sm-2 text-center">
<div class="messageJsp">
<c:out value="${message}" />
</div>
<!--
Failed URL: <c:out value="${url}" />
Exception Message: <c:out value="${exception.message}" />
<c:forEach var="line" items="${exception.stackTrace}">
<c:out value="${line}" />
</c:forEach>
-->
</div>
</div>
И у меня также есть класс Java, который отправляет информацию об исключениях на эту страницу JSP:
@ControllerAdvice
public class GlobalExceptionHandler {
@Value("${message.error.exception}")
private String exceptionMessage;
@ExceptionHandler(value=Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.getModel().put("message", exceptionMessage);
modelAndView.getModel().put("url", req.getRequestURI());
modelAndView.getModel().put("exception", e);
modelAndView.setViewName("app.exception");
return modelAndView;
}
}
И в целях тестирования я намеренно добавил исключение в свой код, чтобы проверить это, и я получаю всю информацию из кода, который закомментирован на странице JSP, и я не понимаю, почему или как это работает, поэтому я надеялся, что смогу получить объяснение:
ПРИМЕЧАНИЕ: после возникновения ошибки я перенаправляюсь на страницу ошибки, и если я щелкну правой кнопкой мыши на странице -> Просмотреть источник страницы, я увижу в комментарии, что мой прокомментированный код JSP фактически выполнен и предоставил информацию для меня (что здорово, но я не понимаю, как)
Источник страницы можно найти здесь: комментарий Stacktrace
Ответ №1:
Существуют html-комментарии ( <!-- -->
), в которых все выполняется на стороне сервера. И комментарии JSP ( <%-- --%>
), которые являются комментариями, относящимися к коду. Таким образом, это позволяет вам выводить скрытую информацию в HTML-комментариях в результате выполнения кода.
Но он также может выполнять непреднамеренный код, который, как предполагается, не прокомментирован. То же самое относится и к синтаксическим ошибкам (т. Е. В тегах JSP).