Java基础强化(三)-- EL与JSTL
EL与JSTL是Jsp开发中常用的两个简化开发的小工具,在日后的框架学习中也有可能用到。内容比较简单,主要罗列知识点,JSTL部分有示例代码,El部分容易理解,不给出实例代码。有学习兴趣的同学可以自行落实代码,加强学习。
一、EL概述
1.概念:
Expression Language 表达式语言
2.作用:
替换和简化jsp页面中的java代码的编写
3.语法:
${表达式}
4.忽略El:
设置jsp中page指令:isELIgnored=“true” 忽略当前jsp页面中所有的el表达式
\${表达式}:忽略当前el表达式
二、EL使用
1.运算:
El表达式支持以下运算符:
1.算数运算符: + - * /(div) %(mod)
2.比较运算符:> < == >= <= !=
3.逻辑运算符:&&(and) ||(or) !(not)
4.空运算符:empty(用于判断字符串、集合或数组对象是否为null或长度为0)
举例:
${empty list} 判断list是否为nul或长度为0,若是则返回true
${not empty list} 判断list是长度大于0,若是则返回true
2.获取值
el表达式只能从域中获取对象的值
语法:
1.${域名.键名}:从指定域中获取指定键的值
域名称:
(1)pageScope --> pageContext
(2)requestScope -->request
(3)sessionScope -->session
(4)applicationScope -->application(ServletContext)
举例:
在request域中存储了name=张三
则可以通过${requestScope.name}的EL表达式获取张三
2.${键名}:以此从最小的域中查找是否有该键名对应的值,找到即停止
3.获取对象、List集合、Map集合的值
(1)对象:${域名.对象名.属性名}
属性名不是成员变量的名称,而是get方法的名称去掉get再将首字母改为小写
其本质是调用对象的get方法
(2)List集合:${域名称.键名[索引]}
(3)Map集合:
${域名称.键名.key名称}
${域名称.键名.[“key名称”]
三、JSTL概述
1.概念:JavaServer Pages Tag Library JSP标准标签(apache组织提供的开源的免费的jsp标签)
2.作用:用于替换和简化jsp页面上的java代码
3.使用步骤:
(1)导入jstl相关jar包
(2)引入标签库:taglib指令: <%@ taglib %>
具体写法是在jsp页面上添加一句如下语句:
<% taglib prefix="c" url="http://java.sun.com/jsp/jstl/core" %>
(3)使用标签
四、JSTL常用标签
1.if
<c:if>标签: 用于代替if语句
属性:
- test,必备属性,接受一个boolean表达式
* 若表达式为真,则显示标签体的内容。若表达式为假,则不显示标签体的内容
示例代码:
<c:if test="1==2">1等于2</c:if>
<c:if test="1==1">1等于1</c:if>
上述代码显示"1等于1"
2.choose
<c:choose > 标签用于代替switch语句
<c:when>相当于case
<c:otherwise>相当于defualt
示例代码:
<%--
完成数字编号对应星期几的案例
1.域中存储数字
2.使用choose标签取出数字
3.使用when标签做出数字判断
4.使用otherwise标签做其他情况处理
--%>
<%
request.setAttribute("number",3);
%>
<c:choose>
<c:when test="${requestScope.number} == 1">星期一</c:when>
<c:when test="${requestScope.number} == 2">星期二</c:when>
<c:when test="${requestScope.number} == 3">星期三</c:when>
<c:when test="${requestScope.number} == 4">星期四</c:when>
<c:when test="${requestScope.number} == 5">星期五</c:when>
<c:when test="${requestScope.number} == 6">星期六</c:when>
<c:when test="${requestScope.number} == 7">星期日</c:when>
<c:otherwise>数字输入错误</c:otherwise>
</c:choose>
上述代码的显示结果为 “星期三”
3.foreach
<c:foreach>相当于java中的for语句
java代码中for语句的作用:
1.完成重复的操作
for(int i=1;i<10;i ++){
}
2.遍历容器
List list;
for(User user:list){
}
属性:
begin:开始值
end:结束值
var:临时变量
step:步长
varStatus:循环状态对象
* index:容器中元素的索引,从0开始 * count:循环次数,从1开始
item:容器对象
示例代码(1):
<c:foreach begin="1" end="10" var="i" step="1">
${i}
</c:foreach>
显示结果:
12345678910
示例代码(2):
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
<c:foreach item="${list}" var="strs" varStatus="s">
${s.index} ${s.count} ${strs} <br>
</c:foreach>
显示结果:
0 1 aaa
1 2 bbb
2 3 ccc