您的位置:首页 > Web前端 > JavaScript

后台学习四---el语言及jstl表达式

2017-04-06 10:53 411 查看
具体知识自行百度,我这里就讲我自己用的比较多的几种。

我们使用el语言及jstl表达式来进行后端渲染,在页面上动态生成数据

1. EL 操作符

算术型 :+、-(二元)、*、/、div、%、mod、-(一元)

逻辑型 :and、&& ; or、|| ; !、not

关系型 :==、eq;!=、ne;gt、>;lt ,<;le ,<= ; >=、ge。 可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文 字进行比较。

:empty。空操作符是前缀操作,可用于确定值是否为空。空字符串,null都可以用empty表示

条件型 :A ?B :C。根据 A 赋值的结果来赋值 B 或 C。

2. 简单显示

比如说我们从后台传过来这样一个叫user的model,然后他有id,name等属性, 我们怎么在页面上显示他的id呢?

两种写法,
${user.id}
或者
${user["id"]}


如果后台传过来的是user的集合,怎么输出第一个的id呢?

两种写法,
${list[0].id}
或者
${list[0]["id"]


3. 判断

有时候我们需要进行判断来输出不同的内容,比如说,user有个sex属性,它在数据库里存的值是0和1,用0表示男,1表示女,那怎么显示呢?


3.1
c:if
标签

语法格式是
<c:if test="条件" var="name">


test属性用于存放判断的条件,一般使用EL表达式来编写。

<c:if test="${user.sex eq 0}" >
男
</c:if>
<c:if test="${user.sex eq 1}" >
女
</c:if>


如果user的sex是0,那么就会在页面上显示男

如果user的sex是1,那么就会在页面上显示女

3.2
c:choose
c:when
标签

语法跟
<c:if>
相近,就是多了个
<c:otherwise>
用来对应其他情况,就相当于
if else
else


test属性用于存放判断的条件,一般使用EL表达式来编写。

<c:choose>
<c:when test="${one.sex eq 0}">
男
</c:when>
<c:when test="${one.sex eq 1}">
女
</c:when>
<c:otherwise>
不知道性别
</c:otherwise>
</c:choose>


如果user的sex是0,那么就会在页面上显示男

如果user的sex是1,那么就会在页面上显示女

其他情况会显示不知道性别

3.3 el语言-问号表达式

语法格式是
${A?B:C}
,如果A为true则显示B的内容,如果A表达式结果为false,则显示C的内容

${user.sex eq 0 ?'男':'女'}


如果user的sex是0,那么就会在页面上显示男

如果user的sex是1,那么就会在页面上显示女

4. 循环

<c:forEach var="name" items="Collection" varStatus="StatusName" begin="begin" end="end" step="step">

【循环标签属性说明】:

名称            是否必须            默认值              解释

var              是                 无           循环里使用的变量名

items            是                 无         后台传过来的集合/数组名

begin            否                 0              循环开始的index

end              否           集合中最后一个元素      循环结束的index

step             否                 1          步长,循环每次增加的个数

varStatus        否                 无                状态信息

【其中varStatus有4个状态属性】

属性名       类型           说明

index       int       当前循环的索引值

count       int        循环的次数

frist      boolean   是否为第一个位置

last       boolean   是否为第二个位置


举个例子,后台传过来
users
这个
model
,他是user的集合,那么怎么在页面上显示呢?

<table>
<tr>
<td>序号</td>
<td>id</td>
<td>name</td>
</tr>
<c:forEach items="${users}" var="one" varStatus="num" >
<tr>
<td>${num.count}</td>
<td> ${one.id}</td>
<td>${one.name}</td>
</tr>

</c:forEach>
</table>




5. 时间格式化

<fmt:formatDate>
标签:该标签主要用来格式化日期和时间。

使用这个标签,要在jsp的开头加上

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>


如下是它的格式:

<fmt:formatDate value="value" type="type" pattern="pattern" dateStyle="dateStyle"/>


先记住(眼熟)如下
pattern
格式(反正我没记住。。有特殊需求的时候,我都是百度看看的):

d   月中的某一天。一位数的日期没有前导零。
dd   月中的某一天。一位数的日期有一个前导零。
ddd   周中某天的缩写名称,在   AbbreviatedDayNames   中定义。
dddd   周中某天的完整名称,在   DayNames   中定义。
M   月份数字。一位数的月份没有前导零。
MM   月份数字。一位数的月份有一个前导零。
MMM   月份的缩写名称,在   AbbreviatedMonthNames   中定义。
MMMM   月份的完整名称,在   MonthNames   中定义。
y   不包含纪元的年份。如果不包含纪元的年份小于   10,则显示不具有前导零的年份。
yy   不包含纪元的年份。如果不包含纪元的年份小于   10,则显示具有前导零的年份。
yyyy   包括纪元的四位数的年份。
gg   时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。
h   12   小时制的小时。一位数的小时数没有前导零。从1到12,分上下午 范围:01:00 AM~12:59AM
hh   12   小时制的小时。一位数的小时数有前导零。
H   24   小时制的小时。一位数的小时数没有前导零。从0到23,范围:00:00 AM~23:59AM
HH   24   小时制的小时。一位数的小时数有前导零。
m   分钟。一位数的分钟数没有前导零。
mm   分钟。一位数的分钟数有一个前导零。
s   秒。一位数的秒数没有前导零。
ss   秒。一位数的秒数有一个前导零。


这些是
type


{type:both}
<fmt:formatDate value="<%=new Date() %>" type="both"/>
<!-- 2011-3-30 9:41:21 -->

{type:date}
<fmt:formatDate value="<%=new Date() %>" type="date"/>
<!-- 2011-3-30 -->

{type:time}
<fmt:formatDate value="<%=new Date() %>" type="time"/>
<!-- 9:44:44 -->

{type:date, dateStyle:default}
<fmt:formatDate value="<%=new Date() %>" type="date" dateStyle="default"/>
<!-- 2011-3-30 -->

{type:date, dateStyle:short}
<fmt:formatDate value="<%=new Date() %>" type="date" dateStyle="short"/>
<!-- 11-3-30  -->

{type:date, dateStyle:medium}
<fmt:formatDate value="<%=new Date() %>" type="date" dateStyle="medium"/>
<!-- 2011-3-30 -->

{type:date, dateStyle:long}
<fmt:formatDate value="<%=new Date() %>" type="date" dateStyle="long"/>
<!-- 2011年3月30日 -->

{type:date, dateStyle:full}
<fmt:formatDate value="<%=new Date() %>" type="date" dateStyle="full"/>
<!-- 2011年3月30日 星期三 -->

{type:time, timeStyle:default}
<fmt:formatDate value="<%=new Date() %>" type="time" timeStyle="default"/>
<!-- 10:01:32  -->

{type:time, timeStyle:short}
<fmt:formatDate value="<%=new Date() %>" type="time" timeStyle="short"/>
<!-- 上午10:01  -->

{type:time, timeStyle:medium}
<fmt:formatDate value="<%=new Date() %>" type="time" timeStyle="medium"/>
<!-- 10:01:32 -->

{type:time, timeStyle:long}
<fmt:formatDate value="<%=new Date() %>" type="time" timeStyle="long"/>
<!-- 上午10时01分32秒 -->

{type:time, timeStyle:full}
<fmt:formatDate value="<%=new Date() %>" type="time" timeStyle="full"/>
<!-- 上午10时01分32秒 CST  -->

{type:both, pattern:EEEE, MMMM d, yyyy HH:mm:ss Z}
<fmt:formatDate value="<%=new Date() %>" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/>
<!-- 星期三, 三月 30, 2011 10:01:32 +0800  -->

{type:both, pattern:d MMM yy, h:m:s a zzzz}
<fmt:formatDate value="<%=new Date() %>" type="both" pattern="d MMM yy, h:m:s a zzzz"/>
<!-- 30 三月 11, 10:1:32 上午 中国标准时间 -->

{pattern:dd/MM/yyyy HH:mm aa}}
<fmt:formatDate value="<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-3-30 13:12:12") %>" pattern="dd/MM/yyyy HH:mm aa"/>
<!-- 30/03/2011 13:12 下午 -->

