【我的javaEE學習】elTagJsl學習筆記
一、EL表示式
1、EL簡介
不是一種語言,只是一個表示式而已,是JSP中專門用於顯示資料用的,從JSP2.0主要作用:獲取資料並顯示到頁面上。
簡單易用:
<%
List<Book> cart = (List<Book>)request.getSession.getAttribute(“cart”);
out.write(cart.get(0).getName());
%>
等價於
EL表示式:${cart[0].name} 簡單,寫起來方便。
實際開發:不要在JSP中使用Java表示式,而要使用EL表示式。
2、EL表示式的基本語法
${EL表示式
EL表示式,是從四大域物件中取資料的。
EL表示式中沒有空指標異常,也沒有陣列越界,沒有字串連線。
EL表示式獲取資料模型層的對應的GET方法。
比如後臺request.setAttribute(“a”,a);
JSP頁面${a.name}//這裡的name對應的實體類getName()的
3、EL獲取資料
3.1獲取物件的屬性
3.2 EL表示式運算子
3.2.1 算數、邏輯、關係
3.2.2 判斷empty運算子:
判斷一個字串是否為””或其他物件是否為null,同時還能判斷集合中是否有元素。
${empty num} <!-- 返回布林值結果 -->
3.2.3三元運算子:'布林'?'true時執行' : 'false時執行'
<input type="radio" name="gender" value="male" ${gender=='male'?'checked="checked"':''} />男
3.3、EL中的隱含物件(不要和JSP的隱含物件混淆)
3.3.1對於JSP和EL隱含物件格式是不同的。JSP的是<%JSP隱含物件%>;而EL的是${EL隱含物件}。
3.3.2 EL表示式隱含物件一共有11個
<!-- JSESSIONID的值 -->
${cookie.JSESSIONID.value}
3.4定義和使用EL函式
3.4.1、EL不支援字串操作;自定義的EL函式一般很少自定義,但也有公司自己封裝好定義好的。
3.4.2、定義EL函式的開發步驟
⑴定義一個普通類,提供實現功能的靜態方法(EL函式只能呼叫靜態方法)
public class MyFunction {
//EL函式字串轉大寫靜態方法
public static String toUppercase(String s){
return s.toUpperCase();
}
}
⑵EL函式進行配置:在WEB-INF目錄下建立一個副檔名為tld(Tag Libary Definition)的xml檔案。
<?xml version="1.0" encoding="GBK" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.0 functions library</description>
<display-name>JSTL functions</display-name>
<tlib-version>1.0</tlib-version>
<short-name>el</short-name>
<uri>http://www.abcd.com/el</uri>
<function>
<name>toUppercase</name>
<function-class>d11.elTag.MyFunction</function-class>
<function-signature>java.lang.String toUppercase(java.lang.String)</function-signature>
</function>
</taglib>
⑶在JSP中使用自定義的EL函式
首先:通過taglib指令引入外部的函式庫
<%@ taglib uri="http://www.abcd.com/el" prefix="el"%>
然後:呼叫相關方法
<%pageContext.setAttribute("s","abcdefg");%>
${el:toUppercase(s)}
二、自定義標籤:簡單標籤
1、標籤的作用
控制JSP中的邏輯處理。替換掉JSP中的Java指令碼。
2、標籤的編寫步驟
javax.servlet.jsp.tagext.SimpleTag中的方法:
void doTag():遇到自定義標籤時由伺服器呼叫執行。
JspTag getParent():得到父標籤的引用。
void setJspBody(JspFragment jsp):由伺服器呼叫,傳出JSP的片段
void setJspContext(JspContext jc):由伺服器呼叫,傳入當前頁面的PageContext
void setParent(JspTag parent):由伺服器呼叫,傳入他的父標籤
a、編寫一個類,實現javax.servlet.jsp.tagext.SimpleTag,或者繼承javax.servlet.jsp.tagext.SimpleTagSupport
b、對標籤處理類進行配置
在WEB-INF目錄下建立一個副檔名為tld的xml檔案。
c、在JSP中使用
<%@ taglib uri="http://www.abcd.com/learnTag" prefix="learnTag"%>
< learnTag:ShowIp / >
注意:每次訪問帶有自定義標籤的頁面,自定義標籤對應的處理類都會重新例項一次。
3、標籤具體的作用:4個方面
⑴、控制主體內容是否顯示。
4、標籤的詳細配置
<body-content>取值:body-content就是自定義標籤<自定義標籤>body-content</自定義標籤>
JSP:jsp中能出現啥,標籤主體內容就能出現啥。給傳統標籤用的。簡單標籤一用就報錯。
empty:沒有主體內容。簡單和傳統標籤都能用。
scriptless:給簡單標籤用的,說明主體內容是非指令碼。
tagdependent:把主體內容的EL表示式當做普通字串對待。
三、JSTL標籤庫
1、JSTL簡介
JSP Standard Tag Libary:JSP中標準的標籤庫。Apache實現的。
匯入jar包:JavaEE的jar包中包含。
2、JSTL的組成
Core:核心標籤庫。通用邏輯處理
Fmt:國際化有關。
Functions:EL函式
SQL:操作資料庫。不常用
XML:操作XML。不常用
3、JSTL中的Functions
taglib指令匯入:<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
● fn:contains函式:用於判斷在源字串中是否包含目標字串。
● fn:containsIgnoreCase函式:用於判斷在源字串中是否包含目標字串,並且在判斷時忽略大小寫。
● fn:startsWith函式:用於判斷源字串是否以指定的目標字串開頭。
● fn: endsWith函式:用於判斷源字串是否以指定的目標字串結尾。
● fn:indexOf函式:用於在源字串中查詢目標字串,並返回源字串中最先與目標字串匹配的第一個字元的索引。
● fn:replace函式:用於把源字串中的一部分替換為另外的字串,並返回替換後的字串。
● fn:substring函式:用於獲取源字串中的特定子字串。
● fn:substringBefore函式:用於獲取源字串中指定子字串之前的子字串。
● fn: substringAfter函式:用於獲取源字串中指定子字串之後的子字串
● fn:split函式:用於將源字串拆分為一個字串陣列。
● fn:join函式:用於將源字串陣列中的所有字串連線為一個字串。
● fn:toLowerCase函式:用於將源字串中的所有字元改為小寫。
● fn: toUpperCase函式:用於將源字串中的所有字元改為大寫。
● fn:trim函式:用於將源字串中的開頭和末尾的空格刪除。
● fn:escapeXml函式:用於將源字串中的字元“<”、“>”、“””和“&”等轉換為轉義字元。
● fn:length函式:用於返回字串中的字元的個數,或者集合和陣列的元素的個數
4、JSTL中Core
也就是我們常說的C標籤,加粗表示常用重要
taglib指令匯入:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
c:remove 用於刪除各種Web域中的屬性,用於刪除指定範圍,如果沒有指定,四個範圍全刪除
<c:remove var=’varName’ [Scope=”{page|request|session|application}”]>
c:out 表示輸出
①有個預設值default=”value”如果輸出沒有值,就可以用預設值來顯示
②有個屬性為escapeXml預設為true,表示完全預設輸出<、>、&等特殊字元,比如<h1>11</h1>輸出為<h1>11</h1>
c:set 用於把某一物件存在指定的域範圍內
相關推薦
【我的javaEE學習】elTagJsl學習筆記
一、EL表示式 1、EL簡介 不是一種語言,只是一個表示式而已,是JSP中專門用於顯示資料用的,從JSP2.0主要作用:獲取資料並顯示到頁面上。 簡單易用: <% List<Book> cart = (List<Book>)requ
【深度學習】Pytorch 學習筆記
chang www. ans 如何 ret == 筆記 etc finished 目錄 Pytorch Leture 05: Linear Rregression in the Pytorch Way Logistic Regression 邏輯回歸 - 二分類 Lect
【舊文章搬運】CsrssWalker學習筆記
RoCE 需要 ren 接收 構建 ted struct expected com 原文發表於百度空間及看雪論壇,2009-05-13 看雪論壇地址:https://bbs.pediy.com/thread-89708.htm=======================
【機器學習】XGBoost學習筆記
推薦博文 xgb講起來還有點複雜,剛開始看演算法的時候也是一愣一愣的。白話講一講吧。 先確定一個概念,xgboost是什麼?就是一堆二叉樹,準確來講是CART樹,和GBDT一樣,在GBDT中,無論是分類還是迴歸,也都是一堆CART樹。當然xgboost還支援其它的
《C#高階程式設計》【第六章】陣列 -- 學習筆記
為了解決大量的同類型元素,於是陣列就孕育而生了。陣列是具有一定順序關係的若干物件的集合體,一維陣列可以看作是定長的線性表。反之,n為的陣列可以看作線性表的推廣。從儲存結構上來看,陣列是一段連續的儲存空間。現在我們看看在C#中的陣列: 1、普通陣列
【IOS學習】CoreText學習筆記(二)設定文字屬性和插入圖片
設定文字和圖片的方法: 繪製文字的步驟是:設定NSAttributedString 或NSMutableAttributedString——> 通過attributedString 生成frameSetter ——> 生成CTFrame——>畫出來設定文字
【iOS開發-51】案例學習:動畫新寫法、刪除子視圖、視圖順序、延遲方法、button多功能使用方法及icon圖標和啟動頁設置
無法查看 font targe 技術 value lstat tostring sta dict 案例效果: (1)導入所需的素材,然後用storyboard把上半截位置和大小相對固定的東西布局起來。當然,這些控件也要定義成對應地IBOutlet和IBActio
【王曉剛】深度學習在圖像識別中的研究進展與展望
ast eric all orm 反向 nic 分類函數 大網 goole 深度學習是近十年來人工智能領域取得的最重要的突破之中的一個。它在語音識別、自然語言處理、計算機視覺、圖像與視頻分析、多媒體等諸多領域都取得了巨大成功。本文將重點介紹深度學習在物體
【數據庫】Mysql學習-mysql安裝
cte tar log mage class 改密碼 download www 提示符 參考:https://www.cnblogs.com/kennyliu/p/8004808.html 一、下載 進入:https://dev.mysql.com/downloa
【資料搜集】Python學習
OS pan span blog cor pos ati http pytho python學習手冊 | 演道網 http://dev.go2live.cn/python/python%e5%ad%a6%e4%b9%a0%e6%89%8b%e5%86%8c.html 【資
【資料搜集】DirectX學習
.sh 資料 指南 c++ tor 動漫 light Go pos 【網站推薦:】GameRes遊資網-遊戲開發者門戶 http://www.gameres.com/ 【基礎知識:】 《遊戲編程》第一部 基礎篇 - GameRes.com http://dev.gamere
【機器學習】--機器學習之樸素貝葉斯從初始到應用
rac AC 一個 pam 數據 ast 出現 相對 解決方法 一、前述 機器學習算法中,有種依據概率原則進行分類的樸素貝葉斯算法,正如氣象學家預測天氣一樣,樸素貝葉斯算法就是應用先前事件的有關數據來估計未來事件發生的概率。 二、具體 1、背景--貝葉斯定理引入對於兩個關聯
【java微職位】51CTO學習總結
【java微職位】51CTO學習總結【java微職位】51CTO學習總結通過半年的學習終於學完了本課程按時結業,通過這個課程的學習自己感覺很有收獲,回想這半年來的學習時間還是有些感慨,做下小的總結。一、 學習習慣的養成。學習是一個連貫的過程,也是一件需要持之以恒的事情。java微職位這個課程涵蓋的東西非常廣
【機器學習】機器學習的經典算法
com 上層 解決 iou 二維空間 效果展示 模擬 收信 https 【機器學習】機器學習的經典算法 https://mp.weixin.qq.com/s/CxSG9l_dxA4G-SZKOGI1ng 本文為整篇文章第二部分,整篇文章主要目錄如下: 1:一
【火爐煉AI】機器學習036-NLP詞形還原
fir att `` sco tee 參考 was 3.6 表頭 【火爐煉AI】機器學習036-NLP詞形還原 - (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2
【火爐煉AI】機器學習017-使用GridSearch搜索最佳參數組合
ear best 最優 參數 ray line rom ati 方式 【火爐煉AI】機器學習017-使用GridSearch搜索最佳參數組合 (本文所使用的Python庫和版本號: Python 3.5, Numpy 1.14, scikit-learn 0.19, mat
【火爐煉AI】機器學習048-Harris檢測圖像角點
dea numpy 重要 其他 tco cnblogs 有一個 一個 none 【火爐煉AI】機器學習048-Harris檢測圖像角點 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplo
【火爐煉AI】機器學習051-視覺詞袋模型+極端隨機森林建立圖像分類器
函數 自然語言處理 3.6 權重 www. 語言 tar 一行 序列 【火爐煉AI】機器學習051-視覺詞袋模型+極端隨機森林建立圖像分類器 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, mat
【逐夢AI】深度學習與計算機視覺應用實戰課程(BAT工程師主講,無人汽車,機器人,神經網絡)
bat 神經網絡 深度學習 深度學習框架 0基礎 http 提取 框架 以及 【逐夢AI】深度學習與計算機視覺應用實戰課程(BAT工程師主講,無人汽車,機器人,神經網絡)網盤地址:https://pan.baidu.com/s/1G0_WS-uHeSyVvvl_4bQnlA
【三層架構】基礎學習
物理上的劃分還是邏輯上的劃分?? 物理(硬體)上的劃分:顯示層/業務層/資料層 邏輯上的劃分:資料訪問層/顯示層/業務邏輯層 what?? 三層架構:是邏輯上的劃分,將整個業務應用劃分為:資料訪問層(DAL),表示層(UI),業務邏輯層(BLL)。分層次的目的是為了“高內聚低