34、JAVA_WEB开发基础之EL表达式和标签

版权声明:chaizepeng https://blog.csdn.net/chaizepeng/article/details/86700376

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)}

猜你喜欢

转载自blog.csdn.net/chaizepeng/article/details/86700376