{pattern:dd/MM/yyyy hh:mm aa}
<fmt:formatDate value="<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2011-3-30 13:12:12") %>" pattern="dd/MM/yyyy hh:mm aa"/>
<!-- 30/03/2011 01:12 下午 -->


显示结果:

{type:both}  2011-3-30 10:07:42
{type:date}  2011-3-30
{type:time}  10:07:42
{type:date, dateStyle:default}  2011-3-30
{type:date, dateStyle:short}  11-3-30
{type:date, dateStyle:medium}  2011-3-30
{type:date, dateStyle:long}  2011年3月30日
{type:date, dateStyle:full}  2011年3月30日 星期三
{type:time, timeStyle:default}  10:07:42
{type:time, timeStyle:short}  上午10:07
{type:time, timeStyle:medium}  10:07:42
{type:time, timeStyle:long}  上午10时07分42秒
{type:time, timeStyle:full}  上午10时07分42秒 CST
{type:both, pattern:EEEE, MMMM d, yyyy HH:mm:ss Z}  星期三, 三月 30, 2011 10:07:42 +0800
{type:both, pattern:d MMM yy, h:m:s a zzzz}  30 三月 11, 10:7:42 上午 中国标准时间
{pattern:dd/MM/yyyy HH:mm aa}  30/03/2011 13:12 下午
{pattern:dd/MM/yyyy hh:mm aa}  30/03/2011 01:12 下午


