struts2值棧、struts2標籤、ONGL表示式、EL表示式、JSTL表示式、jsp標籤
1.struts2值棧:
(1) ValueStack是Struts2的一個介面,字面意義為值棧,OgnlValueStack是 ValueStack的實現類,客 戶端發起一個請求,struts2架構會建立一個action例項同時建立一個OgnlValueStack值棧例項, OgnlValueStack貫穿整個Action的生命週期,struts2中使用OGNL將請求Action的引數封裝為物件儲存 到值棧中,並通過OGNL表示式讀取值棧中的物件屬性值。
(2)後端java獲取值棧物件並賦值:
public class ValueStackDemoAction extends ActionSupport { public String execute() throws Exception { //1 獲取值棧物件 ActionContext context = ActionContext.getContext(); ValueStack stack = context.getValueStack(); //2 呼叫值棧物件中的push方法 stack.push("abcd"); return "success"; } }
2.struts2標籤:
在jsp頭部,加入<%@ taglib uri="/struts-tags" prefix="s" %>
struts2標籤分為:
控制標籤:if和else標籤
<s:if test="%{false}"> <div>Will Not Be Executed</div> </s:if> <s:elseif test="%{true}"> <div>Will Be Executed</div> </s:elseif> <s:else> <div>Will Not Be Executed</div> </s:else>
iterator標籤:
<s:iterator value="days"> <p>day is: <s:property/></p> </s:iterator>
。。。
資料標籤:
action標籤:
<s:action name="actionTagAction!specialMethod" executeResult="true" />
include標籤:
<s:include value="myJsp.jsp"> <s:param name="param1" value="value2" /> <s:param name="param2" value="value2" /> </s:include>
bean標籤:
<s:bean name="org.apache.struts2.util.Counter" var="counter"> <s:param name="first" value="20"/> <s:param name="last" value="25" /> </s:bean>
property標籤:
<s:property value="myBeanProperty" default="a default value" />
set標籤:
<s:set name="myenv" value="environment.name"/>
表單標籤:
。。。
Ajax標籤:
。。。
3.ONGL表示式
OGNL是ObjectGraphic Navigation Language(物件圖導航語言)的縮寫,它是一個開源專案。 Struts 2框架使用OGNL作為預設的表示式語言。
主要用於struts框架中(目前在別的地方還沒接觸到)
就是<s:property value="" /> value裡面的內容,就叫ONGL表示式;
如:
4.EL表示式
EL表示式是JSP 2.0(JavaEE1.4)規範中的一門技術 。若想正確解析EL表示式,需使用支援Servlet2.4/JSP2.0技術的WEB伺服器。
EL表示式主要有下面四種功能:獲取資料、執行運算、獲取常用開發物件和呼叫java方法。
形式如:
<body>
<%
request.setAttribute("name","孤傲蒼狼");
%>
<%--${name}等同於pageContext.findAttribute("name") --%>
使用EL表示式獲取資料:${name}
<h1>獲取javabean的屬性</h1><hr>
<%
Person p = new Person();
p.setName("Lilei");
p.setAge(17);
pageContext.setAttribute("p",p);
%>
${p.name }${p.age } ${p.name }
<h1>empty 運算子 : </h1><hr>
<%
String str = "aaaa";
pageContext.setAttribute("str",str);
List list = new ArrayList();
list.add("");
pageContext.setAttribute("list",list);
%>
${empty str }
${empty list}
${empty pageScope }
<h1>邏輯運算</h1><hr>
&& and
|| or
! not
${not (3>2 and 1<2 or 10>3) }
<%
pageContext.setAttribute("name","wang");
request.setAttribute("name","li");
%>
${requestScope.name}
${param.name } ${paramValues.like[2] }${header["Accept-Language"] }
${cookie.JSESSIONID.name }${cookie.JSESSIONID.value }
${initParam.name2 }
</body>
5.JSTL表示式
核心標籤是最常用的JSTL標籤。引用核心標籤庫的語法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
標籤 | 描述 |
---|---|
用於在JSP中顯示資料,就像<%= ... > | |
用來處理產生錯誤的異常狀況,並且將錯誤資訊儲存起來 | |
與我們在一般程式中用的if一樣 | |
本身只當做<c:when>和<c:otherwise>的父標籤 | |
<c:choose>的子標籤,用來判斷條件是否成立 | |
<c:choose>的子標籤,接在<c:when>標籤後,當<c:when>標籤判斷為false時被執行 | |
檢索一個絕對或相對 URL,然後將其內容暴露給頁面 | |
用來給包含或重定向的頁面傳遞引數 | |
使用可選的查詢引數來創造一個URL |
6.jsp標籤
1)內建標籤(動作標籤): 不需要在jsp頁面匯入標籤
2)jstl標籤: 需要在jsp頁面中匯入標籤
3)自定義標籤 : 開發者自行定義,需要在jsp頁面匯入標籤
(1)jsp內建標籤
<jsp:forward />轉發標籤、<jsp:include/>包含標籤、<jsp:pararm/>引數標籤、
還有嵌入到html和js的寫java程式碼的指令碼片段:<% %>
宣告:<%! %>
jsp表示式:<%= %>
(2)JSTL標籤,如5