EL表达式
- 传统JSP中用Java代码显示数据的弊端:类型转换,需要处理
null
- 目的:消除jsp中的Java代码
语法:
${EL表达式}
- EL不需要导包
- 在EL中调用属性,其实是调用的getXxx()方法
${范围.对象.属性.属性的属性}
.
:使用方便[]
:如果是常量属性,需要使用双引号/单引号引起来;比点操作符更加强大
[]
优点:
- 可以容纳一些特殊符号
". ? -"
[]
可以容纳变量属性(可以动态赋值)String x = "a"; ${requestScope.a}等价于${requestScope["a"]}等价于${${requestScope[x]}
- 可以处理数组
${requestScope.arr[0]}
EL隐含对象
Scope对象(EL域对象)
pageScope,requestScope,sessionScope,applicationScope变量用来访问存储在各个作用域层次的变量。
- 如果不指定域对象,则默认根据从小到大顺序依次取值。
param和paramValues对象
param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。$(param.name)
$(paramValues.name[0])
pageContext对象
pageContext对象是JSP中pageContext对象的引用。通过pageContext对象,可以访问JSP中所有隐式对象。
${pageContext}
${pageContext.request}
${pageContext.sessoin}
${pageContext.request.serverPort}
- 方法名去掉括号和get并且首字母小写
JSTL
- 需要引入jar :
jstl.jar
Maven配置
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
- 引入tablib
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
在IDEA中配置Maven,在jsp前加上
<%@ page isELIgnored="false"%>
才能正确解析EL表达式
核心标签
格式化标签
SQL 标签
XML 标签
JSTL 函数
核心标签
<c:set>
赋值
I. 在某个作用域之中(4个范围对象),给某个变量赋值
<%--
request.setAttribute("name", "zhangsan") ;
--%>
<c:set var="name" value="zhangsan" scope="request"/>
${requestScope.name }
<c:set var="变量名" value="变量值" scope="4个范围对象的作用域"/>
II. 给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)
<c:set target="${requestScope.student}" property="sname" value="zxs" />
III. 给map对象赋值
<c:set target="${requestScope.countries}" property="cn" value="中国" />
<c:set target="对象" property="对象的属性" value="赋值" />
- 注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)
<c:out>
显示
true:<c:out value='<a href="https://www.baidu.com">百度</a>' default="当value为空的,显示的默认值" escapeXml="true" />
false: <c:out value='<a href="https://www.baidu.com">百度</a>' escapeXml="false" />
显示如下:
<c:remove >
删除属性
<c:remove var="a" scope="request"/>
删除request域中删除a变量
选择语句
<c:if test="${1>0}" scope="request" var="result">
true
</c:if>
result
存储判断的bool值
多重if:
<c:choose>
<c:when test=""></c:when>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>
- 在使用
test=""
一定要注意后面是否有空格
迭代
<c:forEach begin="0" end="5" step="1" varStatus="status">
${status.index}
</c:forEach>
<c:forEach var="name" items="${集合}">
${name}
</c:forEach>
格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。
SQL 标签
JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。
XML 标签
JSTL XML标签库提供了创建和操作XML文档的标签。
JSTL 函数
JSTL包含一系列标准函数,大部分是通用的字符串处理函数。
参考链接:
版权属于:moluuser
本文链接:https://archive.moluuser.com/archives/43/
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。