程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> struts2進階篇(5),struts2進階

struts2進階篇(5),struts2進階

編輯:JAVA綜合教程

struts2進階篇(5),struts2進階


一、OGNL簡介

OGNL (Object-Graph Navigation Language)的縮寫,簡稱對象圖導航語言。

OGNL表達式的特特點:

>能夠取對象的屬性,也能調用對象的方法。

>能訪問靜方法,靜態屬性。

>能訪問值棧以及Stack Context

>能操作集合對象

>支持賦值,運算操作,字段類型轉化

二、OGNL訪問值棧,Stack Context和集合

1.OGNL訪問值棧(Value Stack)

(1).值棧可以理解為一個存儲數據的Map,其中主要存儲了當前Action的實例。

(2).當struts2接收到請求後就會創建相應的Action實例來處理請求。

(3).Action會把db中讀取的數據保存到Action中定義的屬性中。

(4).Struts2會把這個Action保存到值棧中,以供GONL訪問。

(5).Action處理完返回jsp頁面信息後,可以使用<s:debug/>標簽查看值棧中信息。

查看值棧中信息,需要在jsp頁面中引入tablib,示例如下:

<%@ taglib uri="/struts-tags" prefix="s"%>

<s:property value="username">

2.OGNL訪問Stack Context

上例用ognl訪問Action中的數據,那麼如何使用ognl訪問request,session,Application等呢?

訪問Stack Context需要加上"#"符號,如訪問session中的userName如下:

<s:property value="#session.userName"/>

3.OGNL訪問集合

Action中經常返回集合,那麼如何訪問呢?

在jsp頁面中可以使用一下代碼來訪問集合:

(1).訪問list集合下標為0的元素。

<s:property value="userList[0]"/>

(2).訪問List集合的第一個元素對象的屬性,如user.userName的值:

<s:property value="userList[0].userName"/>

(3).獲取List集合的大小

<s:property value="userList.size()"/>

(4).獲取List集合是否為空

<s:property value="userList.isEmpty()">

(5).獲取map集合中key為"m1"的value

<s:property value="userMap['m1']"/>

<s:property value="userMap.m1"/>

(6).獲取map的鍵的集合

<s:property value="userMap.keys"/>

(7).獲取map的值的集合

<s:property value="userMap.values"/>

(8).獲取map的值對數量

<s:property value="userMap.size()"/>

(9).獲取map集合是否為空

<s:property value="userMap.isEmpty"/>

(10).獲取set集合,由於set無序,所以先轉化為數組

<s:property value="userSet.toArray()[0]"/>

三、Struts2標簽

struts2提供的標簽可分為一下幾類"

1.通用標簽

  (1).數據標簽

  (2).控制標簽

2.UI標簽

3.Ajax標簽

1.通用標簽

(1).數據標簽

使用struts2提供的標簽前需要在jsp頁面中引入taglib指令:

<%@ taglib uri="/struts-tags" prefix="s"%>

<s:property value="username">標簽:

value:用來獲取OGNL表達式的值。

default:如果屬性返回值為空時候,任然輸入結果。

escapeHtml:是否轉義html,默認取值為true,

<s:debug/>

查看值棧和Stack Context

<s:date name="nowDate" fromat="yyyy-MM-dd">:用於格式化輸出一個日期

name:被格式話的值,必須設置。

format:用於日期顯示的格式:如:"yyyy-MM-dd HH:mm:ss"

<s:set var="name" value="user.userName" scope="session"/>

對設置的表達式求值,並將結果賦值給特定作用域的某個變量。

var:變量名,value:設置給變量的值,scope:變量的生存周期。

<s:url value="http://www.cnblogs.com/izhongwei" var="url"/>

用來生成一個url,主要的屬性有:

var:該url名稱,如果指定這個屬性這url標簽就不會在頁面生成字符串。

action:要訪問的Action名稱。

value:要訪問的目標,如果action不指定,就使用value作為url的地址的值。

<s:a>用來生成html的<a>標簽<s:a href="${#url}">超鏈接</s:a> 

<s:param>:為其他標簽添加參數化設置

<s:url value="http://www.cnblogs.com/izhongwei" var="url">

<s:param name="str" value="accp"></s:param>

</s:url>

<s:a href="%{#url}">超鏈接</s:a>

生成後的html代碼是:<a href="http://www.cnblogs.com/izhongwei?str="accp"">超鏈接</a>

<s:include>:類似與jsp的動作標簽<jsp:include>

<s:include value="include.jsp"/>

(2).控制標簽

<s:if>,<s:elseif>,<s:else>

<s:iterator>主要用於對集合進行循環:

1.value:被循環訪問的集合

2.var:變量名稱,用來引用當前循環訪問的集合元素。

3.status:返回當前循環的各種信息

  count:集合含有多少個對象。

  index:正在循環這一項的索引。

  even:當前遍歷到的對象是否處於列表的偶數索引位置。

  odd:當前遍歷到的對象是否處於列表的奇數索引位置。

<s:iterator var="user" value="userList"  status="status">

  <s:if test="#status.even"><tr bgcolor="yellow"></s:if>

</s:iterator>

2.UI標簽

struts2 UI標簽可以通過設置不通的主題生成不通的風格。主題有simple,xhtml,css_xhtml,ajax;

可以在struts.xml中統一配置設置主題格式:

<constant  name="struts.ui.theme" value="simple">

<s:form>:對應html中的<form>:

屬性有:name,action,method

<s:textfield>對應html中的<input type="text">單行文本框

屬性:name,value,maxlength,readonly

<s:textarea>對應html中的<textarea>,即多行文本框。

屬性:name,value,cols,rows,readonly

<s:submit>對應html中的<input type="submit">他的基本屬性為value

<s:select>下拉框

屬性:name(下拉框名稱),list(生成下拉框的集合),listKey(生產下拉項的value屬性)

listValue(生成下拉項顯示的文字)

<s:doubleselect>:用於生成兩個聯動的下拉框。

3.Ajax標簽

Struts2提供了一套完整的Ajax解決方案,datetimepicker日期空間標簽示例

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved