isScriptingEnabled 属性

isScriptingEnabled是 JSP page指令的核心属性之一,用于控制当前 JSP 页面是否允许使用 Java 脚本元素(包括 Scriptlet<% ... %>、声明标签<%! ... %>、表达式标签<%= ... %>)。

核心细节:

  • 语法格式<%@ page isScriptingEnabled="true|false" %>

  • 默认值true(允许使用所有 Java 脚本元素);

  • 取值为 false 时的效果

    1. 页面中所有 Java 脚本元素(<% %>/<%! %>/<%= %>)都会被 JSP 容器拒绝,编译时抛出异常;
    2. 强制开发者使用 EL、JSTL、JSP 动作标签替代脚本元素,实现 “无脚本 JSP”(推荐的企业级开发规范)。

应用场景:

  • 规范团队开发:避免 JSP 页面中嵌入大量杂乱的 Java 代码,提升页面可维护性;
  • 安全管控:减少脚本元素可能带来的代码注入、逻辑漏洞等安全风险;
  • 前后端分离:让 JSP 仅专注于视图展示,业务逻辑交由 Servlet/Controller 处理。

示例:

1
2
3
4
5
6
7
8
9
<%@ page contentType="text/html;charset=UTF-8" isScriptingEnabled="false" %>
<%-- 以下脚本元素会编译失败 --%>
<% String name = "张三"; %>
<%! int count = 0; %>
<%= name %>

<%-- 仅允许EL/JSTL/动作标签 --%>
${requestScope.name}
<jsp:include page="header.jsp"/>