真是一长串。。反正我用的时候习惯这样子,好记又好用

<fmt:formatDate value='${one.createtime}' type="both"/>

2017-3-29 11:12:27


好了,jstl还有很多标签,我就不一一列举了,以上的,是我自己比较常用的标签

接着,我就写一个查询全部的例子:

sql xml:

<select id="selectAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user
</select>


Controller:

//获得所有user
@RequestMapping(value = "/lxf/test3/getAll", method = RequestMethod.GET)
public String getAll( Model model) {
model.addAttribute("list",userService.selectAll());
return "lxf/userList";
}


jsp显示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%--
Created by IntelliJ IDEA.
User: 11655
Date: 2017/4/11
Time: 15:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<style>
.table-b td {
border: 1px solid black
}
</style>
<body>
<table class="table-b">
<tr>
<td>序号</td>
<td>ID</td>
<td>姓名</td>
<td>性别</td>
<td>生成时间</td>
</tr>
<c:choose>
<c:when test="${empty list}">
没有数据!
</c:when>
<c:otherwise>
<c:forEach items="${list}" var="one" varStatus="num" >
<tr>
<td>${num.count}</td>
<td>${one.id}</td>
<td>${one.name}</td>
<td>
${one.sex eq 0 ?'男':'女'}

<%--<c:if test="${one.sex eq 0}" >--%>
<%--男--%>
<%--</c:if>--%>
<%--<c:if test="${one.sex eq 1}">--%>
<%--女--%>
<%--</c:if>--%>

<%--<c:choose>--%>
<%--<c:when test="${one.sex eq 0}">--%>
<%--男--%>
<%--</c:when>--%>
<%--<c:when test="${one.sex eq 1}">--%>
<%--女--%>
<%--</c:when>--%>
<%--<c:otherwise>--%>
<%--不知道性别--%>
<%--</c:otherwise>--%>
<%--</c:choose>--%>

</td>
<td><fmt:formatDate value='${one.createtime}' type="both"/></td>
</tr>

</c:forEach>
</c:otherwise>
</c:choose>

</table>

</body>
</html>




that’s all,如果我有哪里说得不好或者有问题的地方,欢迎指出来,大家共同进步~

欢迎加入–qq群–JAVA后台学习交流群:486055993
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jstl el语言 java