Выполняется код с комментариями на странице JSP?

#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).