2012年10月28日 星期日

《JSP 2.0 動態網頁入門實務:Web應用程式/資料庫應用/JNDI/JavaMail/XML/AJAX/自訂標籤/JSTL/EL/MVC》筆記

ㄧ、JSP 基本語法

1.page 指令:

(1)定義描述語言:language

(2)指定網頁編譯後產生的 Servlet 延伸的類別:extends

(3)指定使用的 Java package:import

(4)網頁被瀏覽時,可否使用 session 物件:session

(5)是否使用緩衝區:buffer

(6)緩衝區滿了後,是否自動輸出緩衝區內的資料:autoFlush

(7)是否以執行緒的方式回應網頁的要求訊息:isThreadSafe

(8)網頁的說明資訊:info

(9)若網頁發生錯誤時,顯示錯誤訊息之網頁的 URL 路徑:errorPage

(10)設定此網頁是否為錯誤訊息網頁:isErrorPage

(11)設定字元壓縮方式,以及使用的字元集:contentType

(12)編碼方式:pageEncoding

(13)是否執行或忽略 EL 表達式:isELIgnored


2.將檔案載入網頁:include file
<%@ include file = "檔名" %>


3.使用自訂標籤:taglib
<%@ taglib uri = "標籤資料的 URI" prefix = "前置標記" %>


4.動作元件:

(1)宣告欲使用的 JavaBean 物件:<jsp:useBean>

(2)設定所使用 JavaBean 物件的屬性:<jsp:setProperty>

(3)傳送參數:<jsp:param>
<jsp:param name = 參數名稱 value = 值 />

(4)動態載入 HTML 網頁或 JSP 網頁:<jsp:include>
<jsp:include page = 網頁名稱>
    <jsp:param name = 參數名稱1 value = 值1>
    ...
</jsp:include>

*若使用 <jsp:param> 將參數傳給 JSP 網頁時,取得傳入的參數方法為:
request.getParameter("參數名稱");

(5)網頁導向:<jsp:forward>
<jsp:forward page = "網頁名稱">
    <jsp:param name = "參數名稱1" value = "值1">
    ...
</jsp:forward>


*若使用 <jsp:param> 將參數傳給 JSP 網頁時,取得傳入的參數方法為:
request.getParameter("參數名稱");





二、JSP 的隱含物件

1.request 物件:


(1)取得與設定 request 物件的屬性:
  • 設定某個屬性與屬性值:setAttribute(name, value) 
  • 取得 request 物件中所有屬性名稱:getAttributeNames()
  • 取得某個屬性值:getAttribute(name)
  • 移除某個屬性的屬性值 :removeAttribute(name) 
(2)取得使用者參數:
  • 取得所有的使用參數名稱:getParameterNames() -->回傳陣列
  • 取得 name 的參數值:getParameter(name) 
  • 取得 name 的所有參數:getParameterValues(name) -->回傳陣列

(3)取得 HTTP 表頭資訊:
  • 取得 request 物件中所有的表頭名稱:getHeaderNames() 
  • 取得 name 所代表的表頭字串:getHeader(name) 
  • 取得 name 所代表的所有表頭字串:getHeaders(name) 
  • 取得 name 代表的表頭整數值:getIntHeader(name) 
  • 取得 name 代表的表頭日期:getDateHeader(name) 
  • 取得 request 物件中的所有:CookiegetCookies()

(4)其他方法:
  • 取得使用者要求所使用的Http方法(get or post):getMethod() 
  • 取得目標URL路徑:getRequestURI() 
  • 取得目標URL,但不包含查詢字串:getRequestURL() 
  • 取得path Servlet物件的RequestDispatcher物件:getRequestDispatcher(path) 
  • 取得遠端電腦的ip:getRemoteAddr() 
  • 取得遠端電腦的全名:getRemoteHost() 
  • 取得session隱含物件:getSession(true/false)  

2.response 物件:

(1)緩衝區處理:
  • 將緩衝區的內容輸出到瀏覽端:flushBuffer()
  • 取得瀏覽器使用緩衝空間的大小:getBufferSize()
  • 確認狀態碼與表頭均已完成寫入:isCommitted()
  • 設定緩衝區的空間大小:setBufferSize(size)
  • 清除表頭與緩衝區的內容:reset()    *當資料提交後,不可呼叫 reset()

(2)URL 重新導向與設定回應狀態碼:
  • 將瀏覽端欲顯示的網頁,轉址到指定網頁:sendRedirect(url)
  • 將錯誤狀態與訊息傳送至瀏覽端:setError(code, message)
  • 設定回應的狀態代碼:setStatus(code)

