1. 程式人生 > >struts2值棧、struts2標籤、ONGL表示式、EL表示式、JSTL表示式、jsp標籤

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