前言
记录我常用的el表达式和jstl标签吧
正文
el即Expression Language,用来在jsp页面上显示内容,jstl是JSP Standard Tag Library的缩写,包含多种标签,el和jstl结合使用,页面渲染更方便。
el
el基本语法是${expression}。
运算符
算数运算符
最简单的±*/,
${3-2}
逻辑运算符
- && 与
- || 或
- ! 非
关系运算符
- lt 小于
- gt 大于
- le 小于等于
- ge 大于等于
- eq 等于
- ne 不等于
empty
判断是否为空,如${empty list}
.
取出某个属性,如${user.name}
? :
三元运算符,${expression?value1:value2}
jstl
jstl标签很多,笔记一下我常用到的标签
if
语法:
<c:if test="${one.name eq 'nick'}">
<tr>
<td>nick</td>
</tr>
</c:if>
choose
choose
标签相比if
更加广泛
基本语法:
<c:choose>
<c:when test="${empty list}">
selectALL is empty!
</c:when>
<c:otherwise>
<c:if test="${one.name eq 'nick'}">
<tr>
<td>nick</td>
</tr>
</c:if>
</c:otherwise>
</c:choose>
foreach
循环显示,基本语法:
<c:forEach items="${list}" varStatus="num" var="one">
<tr>
<td>${num.count}</td>
<td>${one.uuid}</td>
<td>${one.name}</td>
<td>${one.password}</td>
</tr>
</c:forEach>
这里解释一下几个参数
参数 | 是否必须 | 意义 |
---|---|---|
items | 是 | 要循环的集合 |
var | 是 | 定义循环项参数名 |
varStatus | 否 | 包含当前循环项的状态信息,如index,count |
begin | 否 | 开始循环位置 |
end | 否 | 结束循环位置 |
step | 否 | 自定义循环步长 |
实例
把几个常用的标签实践一下,一目了然
在index.jsp
新增查询全部链接
<a href="/selectAll">selectAll</a>
新建selectall.jsp
用于显示结果
<%@ page import="java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%--
Created by IntelliJ IDEA.
User: Nick
Date: 2018/10/27
Time: 11:02
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table>
<c:choose>
<c:when test="${empty list}">
selectALL is empty!
</c:when>
<c:otherwise>
<c:forEach items="${list}" varStatus="num" var="one">
<c:if test="${one.name eq 'nick'}">
<tr>
<td>nick</td>
<td>nick</td>
<td>nick</td>
<td>nick</td>
</tr>
</c:if>
<c:if test="${one.name ne 'nick'}">
<tr>
<td>${num.count}</td>
<td>${one.uuid}</td>
<td>${one.name}</td>
<td>${one.password}</td>
</tr>
</c:if>
</c:forEach>
</c:otherwise>
</c:choose>
</table>
</body>
</html>
数据库中如果空,则显示 selectALL is empty!,否则判断,如果name是nick,则三列全显示nick,否则正常显示。
后台逻辑:
新写selectAll()
函数
sql.xml
新增
<select id="selectAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user
</select>
当然还要修改相应的mapper接口和servers实现函数。
之后新建URL映射关系
@RequestMapping(value = "/selectAll")
public String toSelectAll(Model model) {
try {
ArrayList<User> list = userServices.selectAll();
model.addAttribute("list", list);
} catch (Exception e) {
System.out.println("selectAll error");
}
return "selectall";
}
跑一遍,查看结果,
数据库表内容
显示结果
当表为空时