1.EL表达式
2.JSTL:标签函数库
1.EL表达式:为了使jsp中脚本片段尽量的少,页面看着尽量干净
el写法:${表达式};
功能:
(1).获取数据
^1.获取常量:${常量}
^2.获取变量:${变量},el会调用pageContext里的findAttribute()在四大作用域里查找,找到输出,找不到不输出
^3.获取集合、数组、map、javaBean等:${list[0]},${map[name]},${map["name"]}
注:中括号里有无双引号意义不同,无双引号表示是一个变量,有双引号表示是常量,可以直接使用
(2).进行运算
^1.算术运算:若有非数值的参与算术运算,会将非数值转成数值后再运算
^2.比较运算:>:gt <:lt >=:ge <=:le !=:ne ==:eq
^3.逻辑运算:&& || !
^4.三元运算:${10>9?"yes":"no"}
^5.空值运算:${empty list}:判断list是否为null
(3).获取常用开发对象
pageContent:通过pageContent可以获取九大隐式对象(pageContent不是pageContext,pageContext是隐式对象之一,pageContent是el表达式里的一个常用开发对象)
pageScope:page域中属性组成的map
requestScope:request域中属性组成的map
sessionScope:session域中属性组成的map
applicationScope:application域中属性组成的map
param:所以请求参数组成的map<String,String>
paramValues:所以请求参数组成的map<String,String[]>
initParam:所有web的初始化参数组成的map
header:所有请求头组成的map<String,String>
headerValues:所有请求头组成的map<String,String[]>
cookie:所有cookie组成的map
(4).调用方法
^1.写一个类包含el要调用的方法,该方法必须是静态
^2.写一个tld文件描述要调用的方法
^3.通过taglib指令引入tld文件,从而调用方法
2.JSTL:标签函数库,一般与el表达式配合取代jsp中的脚本片段
(1).标签库的种类
核心标签库:c
国际化标签库:fmt
数据库标签库:sql
xml标签库:xml
el标签库:el
(2).核心标签库的常用方法:
^1.引入标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
^2.输出:
<c:out value="${addr}" default="上海" escapeXml="true"/>
注:escapeXml:是否转译
^3.设置或修改域中的属性值:
<c:set var="name" value="aaa"/>
<c:set target="${map}" property="1" value="aaa"/>
^4.删除属性值
<c:remove var="name" scope="page"/>
^5.捕捉异常
<c:catch var="e"><% int i = 1/0; %></c:catch>
${e.message}
^6.if条件判断
<c:if test="${age}>20">XXX</c:if>
^7.choose,when,otherwise条件判断
<c:choose>
<c:when test="${age}>20">XXX</c:when>
<c:otherwise>XXX</c:otherwise>
</c:choose>
^8.循环遍历
<c:forEach items="${city}" var="c" >${c}</c:forEach>
^9.拆分字符串
<c:forTokens items="www.baidu.com" var="str" delims=".">${str}</c:forTokens>
^10.设置参数
<c:param name="username" value="zhang"/>
^11.import
<c:import url="/index.jsp" var="p" scope="page"/>
^12.redirect重定向
<c:redirect url="/index.jsp" content="${pageContent.request.contextPath}"/>
^13.url
<c:url value="/index.jsp" content="${pageContent.request.contextPath}"/>