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

 
clipboard.png

 

然后还需要在JSP页面中通过taglib标签引入标签库。

<%@taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3、编码实战
核心标签:

<c:set> <c:out> <c:remove>

clipboard.png

value表示值,var表示变量,scope表示作用域

clipboard.png

<c:out>的属性default表示如果value为空,那么显示default里的默认值,如果不为空则不显示默认值。escapeXml表示是不是要转换特殊字符,默认为true。el表达式不能显示特殊字符,除非进行html转义,c标签就可以。

<c:if>条件语句,但是没有else,只能有一个条件判断

clipboard.png

这里aaa>200的话,把结果储存在rrr里,然后输出,true或者false

<c:choose> <c:when> <c:otherwise>可以实现多条件判断,就像if...else.

clipboard.png

el表达式里的param.IQ就是输入参数,在url里输入然后会进行判断。jsp的执行顺序是从上到下的,如果把IQ<90放到上边,那么满足条件的话IQ>140就不显示了。这里我们可以多加上一个条件

clipboard.png

迭代,一个简单的例子之前也不知哪里错了没完成了

clipboard.png

传入值的循环

clipboard.png

items属性表示要被迭代的信息

<c:import>把目标页面导入到当前页面 <c:redirect>重定向 <c:url>重写url,<c:param>写入属性

clipboard.png

4、常见问题
EL表达式无法识别特殊符号

5、解决方案
1,使用HTML转义字符

2,使用C标签

PPT:PPT

视频:视频

6.扩展思考
自定义Tag标签

自定义Tag标签

7.参考文献
http://www.runoob.com/jsp/jsp...


用户bPbdDlb
422 声望36 粉丝