是否使用EL表达式的配置

        今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。

        网上搜索将EasyTemplate所在的页增加<%@ page isELIgnored="true"%>解决。

JSP 2.0的一个主要特点是它支持表达语言(expression language)。JSTL表达式语言可以使用标记格式方便地访问JSP的隐含对象和JavaBeans组件,JSTL的核心标记提供了流程和循环控制功能。自制标记也有自定义函数的功能,因此基本上所有scriptlet能实现的功能都可以由JSP替代。在JSP 2.0中,建议尽量使用EL而使JSP的格式更一致。

一.在web.xml的<jsp-property-group>中可以控制一组JSP是否使用EL

<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素。
        其中<taglib>元素在JSP 1.2时就已经存在;而<jsp-property-group>是JSP 2.0 新增的元素,其目的是给一定范围类的JSP文件设置一些特性。
        <jsp-property-group>元素主要有八个子元素,它们分别为:
        1.<description>:设定的说明;
        2.<display-name>:设定名称;
        3.<url-pattern>:设定值所影响的范围,如:/CH2 或 /*.jsp,具体来说,是义需要设置特性的JSPURL,比如<url-pattern>/jsp/xxx.jsp</url-pattern> 表示访问路径为/jsp/xxx.jsp需要设置一些特性
        4.<el-ignored>:若为true,表示不支持EL 语法,具体来说,符合url-pattern访问路径的JSP需要忽略表达式语言,也就是说JSP中有类似"${1+2}"这样的表达式会被直接输出到页面,不会被数学运算之后再输出
        5.<scripting-invalid>:若为true,表示不支持<% scripting %>语法,具体来说,符合url-pattern访问路径的页面是否支持<%%>这样的语法:如果设置为trueJSP页面中包含<% scripting %>语法,将会报错
        6.<page-encoding>:设定JSP 网页的编码,即设置符合url-pattern访问路径的页面的编码设置
        7.<include-prelude>:设置JSP 网页的抬头,扩展名为.jspf,表示符合url-pattern访问路径的JSP页面头部默认包含的文件
        8.<include-coda>:设置JSP 网页的结尾,扩展名为.jspf,即表示符合url-pattern访问路径的JSP页面尾部默认包含的文件

一个简单的<jsp-config>元素完整配置:

<jsp-config>
    <taglib>
        <taglib-uri>Taglib</taglib-uri>
        <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
    </taglib>
    <jsp-property-group>
        <description>Special property group for JSP Configuration JSP example.</description>
        <display-name>JSPConfiguration</display-name>
        <url-pattern>/jsp/* </url-pattern>
        <el-ignored>true</el-ignored>
        <page-encoding>GB2312</page-encoding>
        <scripting-invalid>true</scripting-invalid>
        <include-prelude>/include/prelude.jspf</include-prelude>
        <include-coda>/include/coda.jspf</include-coda>
    </jsp-property-group>
</jsp-config>

 二.在每个JSP中也可以指定是否该JSP使用EL

在page directive中的isELIgnored属性用来指定是否忽略。格式为:

<%@ page isELIgnored="true|false"%>

如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000 % 20}</p>在isELIgnored="true"时输出为${2000 % 20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。

你可能感兴趣的:(jsp,web.xml,EL,EasyTemplate)