【问题标题】:Commented code on a JSP page gets executed?JSP 页面上的注释代码被执行?
【发布时间】:2021-01-08 10:39:17
【问题描述】:

我已经创建了一个 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 comment

【问题讨论】:

    标签: java spring-boot jsp thymeleaf


    【解决方案1】:

    存在 html cmets (&lt;!-- --&gt;),其中所有内容都在服务器端执行。还有 JSP cmets (&lt;%-- --%&gt;),它们是代码相关的 cmets。因此,这允许您在 HTML cmets 中输出隐藏信息作为代码执行的结果。

    但它也可以执行非预期的代码,假设被注释掉了。这同样适用于语法错误(即在 JSP 标记中)。

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2012-05-26
      • 2020-09-27
      • 2019-12-26
      相关资源
      最近更新 更多