1. 程式人生 > >struts標籤庫詳解

struts標籤庫詳解

Struts2標籤庫
包括:
OGNL
Struts2標籤分類
控制標籤 :(if, elseif,else, iterator, append, merge, generator, subset, sort)
資料標籤 :(bean, param,date, debug, include, set, url, push)

OGNL
    Object-Graph Navigation Language的縮寫,它是一種功能強大的表示式語言(ExpressionLanguage,簡稱為EL),通過它簡單一致的表示式語法,可以存取物件的任意屬性:,呼叫物件的方法,遍歷整個物件的結構圖,實現欄位型別轉化等功能。
Struts2預設的表示式語言是OGNL
     OGNL的符號--#:
1、訪問OGNL上下文和Action上下文,#相當於ActionContext.getContext() .
2、構造Map
用於過濾和投影(projecting)集合
?——所有匹配選擇邏輯的元素
^——只提取符合選擇邏輯的第一個元素
$——只提取符合選擇邏輯的最後一個元素
名稱
作用
示例:
parameters 
讀取請求引數
<s:property value="#parameters.id"/>
request 
讀取request中的屬性:
<s:property value="#request.r"/>
session 
讀取session中的屬性:
<s:property value="#session.s"/>
application 
讀取application中的屬性:
<s:property value="#application.a"/>
attr
request > session > application順序訪問其屬性:
<s:property value="#attr.pc"/>
範例:
<s:iterator value="#{'china':'中國','usa':'美國','e':'俄國'}" var="c">
<s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/>
</s:iterator>
範例:
 <s:property value="#attr.list.{sname}[0]"/>
<s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>
支援物件方法呼叫 :
<s:property value="#attr.p.doSomeThing('李四')"/>
呼叫儲存在pageContext中的Student物件的doSomeThing()
[N]語法:
從ValueStack的第N個位置開始取值
top關鍵字:
取出最頂端的物件
示例::
<s:push value="'阿拉伯聯合大公國'">
<s:property value="[0].top"/>
</s:push>
從ValueStack中的第0個位置開始取出最頂部的物件,返回為”阿拉伯聯合大公國”
Struts2標籤分類

    1.分類:
        Struts2標籤庫:使用者介面標籤庫(表單/非表單標籤庫),非使用者介面標籤庫(控制標籤庫,資料訪問標籤庫),ajax支援標籤庫
     2.匯入taglib
<%@taglib prefix=“s”uri=“/struts-tags” %>
控制標籤
1、條件標籤 if…elseif…else
主要屬性::     test : 測試條件
    範例:
<%! Random rnd = newRandom(); %>
 <% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %>
 <s:if test="#attr.n % 7 == 0">恭喜,您中了一等獎! </s:if>
 <s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等獎! </s:elseif>
 <s:else> 歡迎惠顧!</s:else>
2、迭代標籤 iterator

用於迴圈陣列,集合和Map
屬性:  
value:陣列,集合或Map
var:當前元素
status:當前元素的狀態index,count,even,odd,first,last
示例:
遍歷List
 <s:iterator value="{'中華人民共和國', '美利堅合眾國', '阿拉伯聯合大公國'}" var="cur"status="st">
    <s:property value="#st.count"/>
    <s:property value="#cur"/><br/>
 </s:iterator>
遍歷Map
 <s:iterator value="#{1: '中國', 2: '美國', 3: '日本'}" var="cur">
 <s:property value="#cur.key"/>
 <s:property value="#cur.value"/><br/>
 </s:iterator>
     3、集合合併標籤 append和merge

     將多個集合合併成一個集合
屬性::  var -  新集合的名稱
示例:
            <s:appendvar="newCollection">
<s:param value="{'中國', '美國', '日本'}"></s:param>
<s:param value="{'德國', '泰國', '新加坡'}"></s:param>
 </s:append>
<s:iterator value="#newCollection"var="cur">
<s:property value="#cur"/><br/>
 </s:iterator>
注:merge用法和append相同,結果的組織不一樣.
4、字串分割標籤 generator
  將一個字串按照指定分隔符分割成一個字串陣列
屬性::
separator: 分隔符
val(value): 字串
count:字串陣列中元素個數
示例:
<s:generator separator=","val="'中,華人,民共和,國'" var="arr"/>
<s:iterator value="#arr"var="cur">
    <s:property value="#cur"/><Br/>
</s:iterator>
5、集合子集標籤  subset
  從集合中取出一個子集,注意:子集被放在值棧的頂部,subset標籤執行完後子集自動移除