(3)設定回應訊息的表頭資訊:
  • 加入cookie:addCookie(cookie) 
  • 確認回應中是否包含 name 代表的表頭:containsHeader(name) 
  • 設定表頭值:setHeader(name, value) 
  • 設定整數的表頭值:setIntHeader(name, value) 
  • 設定日期的表頭值:setDateHeader(name, value) 
  • 加入新的表頭:addHeader(name, value) 
  • 加入新的整數表頭:addIntHeader(name, value) 
  • 加入新的日期表頭:addDateHeader(name, value) 

(4)設定回應內容之型別與編碼:
  • 設定回應內容的 MIME 形態:setContentType() 
  • 取得回應內容的編碼方式:getCharacterEncoding() 

(5)執行 URL 複寫管理 Session 狀態:
  • 執行欲傳入 sendRedirect() 方法之 URL 參數的編碼:encodeRedirectURL(url)
  • 將 sessionID 加入 url 執行編碼:encodeURL(url)


3.out 物件:

(1)資料輸出:
  • 送出輸出料流內的資料,並關閉資料流:close()
  • 將系統使用的換行符號,寫入輸出資料流以產生新行:newLine()
  • 執行資料的輸出:print(data)
  • 執行資料輸出,並在最後加上換行符號:println(data)

(2)緩衝區處理:
  • 清除緩衝區內的資料:clear()    *若資料已送至輸出資料流時,將會產生錯誤。應先丟出一個例外,再呼叫 clear() 方法
  • 清除緩衝區內的資料:clearBuffer()
  • 將緩衝區的內容送至輸出流,並傳送至瀏覽端:flush()
  • 當緩衝區溢滿時,資料是否自動傳送至輸出資料流:isAutoFlush()
  • 取得瀏覽器使用緩衝區空間的大小:getBufferSize()
  • 取得緩衝區剩下的空間大小:getRemaining()


4.session 物件:
  • 取得 Session ID:getId() 
  • 取得產生此 session 物件的時間:getCreation Time() 
  • 取得最近一次收到此 session 的使用者要求的時間:getLastAccessedTime() 
  • 取得最大可容忍的閒置時間(秒):getMaxInactiveInterval() 
  • 設定最大可容忍的閒置時間(秒):setMaxInactiveInterval(t) 
  • 用戶端瀏覽器是否收到 session:isNew() 
  • 刪除此 session 物件並清除物件中儲存的所有屬性:invalidate() 


5.application 物件:


(1)屬性存取方法:
  • 取得存取於 application 物件的屬性:getAttribute(name)
  • 取得儲存於 application 物件內所有屬性的名稱:getAttributeNames()
  • 移除儲存於 application 物件內的屬性:removeAttribute(name)
  • 指定欲儲存至 application 物件內之屬性的名稱與值:setAttribute(name, value)

(2)取得版本資訊:
  • 取得Servlet容器的名稱與版本序號:getServletInfo() 
  • 取得Servlet API的主要版本序號:getMajorVersion() 
  • 取得Servlet API的次要版本序號:getMinorVersion()

(3)將記錄寫至記錄檔:
  • 將訊息撰寫至 Servlet 引擎的記錄檔內:log(message)
  • 將訊息撰寫至 Servlet 引擎的記錄檔內,並將發生錯誤所引發例外物件之堆疊追溯一併寫入記錄檔:log(message, exception)

(4)取得 Web 應用程式的初始參數:
  • 取得特定名稱之起始參數的值:getInitParameter(name)
  • 取得所有起始參數的名稱:getInitParameterNames()

(5)用來取得伺服器端的其他資料方法:
  • 取得指定檔案的 Mime 型別:getMimeType(file) 
  • 將 path 代表的路徑轉換為完整的URL:getResource(path) 
  • 將 path 代表的資料當成InputStream物件傳回,path必須是以「/」為開頭的字串:getResourceAsStream(path) 
  • 取得 path 代表的虛擬路徑在本機上實際的檔案路徑:getRealPath(path) 
  • 取得 path 代表的 ServletContext 物件:getContext(path) 
  • 取得 path 代表的 RequestDispatcher 物件:getRequestDispatcher(path) 




三、JSP 進階技術

1.建立 File 物件:

File file物件變數 = new File("路徑", "檔案名稱");


2.取得伺服器端磁碟路徑:

request.getRealPath("虛擬資料夾路徑");


3.檔案的建立:

file物件變數.createNewFile();


4.刪除檔案 / 資料夾:

file物件變數.delete();


5.資料夾的建立:

