我们已经知道el是jsp-2.0规范的一部分,tomcat-5.x版本以上都已经能够支持jsp-2.0规范,但在更低版本的tomcat和webphere,weblogic中还是无法使用这一便捷方式。
禁用el表达式,是使用了isELIgnore="true"这样一条jsp指令(directive),请注意大小写。
还有一种批量禁用el的方法,我们可以在WEB-INF/web.xml中使用
jsp-property-group标签批量禁用el,我们在13-02/WEB-INF/web.xml中进行如下配置。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config>
</web-app>
实际上还有第三种方法可以禁用掉所有jsp中的el表达式,那就是把web.xml定义为2.3版。
=========================
1.作用域
使用el的时候,默认会以一定顺序搜索四个作用域,将最先找到的变量值显示出来。
根据作用域访问对象 ${requestScope.username}
1.${pageContext.request.contextPath}返回的是request.getContextPath()的值,不能使用${request.contextPath}的形式替代。
2.pageScope, requestScope, sessionScope, appliationScope都可以看作是Map型变量,调用其中的数据可以使用${pageScope.name}或${pageScope["name"]}的形式,这两种写法是等价的。
6.ServletContext.getInitParamter()指的应用的初始变量,这些变量都是定义在web.xml中的。
<context-param>
<param-name>username</param-name>
<param-value>username with context param</param-value>
<param-name>username</param-name>
<param-value>username with context param</param-value>
</context-param>
如果想在jsp中显示${name}而不让jsp把它当作el计算出来,可以写成\${name},这样最后显示的结果就是${name}了。