屬性::
source: 集合
start: 起始索引
count: 子集中元素個數
示例:
<s:subset source="{'中國', '美國', '日本', '德國', '泰國', '新加坡'}" start="1"count="3">
<s:iterator  var="cur">
<s:property value="#cur"/>
</s:iterator>
</s:subset>
6、排序標籤 sort
     根據定義的排序規則,對集合中的元素進行排序,排序後生成的新的集合放在值棧頂部,標籤結束後自動刪除.
屬性::
comparator: 實現Comparator的類
source: 集合
示例:
<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/>
<s:sort comparator="#ls"source="{'中1','88w','777','6666'}">
<s:iterator>
<s:property/><br/>
</s:iterator>
</s:sort>
資料標籤
1、設定變數標籤 set
用於設定一個新變數,並將新變數放入指定的作用域中
屬性:
Var: 新變數的引用
Value:值
示例:
<s:set var="v1"value="'中華人民共和國'" scope="page"></s:set>
<s:property value="#attr.v1"/>
注:如果不指定,預設放在Stack Context中
2、棧頂置值標籤 push
將某個值置於值棧的頂部,標籤結束後,將從值棧中移除.
屬性:
value: 即值
示例:
<s:push value="'中華人民共和國'" >
<s:property/>
</s:push>
3、javabean建立標籤 bean
用於建立javabean的例項,如果設定了var值,則存於Stack Context,否則,標籤結束後自動移除.
屬性:
name: javabean類名(帶包)
var: 名稱
示例:
<s:bean name="com.aptech.entity.Student"var="stu">
<s:param name="sid">1</s:param>
<s:param name="sname">張三好</s:param>
<s:param name="sbirthday">2009-9-9</s:param>
</s:bean>
<s:property value="#stu.sbirthday"/>
4、日期格式化標籤 date
格式化日期並輸出
屬性:
name:日期
format:格式化字串
示例:
<%pageContext.setAttribute("d", new Date()); %>
<s:date name="#attr.d"format="yyyy年MM月dd日 HH時mm分ss秒"/>
5、除錯標籤 debug
用於當前環境下Value Stack和stackcontext中儲存的資料
6、資源包含標籤 include
用於將一個html,jsp或servlet包含到當前頁面中,使用param傳遞引數
屬性:
value:包含頁面名稱
示例:
<s:include value="MyHtml.html"></s:include>
7、URL生成標籤 url
生成URL地址,可以通過param標籤傳遞請求引數,如果引數為中文,自動編碼
屬性:
value: url值
action: action名稱,自動加上.action
示例:
<s:url value="control.jsp"var="url">
<s:param name="id">中華人民共和國</s:param>
</s:url>
<a href="<s:propertyvalue="#url" />">連結</a>
<s:url action="test"var="url2"></s:url>
<s:property value="#url2"/>
8、資料輸出標籤 property
用於輸出值棧,Stack Context中的資料
屬性:
value:要輸出的值
如果輸出值棧中的值,不用#
如果輸出Stack Context中的值,要用#
如果省略value,表示取出值棧的棧頂物件輸出
總結
OGNL是標籤的基礎,要理解OGNL的基本使用,在struts2中,OGNL必須和標籤緊密配合
控制標籤包含一組條件判斷標籤和一組集合遍歷和操作標籤
資料標籤包含一組資料訪問相關的標籤

相關推薦

struts標籤

