天天看点

el 与 jstl

el 与 jstl

出现的原由

最早的jsp是在html中书写java代码。 1、一个文件中出现多种语言代码可读性不高,代码混乱 2、不在推荐使用java代码,而是使用标签代替java代码。使用前端人员熟悉的标签结构来构建jsp文件,来吸引前端人员快速开发jsp。

el (用来替换表达式),jstl(逻辑判断,流程控制)

EL全名为Expression Language。

使用格式:${表达式}

我们主要使用el做的操作是

1执行运算 2获取数据(从四大作用域中获取数据) 3获取web开发常用对象 4调用java代码(了解)

运算符: 1.算术运算符有五个:+、-、*或$、/或div、%或mod

el 与 jstl

2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge

el 与 jstl

3.逻辑运算符有三个:&&或and、||或or、!或not

el 与 jstl

4.其它运算符有三个:Empty运算符、条件运算符、()运算符 注:empty运算符,可以用于判断一个字符串是否为空,当字符串null时返回ture,当字符串为空字符串""也返回true。 运算符的优先级:(从上到下,从左到右,依次降低)

el 与 jstl

el的隐含对象:

四大作用域: page,request,sission,applition 取值: ${键值} 相当与pageContext.findAttribute()这个方法。 取值的顺序是page,request,session,application。

el中提供了两种从对象中取值的运算符 “.”,“[]” 注意:用[]访问对象的属性时,属性需要使用双引号括起来。 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。

el表达式中部分内置对象(在el中直接使用的对象,区别于jsp9大内置对象)

与范围有关的 pageScope、requestScope、sessionScope、applicationScop 比如${requestScop.str2}从指定的作用域中去取值

el 与 jstl

与输入有关的

param和paramValues

el 与 jstl

其他的

cookie,header,headerValues,initParam,pageContext...

el 与 jstl

el内置对象pageContext用法 ${pageContext.request.queryString} 取得请求的参数字符串 ${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串 ${pageContext.request.contextPath} 服务的web application 的名称 ${pageContext.request.method} 取得HTTP 的方 ${pageContext.request.protocol} 取得使用的协议 ${pageContext.request.remoteUser} 取得用户名称 ${pageContext.request.remoteAddr } 取得用户的IP 地址 ${pageContext.session.new} 判断session 是否为新的 ${pageContext.session.id} 取得session 的ID ${pageContext.servletContext.serverInfo} 取得主机端的服务信息

调用java代码(自定义函数) --允许在el中调用某个java类的静态方法

1创建一个java类,提供一个static的,带有返回值的公共方法,参数是String str,返回值是str+”元” 2在WEB-INF下新建tld文件 <function> 定义方法 <name>add</name> 方法的名字 <function-class>com.qianfeng.day06.Add</function-class> 方法所在类 <function-signature>java.lang.String add(java.lang.String)</function-signature> 类中的具体方法 注意 返回值和参数类型要包名加类名 </function> 3在需要使用到此方法的jsp文件中添加头部 <%@taglib prefix="s" uri="WEB-INF/add02.tld" %> 4在el中使用标签 ${s:add("200") }

jstl-- (JSP Standard Tag Library,JSP标准标签库)

主要由5个不同的标签库组成

el 与 jstl

1核心标签(重要,包含了输出,流程控制,循环等)

2格式化标签 (提供了数字精度转换,日期转换)

3SQL 标签 (可以操作数据库的标签)

4XML 标签 (支持创建和操作XML文档的标签)

5JSTL 函数 (大部分是通用的字符串处理函数)

核心标签库包含web应用中最常使用的标签,是比较重要的标签库,核心标签库又可分为以下四个部分:

通用标签:用于操作变量 out、set、remove、catch out--用于输出数据

<c:out value="value" escapeXml="{true|false}" default="defaultValue"/></c:out>

el 与 jstl

set--向作用域添加或修改值 <c:set value="value" var="varName" scope="{ page|request|session|application }"/></c:set>

el 与 jstl

remove -- 删除 <c:remove var="varName" scope="{ age|request|session|application }" /> remove 标签与set相反,删除变量 。

el 与 jstl

catch --捕获异常 <c:catch var="ex" > 异常代码</c:catch> ${ex}

el 与 jstl

条件标签:用于流程控制 if、choose、when、otherwise if条件判断 <c:if test="条件" var="varName" scope="{page|request|session|application}"> 条件成立时的输出内容 </c:if> 注意 test中的条件使用el语句进行判断

el 与 jstl

choose、when、otherwise嵌套使用相当于if-elseif-else,也类似为java中的switch <c:choose> <c:when test="条件表达式"> </c:when> <c:when test="条件表达式"> </c:when> <c:otherwise> </c:otherwise> </c:choose>

迭代标签:用于循环遍历集合 forEach、forTokens foreach遍历集合或迭代指定的次数 forTokens按照指定的字符串进行迭代 (字符串拆分,相当于String.split)

el 与 jstl

forTokens参数意义:

el 与 jstl

URL标签:用于针对url的相关的操作 url、import、redirect

url -- 用于在jsp页面中构造一个url地址; import -- 导入一个url地址指向的资源内容; redirect --执行重定向方法

import、url、redirect联合使用,用来以get的形式传递参数。

jstl的使用

1.导包:

el 与 jstl

2.通过 taglib 指令指定需要使用的函数库前缀和 URI