iQOO Z5x 三款配色亮相,10 月 20 日釋出
ei表示式只可以在jsp裡面顯示
但並不是在<%%>裡面
<table> <tr> <th>編號</th> <th>姓名</th> <th>成績</th> </tr> <% List<User> list =(List<User>) request.getAttribute("list"); for(User user:list){ %> <tr> <th>${user.id}</th> <th>${user.name}</th> <th>${user.score}</th> </tr> <% }%> </table>
因此我們可以想到這種方法,但是使用者端介面根本讀不到
。。
想不到敲半天程式碼給我整這一出
為啥讀不出呢?
其實吧ei表示式讀取資料是在取出域裡面的資料
所以如果我們要用ei表示式,我們就要先將資料存到request裡面
ei表示式,咱們之前就講過,就單單只是簡化了get這一步驟,而如果要使用get那咱們就需要在前面加一個set操作
先存再取
有人就會問了,咱們不是在servlet裡面就存了一次嗎
這不就早存了嗎
但是咱們其實在
這裡又做了一個取出操作
因為不能連著取兩次,所以,再第二次取的時候咋們要存一次
<table> <tr> <th>編號</th> <th>姓名</th> <th>成績</th> </tr> <% List<User> list =(List<User>) request.getAttribute("list"); for(User user:list){ request.setAttribute("user",user); %> <tr> <th>${user.id}</th> <th>${user.name}</th> <th>${user.score}</th> </tr> <% }%> </table> ${requestScope.list}
感興趣的可以試試,反正我500了
但畢竟是jsp介面咱們還是不要老是搞這種操作
因為ei的功能就那麼多做不到那種操作,所以這時候咋們的jstl就應聲出來了
jstl為jsp開發者提供一系列的標籤
出了jsp就用不了了
jstl負責邏輯處理,ei負責展示資料
1.使用jstl第一步需要匯入jar包(jstl.jar和standard,jar的包)
2.引入到工程裡面
具體操作就不細講了
在加進來之後咱們就可以看見原始碼了
3.在jsp操作的介面匯入jstl標籤庫
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
就差不多這樣
其中那個lib裡面的jar包必須放在web-inf裡面
--%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%--taglib就是引入的標籤,其中url就是jsp的核心,將其引進來,使用了這個他就會自動去找到該jar包--%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>Title</title> </head> <body> <table> <tr> <th>編號</th> <th>姓名</th> <th>成績</th> </tr> <c:forEach items="${list}" var="user"> <tr> <th>${user.id}</th> <th>${user.name}</th> <th>${user.score}</th> </tr> </c:forEach> </table> ${requestScope.list} </body> </html>
我的還是不出意外的報錯了
但這一段程式碼應該是沒問題的
其中jstl裡面<c:forEach //這裡代表的是迴圈操作 items後面接的是集合處,var是將其轉換為user的形式
jstl的優點:
1.提供了統一標籤
2.可以用於編寫各種動態功能
常用的標籤:
set,out,remove,catch
set:往域物件中新增資料
<%
request.setAttribute(key,value);
%>
在使用者端可以輸出
但是預設存在page裡面
我們可以把這個範圍改大一點
同時我們也可以通過set來對物件資訊進行修改
<%--將資訊儲存到--%> <% User user=new User(1,"張三",99); request.setAttribute("user",user); %> ${user.name} <hr/> <c:set target="${user}" property="name" value="李四"></c:set> ${user.name}
這就是將其原有的值進行修改
target是要修改的目標(獲取該元素的資訊)
property:修改的地方
value:修改後的值
out使當出現取不出來的情況,就會用default裡面的資料進行代替
remove:刪除操作
後面加上一個scope刪除指定範圍的資料
catch:捕獲異常資訊
<%@ page import="com.southwind.entity.User" %><%-- Created by IntelliJ IDEA. User: mr.wang Date: 2021/10/30 Time: 17:00 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> <%--將資訊儲存到--%> <% User user=new User(1,"張三",99); request.setAttribute("user",user); %> ${user.name} <hr/> <c:set target="${user}" property="name" value="李四"></c:set> ${user.name} <%--輸出資料--%> <c:out value="${name}" default="未定義"></c:out> <c:remove var="${name}" scope="page"></c:remove> <%--將錯誤資訊放到error裡面--%> <c:catch var="error"> <% int a=10/0; %> </c:catch> <%--輸出報錯的原因--%> ${error} </body> </html>
想測試的可以試試看
真的牛掰