Struts2標籤庫 包括: OGNLStruts2標籤分類 控制標籤 :(if, elseif,else, iterator, append, merge, generator, subset, sort) 資料標籤 :(bean, param,date, debug,

JavaWeb學習篇之----自定義標籤 JSTL標籤

                今天來看一下自定義標籤的內容,自定義標籤是JavaWeb的一部分非常重要的核心功能,我們之前就說過,JSP規範說的很清楚,就是Jsp頁面中禁止編寫一行Java程式碼,就是最好不要有Java指令碼片段,下面就來看一下自定義標籤的簡介:自定義標籤主要用於移除Jsp頁面中的java程

jstl標籤:core標籤/function/fmt等等

標準標籤庫JSTL的全名為:Java Server Pages Standard Tag Library. JSTL主要提供了5大類標籤庫: 1.核心標籤庫: 為日常任務提供通用支援,如顯示和設定變數,重複使用一組專案,測試條件以及其他操作(如匯入和重定向web頁面等). 2.國際化(I18N)標籤庫:

JavaWeb學習篇之----自定義標籤&&JSTL標籤

今天來看一下自定義標籤的內容,自定義標籤是JavaWeb的一部分非常重要的核心功能,我們之前就說過,JSP規範說的很清楚,就是Jsp頁面中禁止編寫一行Java程式碼,就是最好不要有Java指令碼片段,下面就來看一下自定義標籤的簡介: 自定義標籤主要用於移除Jsp頁面中的ja

struts2標籤

要在jsp中使用Struts2的標誌,先要指明標誌的引入。通過jsp的程式碼的頂部加入以下的程式碼: <%@taglib prefix="s" uri="/struts-tags" %> If elseif  else 描述: 執行

C++11 std::chrono

toolbar space max mil exp 值類型 cond 精度 ++i 所謂的詳解只不過是參考www.cplusplus.com的說明整理了一下,因為沒發現別人有詳細講解。   chrono是一個time library, 源於boost,現在已經是C++標準。

mysql數據 之 自學成才1

簡化 註意 可能 方法 after 字符型 專題 mar 建議 一、學習目錄 1.認識數據庫和mysql 2.mysql連接 3.入門語句 4.詳解列類型 5.增刪改查 INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n); *(列

struts.properties配置

pro request location pri term i18n 臨時 def toolbox Struts 2框架有兩個核心配置文件,其中struts.xml文件主要負責管理應用中的Action映射,以及該Action包含的Result定義等。除此之 外,Struts

使用JDBC連接數據

found 註冊 加載驅動 創建數據庫 delete ole red dsta 庫存 JDBC連接數據庫詳細流程 ?創建一個以JDBC連接數據庫的程序,包含7個步驟: 1、加載JDBC驅動程序: 在連接數據庫之前,首先要加載想要連接的數據庫的驅

exp/expdp 與 imp/impdp命令導入導出數據

鏈接 lena attach 64bit lap 路徑 定時 存放位置 traints 一、exp命令導出數據庫 如何使exp的幫助以不同的字符集顯示:set nls_lang=simplified chinese_china.zhs16gbk,通過設置環境變量,可以讓ex

10.javaweb核心標簽

bean對象 靜態 管理 請求 技術 範例 begin odin url 一、JSTL簡介及在項目中安裝配置 1, 簡介 使用JSTL標簽的目的就是不希望jsp中出現java邏輯代碼 分類 2, JSTL的安裝配置 首先將jar包中的各個標簽庫配置

13.javaweb xml標簽

方便 2.3 http 進行 log 標簽庫 xml文件 for 路徑 一、XML標簽簡介 1, 作用 2, 標簽分類 XPath 路徑標記 查找節點元素示例 2.1<x:out> 2.

爬蟲(二):Urllib

lib lwp ces lin 設置 內置 col http測試 url 什麽是Urllib: python內置的HTTP請求庫 urllib.request : 請求模塊 urllib.error : 異常處理模塊 urllib.parse: url解析模塊 urllib

Oracle 11g數據

adding 查看端口 linu oci 資料 標記 錯誤 urn locate 常見異常: ORA-14025:不能為實體化視圖或實體化視圖日誌指定PARTITION ORA-14026:PARTITION和CLUSTER子句互相排斥 ORA-14027:僅可以指定一個P

urllib

www. ID erro quest port 異常處理 http 基本 parse urllib庫是python內置的一個http請求庫 其實urllib庫不好用,沒有requests庫好用,下一篇文章再寫requests庫,requests庫是基於urllib庫實現的

Requests

OS nbsp 數據 請求 delet 直接 ade imp 比較 urllib庫作為基本庫,requests庫也是在urllib庫基礎上發展的 但是urllib在使用上不如requests便利,比如上篇文章在寫urllib庫的時候,比如代理設置,處理cookie時,沒有寫

PyQuery

則表達式 HR ID div TE DG -c contain filename 強大又靈活的網頁解析庫,如果覺得正則表達式寫起來太麻煩,而BeautifulSoup語法太難記,但是熟悉jQuery的語法,那麽PyQuery就是一個絕佳選擇。 安裝:pip3 install

Selenium

ava javascrip 網頁渲染 用法 自動化測試工具 工具 源代碼 解決 AS 自動化測試工具,支持多種瀏覽器,在爬蟲中主要用來解決JavaSript渲染的問題。 (驅動瀏覽器,發送一些指令,讓瀏覽器完成一些動作) requests urllib這些庫無法正常獲取網頁

mongodb 數據

大小 _id 檢索 www 擴展 經緯 rdb reboot 持久 第1章 數據庫管理系統 1.1 前言 01.數據的定義:文字、圖像、地理位置信息(坐標、經緯度)等 02.數據庫管理系統的定義:建立、存取和管理數據,保證數據安全和完整性的軟件 03.常見的數據庫管理系統:

MongoDB 數據,以及 MongoDB4.0版本的安裝

primary 所在 高可用 使用 進行 remove 存儲空間 標記 詳解 MongoDB 簡介 MongDB 是一款跨平臺,面向文檔的數據庫,可以實現高性能,高可用性,並且能夠輕松擴展,是一個基於分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保