一,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