Jsp 模型
Jsp 模型的兩個目標(biāo):
1. 允許并鼓勵Presentation層與java代碼的分離
2. 使開發(fā)人員能以最大的能力和靈活性編寫具有動態(tài)內(nèi)容的web.
標(biāo)準(zhǔn)的servlet 擴(kuò)展了java.servlet.HttpServlet
從jsp 轉(zhuǎn)換的servlet都必須利用javax.servlet.jsp.JspPage接口
方法:
void jspInit()
void jspDestroy()
javax.servlet.jsp.HttpJspPage接口增加了
void _jspService(HttpServletRequest req,HttpServletResponse res)
過程如下:
1. 翻譯頁面(.jsp到.java)
2. 編譯jsp(.java到.class)
3. 加載類
4. 創(chuàng)建實(shí)例
5. 在該頁面第一次初始化時調(diào)用jspInit().
6. 為每個jsp 請求調(diào)用_jspDestroy( )
7. 在服務(wù)器銷毀該jsp時調(diào)用_jspDestroy( ).
JSP元素
隱含的注釋:
jsp 語法 <%--comment--%>
聲明: 可以訪問的java變量和方法
jsp 語法 <%! Declaration; %>
xml 語法 <jsp:declaration>
declaration;
</jsp:declaration>
書寫聲明的規(guī)則:
1. 可以聲明靜態(tài)或?qū)嵗兞?、新的方法或是?nèi)部類。
2. 每個變量聲明都必須以分號結(jié)束。
3. 可以通過import 語句使用的變量和方法在沒有所需的額外聲明的情況下也能使用。
4. 聲明方法和變量后,以后的java代碼都可用。
5. 它通常包含將超出servlet的_jspService(…) 方法之外的代碼。
表達(dá)式
jsp 語法
<%=expression%>
xml 語法
<jsp:expression>
expression;
</jsp:expression>
表達(dá)式規(guī)則:
1. 通常不以分號結(jié)束。
2. 從左到右求值。
3. 可由多個部分或表達(dá)式組成
Scriplet
Jsp 語法
<% code fragment %>
xml 語法
<jsp:scriptlet>
code fragment;
</jsp:scriptlet>
語句
處理花括號
指令
1. include指令 包含一個靜態(tài)文件
jsp 語法:
<%@ include file = “relativeURL” %>
xml 語法:
<jsp:directive.include file=”relativeURL”/>
路徑以“/”開始是相對于上下文。
路徑起始于一個目錄或文件名,那么該路徑是相對于jsp頁面的。
2. page 指令定義將應(yīng)用于整個jsp頁面的屬性。
Jsp 語法 〈%@ page Attributes %〉
language\extends\import\session\buffer\autoFlush
\isThreadSafe\info\errorPage\isErrorPage\contentType
\pageEncoding
xml 語法
〈jsp:directive.page pageDirectiveAttribute〉
規(guī)則:
1) 在一個翻譯單元可多次使用page
2) 除了import 外,一個翻譯單元只能用一個page屬性
3) page指令可放在jsp頁面的任何地方。
3. taglib指令指定在jsp頁面內(nèi)使用的標(biāo)志庫和定制標(biāo)志的前綴。
Jsp 語法:
<%@ taglib uri=”URIForLiabrary” prefix=”tagPrefix” %>
前綴是唯一的,且不能使用:jsp jspx java javax servlet sun sunw.
隱含對象
plication對象:
web.xml:
<context-param>
<param-name></>
<param-value></>
</>
可如下獲取:
application.getInitParametr(“paraname”);
pageContext對象:
方法:
getOut( )
getException( )
getPage( )
getRequest( )
getResponse( )
getSession( )
getServletConfig( )
getServletContext( )
forward( )
include( )
handlePageException( )
它擁有頁面作用域,這意味著只能通過_jspService( )方法訪問該對象。
config 對象:
通過pageContext 的getAttribute(String name)訪問config屬性。
request對象:
即使使用了forward( ) include( ) 等,該請求也在作用域內(nèi)。
response 對象:
被綁定到PageContext ,能夠在_jspService(…)中訪問。
如page指令的緩沖區(qū)沒有設(shè)成none,http狀態(tài)代碼和標(biāo)題能夠在發(fā)送到客戶端后在被更改。
session 對象:
被綁定到PageContext,getAttribute(String name)可訪問數(shù)據(jù)。
out 對象:
屬于javax.servlet.jsp.JspWriter 類,是java.io.PrintWriter的緩沖版本。
緩沖大小可設(shè)置〈%@ page buffer=”16kb” %〉
page對象:
相當(dāng)于java中的this.
Exception對象:
是java.lang.Throwable的實(shí)例,如果使用page指令的errorPage屬性,那么exception對象對該頁面就不可用。例如:
〈%@page isErrorPage=”true” %〉
<pre>
<% exception.printStackTrace(new PrintWriter(out)); %>
表達(dá)式〈%= … %〉是在處理HTTP或HTTP服務(wù)器處理請求的時候求值的。
Scriptlet 〈% …%〉
處理請求時執(zhí)行,被嵌入到_jspService(…)方法中
聲明 〈%!…%〉
調(diào)用jsp的jspInit( )方法時初始化
指令<%@ …%>
是在翻譯時調(diào)用的。
操作
jsp:include
<jsp:include page=”relativeURL”>
or
<jsp:include page=”relativeURL” flush=”true|false”>
<jsp:param name=”parameterName” value=”parameterValue”>
</jsp:inlcude>
page 指定目標(biāo)資源的相對URL
param標(biāo)志確定需要傳遞的參數(shù)值
flush標(biāo)志等于true或false 默認(rèn)為false 要求設(shè)為true
include 有兩種使用方法:
1. 具有file屬性的指令,包含一個靜態(tài)文件
2. 使用操作將令一個文件的靜態(tài)或動態(tài)的輸出結(jié)合到響應(yīng)中
jsp:forward:
不會處理jsp:forward模塊后的任何代碼。
jsp:plugin:
<jsp:plugin
type=”bean|applet”
code=”classFileName.class”
>
<jsp:params>
<jsp:param name=”pramName” value=”paramvalue”/>
</jsp:params>
<jsp:fallback> text message for user</jsp:fallback>
</jsp:plugin>
jsp:useBean
<jsp:useBean id=”beanInstanceName”
scope=”page|request|session|application”
{
class=”package.class”|
type=”package.class”|
class=”package.class” type=”package.class”|
beanName=”{package.class|<%=expression %>}”
type=”package.class”
}
/>|</jsp:useBean>
同時使用class和beanName是無效的
jsp:setProperty
jsp:getProperty
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。