file物件變數.mkdir();


6.檢查檔案是否存在:

file物件變數.exists();


7.取得資料夾中的檔案:

file物件變數.listFiles();


8.建立讀取檔案的 FileReader 物件:

FileReader filereader物件變數 = new FileReader("檔案路徑與名稱");


關閉檔案:
filereader物件變數.close()


*路徑必須為檔案儲存於伺服器端的磁碟路徑,不可是 Web 伺服器的虛擬路徑。


9.從檔案中讀取字元:

filereader物件變數.read(char[] 字元陣列, int 起始位置, int 讀取長度);


10.從檔案中讀取一行資料:

BufferedReader bufferedreader物件變數 = new BufferedReader(filereader物件變數);

關閉檔案:
bufferedreader物件變數.close()

讀取一行資料:
bufferedeader物件變數.readLine()


11.略過資料不讀取:

filereader物件變數.skip(欲略過的字元數)


12.將資料寫入檔案:

FileWriter filewriter物件變數 = new FileWriter("檔案路徑與名稱");

filewriter物件變數.write(char 字元 / String 字串)


13.將資料分行寫入檔案:

BufferedWriter buffered物件變數 = new BufferedWriter(filewriter物件變數);

關閉檔案:
bufferedwriter物件變數.close()

將分行字元寫入檔案:
bufferedwriter物件.newLine()

將物件資料寫入檔案:
bufferedwriter物件變數.write(char 字元 / String 字串)




四、資料庫連結
1.ODBC 資料來源連結建立:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")
Connection connection物件變數 = DriverManger.getConnection("jdbc:odic:ODBC資料來源名稱", "使用者帳號", "密碼")

關閉 ODBC 資料來源連結:
connection物件變數.close()

2.從資料來源取得資料:

Statement statement物件變數 = connection物件變數.createStatement()

關閉 Statement 物件變數:
statement物件變數.close()


3.執行查詢動作:

Result resultset物件變數 = statement物件變數.executeQuery(String SQL敘述)

關閉 ResultSet 物件:
resultset物件變數.close()


4.取得資料欄位:

result物件變數.getXXX("欄位名稱")


5.取得記錄集中的欄位數:

ResultSetMetaData resultsetmetadata物件 = rs.getMetaData();
int ColNum = resultsetmetadata物件.getColumnCount();


6.取得記錄集中的欄位名稱:

resultsetmetadata物件變數.getColumnName(欄位索引值)


7.記錄指標位置的取得:

resultset物件變數.getRow()


8.記錄指標位置的設定:

resultset物件變數.absolute(int 記錄位置)




五、JavaBeans

1.安裝 Bean 類別:

<classpath id='類別位置' source='原始碼檔' library-dir='類別庫檔' compile='是否自動編譯' />


2.載入 Bean 類別:

<jsp:useBean id="名稱" scope="有效範圍" class="Bean 類別" />


3.設定 Bean 物件屬性:

<jsp:setProperty name="名稱" property="屬性" value="值" />


4.在文稿元件內,以呼叫 Bean 物件的方法設定屬性:

bean物件名稱.set 屬性(值)


5.取得 Bean 物件屬性:

<jsp:getProperty name="名稱" property="屬性" />


6.在文稿元件內,以呼叫 Bean 物件的方法取得屬性:

bean物件變數.get屬性()


7.JavaBeans 物件的儲存:

FileOutputStream fos = new FileOutputStream("檔案名稱與路徑");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(欲寫入的物件);


8.從檔案取得 JavaBeans 物件:

FileInputStream fis = new FileInputStream("檔案名稱與路徑");
ObjectInputStream ois = new ObjectInputStream(fis);
ois.readObject();


9.利用 <jsp:useBean> 標籤讀取 Bean 物件:

<jsp:useBean id = "Bean 物件名稱" beanName="欲載入檔案的路徑與名稱" scope="有效範圍" type="欲載入物件的類別" />




六、檔案上傳

1.透過 jspSmartUpload 取得上傳檔案:

<%@ page import="com.jspsmart.upload.*" %>
<jsp:useBean id="myUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
jspsmartupload物件.initialize(PageContext pagecontext物件)

設定上傳檔案的總大小限制:
jspsmartupload物件.setTotalMaxFileSize(long 限制大小);

上傳檔案:
jspsmartupload物件.upload()

儲存上傳檔案:
jspsmartupload物件.save(String 儲存路徑)


2.取得上傳的個別檔案:

jspsmartupload物件.getFiles()
files物件.getFile(int 索引值)

沒有留言:

張貼留言