今天來整理一下JSP裡面所使用的各項表示方法
範圍為本書的ch7
JSP的表示法大概分為下列:
Scrriptlet
表示符號: <% %>
意義: 在這個範圍內可以使用java程式碼,但需要配合calss2的package name
<% out.println(packagename.counter.getCount()); %>
//需要加上pacakagename才有辦法呼叫
指令(directive)
表示符號: <%@ %>
//單一套件
<%@ page import = "pacakagename.*" %>
//多個套件(使用逗號分開)
<%@ page import = "pacakagename.*, java.util.*" %>
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中,除了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屬性取得相關的設定屬性方式如下:
<% int cnt = 0 %>
<% pageContext.setAttribute("Sum",cnt); %>
<%= pageContext.getAttribute("Sum") %>
<% int cnt = 0 %>
<% pageContext.setAttribute("Sum",cnt,PageContext.SESSION_SCOPE); %>
<%= pageContext.getAttribute("Sum",PageContext.SESSION_SCOPE) %>
<%= pageContext.getAttribute("NUMBER",PageContext.APPLICATION_SCOPE) %>
<%= pageContext.findAttribute("number") %>
這張有點像是概略的提到JSP整個的內容
後續還會針對這些東西在多詳細的說明
在這先簡單整理記錄
大概先針對JSP的範圍有個簡單的了解