EL表达式是什么
一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名}
使用方式
取出request范围内的参数:{pageContext.request.username} 或者是 ${requestScope.username}
取出session范围内的参数:{pageContext.session.username} 或者是 ${sessionScope.username}
等等。。换成相应域对象名即可
EL表中可以进行判断、运算等操作,具体查看官网文档即可
标签是什么
一些用于在jsp中简化获取和操作数值的工具,其本质就是java类,其工作原理如下:当一个含有自定义标签的jsp页面被jsp引擎编译成servlet时,标签被转化成了对一个称为标签处理类的对象操作。于是,当jsp页面被jsp引擎转换成servlet后,实际上标签被转化成了对应处理类的操作
自定义标签
1、创建标签处理器类,继承自SimpleTagSupport类
public class MyTagAction extends SimpleTagSupport
2、编写标签库描述(tld)文件,在tld文件中对自定义中进行描述,在WEB-INF文件夹下面新建一个.tld为扩展名的文件
<taglib 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-jsptaglibrary_2_0.xsd"
version="2.0"><!-- 描述TLD文件 -->
<description>MyTagAction</description>
<display-name>MyTag</display-name>
<tlib-version>1.0</tlib-version>
<!--标签的前缀 -->
<short-name>czp</short-name>
<!--作为tld文件的id,用来唯一标识当前的tld文件,多个tld文件的uri不能重复 -->
<uri>http://www.czp.com/mytag/core</uri><!-- 描述自定义的MyTag标签 -->
<tag><!-- 标签的名字 --><name>doThis</name><!-- 标签的全类名 --><tag-class>com.czp.tag.MyTag</tag-class><!-- 标签体的类型 --><body-content>empty</body-content>
</tag>
</taglib>
3、在jsp页面中导入和使用自定义标签
<%@ taglib uri="http://www.czp.com/mytag/core" prefix="czp"%>
使用自定义的标签
<czp:doThis/>
JSTL标签
一个常用的标签库,常用的标签有四个,如下所示:
核心标签库:可用表达式操作、流程控制等基本操作
<!-- 先要引入标签库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 遍历 -->
<c:forEach items="${users }" var="user">用户名:${user.username}
</c:forEach>
<!-- 流程控制 -->
<c:choose><c:when test="${user.id < 10 }">10</c:when><c:when test="${user.id < 20 }">20</c:when><c:when test="${user.id < 30 }">30</c:when><c:otherwise>40</c:otherwise>
</c:choose><c:if test="${user.id < 10 }" >10</c:if>
等等。。。没啥意思,一种语法而已
国际化和格式化标签:用于格式化显示的数据
<!-- 设置本地环境 -->
<fmt:setLocale><fmt:setLocale value="zh_CN"/><fmt:setLocale value="en_US"/><!-- 用于为请求设置字符编码 -->
<fmt:requesetEncoding><!-- 格式化输出数字 -->
<fmt:formatNumber>:<fmt:formatNumber value="123456789" type="number" pattern="#,##0.00"></fmt:formatNumber><!-- 按着格式输出日期 -->
<fmt:formatDate><fmt:formatDate value="${nowDate }" pattern="yyyy年MM月dd日"/>
<fmt:parseNumber><!-- 按着格式解析日期 -->
<fmt:parseDate>:<fmt:parseDate value="2017-5-6" pattern="yyyy-MM-dd" >
</fmt:parseDate>
函数标签:可以使用一些基本的函数
返回集合中元素的个数:
${fn:length(sessionScope.users)}是否包含:
${fn:contains("ABC", "a")}是否以。。开头:
${fn:startsWith ("ABC", "ab")}下标:
${fn:indexOf("ABCD","aBC")}替换:
${fn:replace("ABC","A","B")}分割:
${fn:split("A,B,C",",")}截取:
${fn:substring("ABC",1,2)}