1.背景介绍
EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。
由于EL表达式仅仅具有输出功能,而不替代页面中的JSP脚本片段.为了解决这个问题,JSP为我们提供了可以自定义标签库(Tag Library)的功能。
而为了方便开发使用Sun公司又定义了一套通用的标签库名为JSTL(JSP Standard Tag Library),里面定义很多我们开发中常用的方法,方便我们使用。c标签属于其中的核心标签。
2、知识剖析
EL表达式总是放在{}中,而且前边有一个$作为前缀,${}。
获取域中的对象可以直接使用对象名${student}获取对象的属性值可以直接通过“对象.属性名”${student.name},获取Map中属性时可以以直接通过属性的key${map.key}
在指定域中获取属性
${pageScope .user}:当前页面
${requestScope.user}:当前请求
${sessionScope.user}:当前会话
${applicationScope.user}:当前应用
请求参数
参数对象只要用于获取get或post请求中的参数。
param:获取指定的请求参数,如${param.username}
paramValues:获取请求参数数组,如${paramValues.sport[1]}
要使用JSTL和EL表达式就必须引入两个jar包:standard.jar和jstl.jar
然后还需要在JSP页面中通过taglib标签引入标签库。
<%@taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、编码实战
核心标签:
<c:set> <c:out> <c:remove>
value表示值,var表示变量,scope表示作用域
<c:out>的属性default表示如果value为空,那么显示default里的默认值,如果不为空则不显示默认值。escapeXml表示是不是要转换特殊字符,默认为true。el表达式不能显示特殊字符,除非进行html转义,c标签就可以。
<c:if>条件语句,但是没有else,只能有一个条件判断
这里aaa>200的话,把结果储存在rrr里,然后输出,true或者false
<c:choose> <c:when> <c:otherwise>可以实现多条件判断,就像if...else.
el表达式里的param.IQ就是输入参数,在url里输入然后会进行判断。jsp的执行顺序是从上到下的,如果把IQ<90放到上边,那么满足条件的话IQ>140就不显示了。这里我们可以多加上一个条件
迭代,一个简单的例子之前也不知哪里错了没完成了
传入值的循环
items属性表示要被迭代的信息
<c:import>把目标页面导入到当前页面 <c:redirect>重定向 <c:url>重写url,<c:param>写入属性
4、常见问题
EL表达式无法识别特殊符号
5、解决方案
1,使用HTML转义字符
2,使用C标签
PPT:PPT
视频:视频
6.扩展思考
自定义Tag标签
自定义Tag标签
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。