一,JSP元素
1,指令碼元素,包括運算式、程式碼片段(包括內建類)、聲明(成員變數和方法)、注釋(輸出和隱藏)
2,指令元素,包括page(language,extends,import,session,buffer,autoFlush,isThreadSafe,info,errorPage,isErrorPage,contentType)、include(file)和taglib(uri,prefix)。
3,動作元素,系統元素:
jsp:include page=? flush="true"(jsp1.1必須是這個) 可以夾帶jsp:param來添加request
jsp:forward page=? 可以夾帶jsp:param來添加request
jsp:param name=? value=?
jsp:plugin
type="bean|applet"
code="classfileName"
codebase="classfilePathUrl"
align=?height=? name=? width=?hspace="與環繞文本之間的水平空白空間的大小" vspace=?
archive="標識包含對象的Java類的.jar檔案的URL"
jrevision="標識組件需要的運行時環境JRE版本,預設1.1"
title="ie使用的對象標題"
nspluginurl="可以為Netscape下載JRE外掛程式的URL"
iepluginurl="可以為IE下載JRE外掛程式的URL"
jsp:params由jsp:plugin封裝一個jsp:action列表 如jsp:param放在中間
jsp:fallback 載入jsp:plugin失敗時用來提供一個替代的html響應,如一段文本
jsp:useBean
id="執行個體名"
scope="page|request|session|application"
class="類名,若無type則須有class,若有beanName則須無class"
beanName="a.b.c|a/b/c.cer,與class不兩立"
type="有同介面的類名,或類實現的介面名(只能使用介面中的方法)"
jsp:setProperty name="bean執行個體id" property="bean須有setPropertyName()的方法" [param=?] value=?若不指定value則從request中取與property名字相同或param名字相同的變數,若值為""不執行
jsp:getProperty name="bean id" property="bean屬性,須有getPropertyName()方法" 該動作元素直接輸出
4,空白字元:空格(0x20),Tab(0x09),斷行符號(0x0d0a),jsp頁面中的這些符號都會被out.println
5,逸出字元 %>,,%>,',"都應當用轉義
二,隱藏對象
1,request javax.servlet.HttpServletRequest類型,
String getParameter(String parameterName);
java.util.Enumeration getParamerterNames();
String[] getParameterValues();
Object getAttribute(String name);
java.util.Enumeration getAttributeNames();
void removeAttribute(String attributeName);
void setAttribute(String name, Object object);
javax.servlet.http.Cookie[] getCookies();
java.util.Enumeration getHeaderNames();//訊息頭
java.util.Enumeration getHeaders(String headerName);
String getHeader(String headerName);
int getIntHeader(String headerName);
long getDateHeader(String headerName);
String getMethod();//要求方法
String getRequestURI;//協議名和查詢字串之間,無主機名稱
String getContextPath();//請求的檔案所在的應用程式環境
String getServletPath();//以contextPath為根,指定小程式或jsp所在的位置
String PathInfo();//額外的路徑資訊
String getQueryString();
boolean isSecure();//是否用了HTTPS
boolean isRequestedSessionIdFromCookie();
boolean isRequestedSessionIdFromURL();
boolean isRequestedSessionIdValid();//請求會話的ID是否有效
java.util.Locale getLocale();//客戶同意內容所採取的Locale,取決於AcceptLanguge
java.util.Enumeration getLocales();
2,response javax.servlet.http.HttpServletResponse
int getBufferSize();
void setBufferSize(int size);//
boolean isCommitted();//寫入狀態代碼和前序後,響應是否已提交
void reset();//清除緩衝內的所有資料包括狀態代碼和前序
void flushBuffer();//強制緩衝中的任何內容寫入客戶
void addHeader(String name,String value);
void setHeader(String name, String value);
void addDateHeader(String name, long date);
void setDateHeader(String name, long date);
void addIntHeader(String name, int value);
void setIntHeader(String name, int value);
boolean containsHeader(String name);
void setContentType(String type);
void setLocale(java.uti.Locale, locale);
void sendError(int sc, String msg);
void sendError(int sc);//狀態代碼和描述性資訊項客戶發送錯誤響應
void sendRedirect(String location);
3,pageContext javax.servlet.jsp.PageContext(由具體開發商完成具體化)
/*int scope:
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
*/
Object getAttribute(String name);//pageScope變數
Object getAttribute(String name, int scope);
Object findAttribute(String name);
java.util.Enumeration getAttributeNamesInScope(int scope);
int getAttributeScope(String name);
void removeAttribute(String name);
void removeAttribute(String name, int scope);
void setAttribute(String name, Object object);
void setAttribute(String name, Object object, int scope);
javax.servlet.jsp.JspWriter getOut();//out
Exception getException();//exception
javax.servlet.ServletRequest getRequest();//request
javax.servlet.ServletResponse getResponse();//response
javax.servlet.http.HttpSession getSession();//session
javax.servlet.ServletConfig getServletConfig();//config
javax.servlet.ServletContext getServletContext();//application
javax.servlet.jsp.JspWriter popBody();
javax.servlet.jsp.tagext.BodyContent pushBody();//管理taglib內部的嵌套輸出資料流
void forward(String relativeUrlPath);
void include(String relativeUrlPath);
void handleException(java.lang.Exception e);
4,session javax.servlet.http.HttpSession
//安裝cookie
//URL重寫
//SSL會話
Object getAttribute(String attributeName);
java.util.Enumeration getAttributeNames();
void setAttribute(String name, Object value);
void removeAttribute(String name);
long getLastAccessedTime();//最後一次發送本次session相關資料的時間
/*關於long型時間:指從1970-1-1 00:00:00 開始的毫秒數*/
void setMaxInactiveInterval(int interval);//秒為單位
int getMaxInactiveInterval();
void invalidate();//使會話無效
5,out javax.servlet.jsp.JspWriter
//錯誤是會引發java.io.IOException
void clear();//清除緩衝區,response.reset()?
void clearBuffer();//清除緩衝區當前內容
void flush();//
void close();//先重新整理再關閉
int getBufferSize();
int getRemaining();//還沒有使用的緩衝區
boolean isAutoFlush();//page autoFlush屬性
void print(Object object);
void println(Object object);
6,application javax.servlet.ServletContext
String getInitParameter(String name);
java.util.Enumeration getInitParameterNames();
Object getAttribute(String name);
void setAttibute(String name, Object object);
java.util.Enumeration getAttributeNames();
void removeAttribute(String name);
//修改的時候,isThreadSafe最好設成false,而且用synchronized()
java.net.URL getResource(String path);
//URL::getPath()跟application.getRealPath()一樣
java.io.InputStream getResourceAsStream(String path);//同URL::openStream();
//RequestDispatcher:工作在伺服器笑程式之間的服務
javax.servlet.RequestDispatcher getNamedDispatcher(String name);//name 為servlet的名稱
javax.servlet.RequestDispatcher getRequestDispatcher(String path);//path 為servlet的路徑
void log(String message);
void log(String message, Throwable throwable);//將一個訊息和棧追蹤記錄到小程式記錄檔中
String getMimeType(String file);
String getRealPath(String virtualPath);//URL::getPath
String getServerInfo();
int getMajorVertion();
int getMinerVertion();
7,config javax.servlet.ServletConfig
String getInitParameter(String name);
java.util.Enumeration getInitParameterNames();
String getServletName();
ServletContext getServletContext();
8,page javax.servlet.jsp.HttpJspPage
//通常不是JSP頁面的創作者使用
javax.servlet.ServletConfig getServletConfig();
String getServeletInfo();
9,exception java.lang.Exception
String getLocalizedMessage();
String getMessage();
void printStackTrace();
void printStackTrace(java.io.PrintStream ps);
void printStackTrace(java.io.PrintWriter pw);