iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 18
0

前言

今天來整理一下JSP裡面所使用的各項表示方法
範圍為本書的ch7


JSP元素表示

JSP的表示法大概分為下列:

  • Scrriptlet
    表示符號: <% %>
    意義: 在這個範圍內可以使用java程式碼,但需要配合calss2的package name

     <% out.println(packagename.counter.getCount()); %>
     //需要加上pacakagename才有辦法呼叫
    
  • 指令(directive)
    表示符號: <%@ %>

    • page
      意義: 可以匯入相關的套件
    //單一套件
    <%@ page import = "pacakagename.*" %>
    //多個套件(使用逗號分開)
    <%@ page import = "pacakagename.*, java.util.*" %>
    
    • include
      意義: 可將可重用的區塊另外獨立出來,透過include加載進來
      在轉譯期間被增加到當前的頁面上
    • taglib
      意義:定義相關的標籤程式庫(tag libraries)
      這部分在接下來的章節還會提到
  • Java運算式(expression)
    表示符號: <%= %>
    定義: 提供JSP省去寫println()的方式

    //這裡不需要分號,因為運算式就等於out.print();
    <%= counter.getCount() %>
    
  • 宣告(declaration)
    表示符號: <%! %>
    定義: 若在scriptlet定義變數,都會變成區域變數
    因此declaration提供了全域變數的宣告方式

    <%! int cnt = 0; %>
    
  • EL表達式(expression Language)
    定義:提供較直覺的撰寫方式(呼叫java程式),簡化JSP的維護成本

     your name : ${myApplication.name}
     //如同
     your name : <%=myApplication.getAttribute("name")%>
    

    設定: EL default是開啟的,若要關閉有兩種方式
    一種是在DD設定或是使用page設定,若兩邊都有設定
    會先檢查page裡的設定,已page為優先,在來才是看DD
    這樣可以讓DD變成default,每個頁面再根據需求去做調整

    DD設定(也是設定在web-app的tag裡)
    web.xml

    <jsp-config>
     <jsp-property-group>
     <url-pattern>*.jsp</url-pattern>
     <el-ignored>true</el-ignored>
     </jsp-property-group>
    </jsp-config>
    
    </web-app>
    

    使用page設定

    <%@ page isElIgnored="true" %>
    

    seripting-invalid
    seripting-invalid提供可以在DD設定將scrption
    (包含前面提到的三項Scrriptlet,expression,declaration)
    設定方式如下:

    web.xml

     <jsp-config>
     <jsp-property-group>
     <url-pattern>*.jsp</url-pattern>
     <scriptiong-invalid>true</scriptiong-invalid>
     </jsp-property-group>
    </jsp-config>
    
    
  • action
    定義:分成表准即非標準,表示方式如下:

    標準

    <jsp:include page="myLogin.jsp" />
    

    非標準

    <c:set var = "rate" valur="40" />
    

    JSP裡的屬性

    在JSP中,除了request,session及application(context)之外
    還有一個page的作用域,對應到pageContext物件

    對應如下:
    servlet | JSP
    ------------- | -------------
    getSetContext().setAttribute("XXX",XXX) | application.setAttributr("XXX",XXX);
    request.setAttribute("XXX",XXX) | request.setAttribute("XXX",XXX)
    request.getSession().setAttribute("XXX",XXX) | session.setAttributr("XXX",XXX);
    沒有page屬性 | pageContext.setAttribute("XXX",XXX)

使用pagaContext屬性取得相關的設定屬性方式如下:

  • 設定page屬性
<% int cnt = 0 %>
<% pageContext.setAttribute("Sum",cnt); %>
  • 取得page屬性
<%= pageContext.getAttribute("Sum") %>
  • 使用pageContext設定session屬性
<% int cnt = 0 %>
<% pageContext.setAttribute("Sum",cnt,PageContext.SESSION_SCOPE); %>
  • 使用pageContext取得session屬性
<%= pageContext.getAttribute("Sum",PageContext.SESSION_SCOPE) %>
  • 使用pageContext取得application屬性
<%= pageContext.getAttribute("NUMBER",PageContext.APPLICATION_SCOPE) %>
  • 找尋屬性
    尋找屬性的順序為:page>Request>Session>Application
<%= pageContext.findAttribute("number") %>

小結

這張有點像是概略的提到JSP整個的內容
後續還會針對這些東西在多詳細的說明
在這先簡單整理記錄
大概先針對JSP的範圍有個簡單的了解


上一篇
[Day 17] JSP 簡介 part1
下一篇
[Day 19 ] 標準動作建立JSP
系列文
30 days JSP & Servlet學習紀錄 30

尚未有邦友留言

立即登入留言