4.6.1 实现无脚本的JSP页面 4.6.2 禁用EL计算

4.6.1 实现无脚本的JSP页面

为了关闭JSP页面中的脚本元素,要使用jsp-property-group元素以及url-patternscripting-invalid两个子元素。url-pattern元素定义了要禁用脚本的JSP页面的URL模式。

关闭所有JSP页面中的脚本

将一个应用程序中所有JSP页面的脚本都关闭:

1
2
3
4
5
6
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>

注意

在部署描述符中只能有一个jsp-config元素,如果需要同时禁用脚本和EL,则需要:
jsp-config元素下编写两个jsp-property-group子元素,一个用来禁用脚本,一个用来禁用EL

4.6.2 禁用EL计算

在某些情况下,比如,当需要在JSP 2.0及其更高版本的容器中部署JSP 1.2应用程序时,可能就需要禁用JSP页面中的EL计算了。目前有两种方式可以禁用JSP中的EL计算。

通过page指令来关闭EL表达式计算

page指令的isELIgnored属性设为true,即可关闭该JSP页面中EL表达式的计算.如下代码所示:

1
<%@ page isELIgnored="true" %>

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

通过部署描述符来关闭EL表达式计算

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

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

在指定JSP页面中关闭EL表达式计算

下面举一个例子,示范如何在名为noEI.jspJSP页面中禁用EL计算:

1
2
3
4
5
6
<jsp-config>
<jsp-property-group>
<url-pattern>/noEl.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>

关闭所有JSP页面中的EL表达式计算

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

1
2
3
4
5
6
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>

满足以上两个条件其中一种即可关闭EL表达式计算

例如,虽然一个JSP页面中page指令的isELIgnored属性设为false,但该JSP页面的URL与部署描述符中禁用了EL计算的模式相匹配,那么该页面的EL计算也将被禁用。