返回介绍

8.13 如何在 JSP 2.0 及其更高版本中配置 EL

发布于 2025-04-22 20:10:02 字数 2318 浏览 0 评论 0 收藏

有了 EL、JavaBeans 和定制标签,就可以编写免脚本的 JSP 页面了。JSP 2.0 及其更高的版本中还提供了一个开关,可以使所有的 JSP 页面都禁用脚本。现在,软件架构师可以强制编写免脚本的 JSP 页面了。

另一方面,在有些情况下,可能还会需要在应用程序中取消 EL。例如,正在使用与 JSP 2.0 兼容的容器,却尚未准备升级到 JSP 2.0,那么就需要这么做。在这种情况下,可以关闭 EL 表达式的计算。

8.13.1 实现免脚本的 JSP 页面

为了关闭 JSP 页面中的脚本元素,要使用 jsp-property-group 元素以及 url-pattern 和 scripting- invalid 两个子元素。url-pattern 元素定义禁用脚本要应用的 URL 样式。下面展示如何将一个应用程序中所有 JSP 页面的脚本都关闭:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <scripting-invalid>true</scripting-invalid>
  </jsp-property-group>
</jsp-config>

注意:

在部署描述符中只能有一个 jsp-config 元素。如果已经为禁用 EL 而定义了一个 jsp-property-group,就必须在同一个 jsp-config 元素下,为禁用脚本而编写 jsp- property-group。

8.13.2 禁用 EL 计算

在某些情况下,比如,当需要在 JSP 2.0 及其更高版本的容器中部署 JSP 1.2 应用程序时,可能就需要禁用 JSP 页面中的 EL 计算了。此时,出现的 EL 结构,就不会作为 EL 表达式进行计算。目前有两种方式可以禁用 JSP 中的 EL 计算。

第一种,可以将 page 指令的 isELIgnored 属性设为 True,像这样:

<%@ page isELIgnored="true" %>

isELIgnored 属性的默认值为 False。如果想在一个或者几个 JSP 页面中关闭 EL 表达式计算,建议使用 isELIgnored 属性。

第二种,可以在部署描述符中使用 jsp-property-group 元素。jsp-property-group 元素是 jsp- config 元素的子元素。利用 jsp-property-group 可以将某些设置应用到应用程序中的一组 JSP 页面中。

为了利用 jsp-property-group 元素禁用 EL 计算,还必须有 url-pattern 和 el-ignored 两个子元素。url-pattern 元素用于定义 EL 禁用要应用的 URL 样式。el-ignored 元素必须设为 True。

下面举一个例子,展示如何在名为 noEI.jsp 的 JSP 页面中禁用 EL 计算。

<jsp-config>
  <jsp-property-group>
    <url-pattern>/noEl.jsp</url-pattern>
    <el-ignored>true</el-ignored>
  </jsp-property-group>
</jsp-config>

也可以像下面这样,通过给 url-pattern 元素赋值*.jsp,来禁用一个应用程序中的所有 JSP 页面的 EL 计算:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <el-ignored>true</el-ignored>
  </jsp-property-group>
</jsp-config>

无论是将其 page 指令的 isELIgnored 属性设为 True,还是其 URL 与 el-ignored 为 True 的 jsp-property-group 的 URL 模式相匹配,都将禁用 JSP 页面中的 EL 计算。假如将一个 JSP 页面中 page 指令的 isELIgnored 属性设为 False,但其 URL 与在部署描述符中禁用了 EL 计算的 JSP 页面的模式匹配,那么该页面的 EL 计算也将被禁用。

此外,如果使用的是与 Servlet 2.3 及其更低版本兼容的部署描述符,那么 EL 计算已经默认关闭,即便使用的是 JSP 2.0 及其更高版本的容器,也一样。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。