1. 程式人生 > >SSM框架中應用el和jstl-從零學習SSM框架(5)

SSM框架中應用el和jstl-從零學習SSM框架(5)

前言

記錄我常用的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";
    }

跑一遍,檢視結果,
資料庫表內容

顯示結果

當表為空時