2014年6月27日 星期五

『JSP』Implicit Object 隱含式物件


在 jsp 網頁裡面,有些物件已經有定義好了,而且不用宣告即可使用

Implicit Object Data Type Description Type
request javax.servlet.http.HttpServletRequest 請求端 I/O
response javax.servlet.http.HttpServletResponse 回應端 I/O
out javax.servlet.jsp.JspWriter 資料流輸出 I/O
page java.lang.Object 如同 this Servlet
config javax.servlet.ServletConfig 當前頁面的ServletConfig Servlet
session javax.servlet.http.HttpSession 只在 HTTP 協定處理 Context
application javax.servlet.ServletContext 如同 getServletConfig()
.getServletContext()
Context
pageContext javax.servlet.jsp.PageContext 當前頁面的 PageContext Context
exception java.lang.Throwable 例外處理 Error

以下用簡單的例子說明:

request : 包含請求的資訊,標頭,Cookies等

請求的伺服器: <%= request.getServerName() %><br />
使用協定: <%= request.getProtocol() %><br />
請求方法: <%= request.getMethod() %> <br />
請求的埠號: <%= request.getServerPort() %><br />
Context路徑: <%= request.getContextPath() %> <br />
Servlet路徑: <%= request.getServletPath() %> <br />
URI路徑: <%= request.getRequestURI() %> <br />
查詢字串: <%= request.getQueryString() %> <br />
使用者主機IP: <%= request.getRemoteAddr() %> <br />
使用者使用埠號: <%= request.getRemotePort() %> <br />

response : 將 jsp 處理的結果顯示在client 端上

 response.setHeader("Refresh", "3"); 

out : 將結果輸出到網頁上

out.println("NoteProgram 噗噗.故我在"); 
out.clearBuffer(); 

page : 表示 servlet 本身,可以呼叫 servlet 類別所定義的方法

<%= ((javax.servlet.jsp.HttpJspPage)page).getServletInfo() %>

config : 存放 servlet  初始的資料結構

//Declare the following tags in web.xml

<servlet>
     <servlet-name>myjsp</servlet-name>
     <jsp-file>/myjsp.jsp</jsp-file> 
     <init-param>
          <param-name>hello</param-name>
          <param-value>test</param-value>
     </init-param>
</servlet>
 
<servlet-mapping>
     <servlet-name>myjsp</servlet-name>
     <url-pattern>/myjsp</url-pattern>
</servlet-mapping>

//get
<%= config.getInitParameter("hello");%>

session : 使用者持續與伺服器連接的時候,如果伺服器斷掉就失效。

String id = session.getId();
session.setAttribute("sid", id);

application : 作用在伺服器開始執行服務時,到關閉結束。

//set
ServletContext sc = getServletContext();
sc.setAttribute("mail", emailAdd);

//get
<%= application.getAttribute("mail") %>

pageContext : 可以存取其他隱含物件 (PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, APPLICATION_SCOPE)

pageContext.setAttribute("abcde","hello",pageContext.SESSION_SCOPE);

exception : 頁面有錯誤產生的例外

<% exception.printStackTrace(new java.io.PrintWriter(out)); %>


沒有留言:

張貼留言