Servlet和JSP知識複習(2)Servlet基礎
·產生HTML的servlet
·告知瀏覽器接下來發送的時HTML
-
response.setContentType(“text/html”);
·修改println語句以構建合法的Web頁面
- 列印語句應用輸出相應的HTML標籤。
·用形式語法驗證器 檢查產生的HTML
- http://validator.w3.org/
- http://www.htmlhelp.com/tools/validator/
·servlet的打包
·將檔案移動到與預想的包名相匹配的子目錄中
·在類檔案中插入包語句
- E.g
package org.waityou.test.servlet;
·要保證CLASSPATH指出頂層目錄
·在URL中包括包名
- E.g http://localhost/servlet/org.waityou.test.servlet.TestServlet
·一些簡單的、用以構建HTML的工具 + 生產力類
public class
ServletUtilities {
public static
final String DOCTYPE =
"<!DOCTYPE
HTML PUBLIC /"-//W3C//DTD
HTML 4.0 " +
"Transitional//EN/">";
public static
String headWithTitle(String title) {
return(DOCTYPE +
"/n" +
"<HTML>/n"
+
"<HEAD><TITLE>"
+ title +
"</TITLE></HEAD>/n");
}
...
}
·不要走極端
- 完整的HTML產生包常常不能很好地工作
- 應用JSP架構時更好的解決方案。
·servlet的生命週期
·init
-
僅在servlet首次載入時執行一次。
不是每次請求都要調用。
·service
-
在新線程中由伺服器為每個請求而調用。發送到
doGet,doPost等。
不要覆蓋這個方法!
·doGet,doPost,doXxx
-
處理GET,POST,等請求。
-
覆蓋這些方法以提供期望的行為。
·destroy
-
在伺服器刪除servlet的執行個體時調用。
不是每次請求後都調用。
·為什麼不應該覆蓋service
·之後可以通過加入doPut,doTrace等支援其他服務。
·通過添加getLastModified方法,就可以支援修改日期。
·service方法自動提供下述支援:
- HEAD請求
- OPTIONS請求
- TRACE請求
·其他方案:讓doPost調用doGet
·servlet的調試
·使用列印語句;在案頭電腦上運行伺服器
·使用Apache Log4J
·使用IDE整合的調試器
·直接查看HTML源碼
·返回錯誤頁面給客戶
-
需要針對缺失或異常資料預先規劃
·使用記錄檔
- log(“message”)或log(“message”, Throwable)
·分別處理請求和響應資料
·停止並重新啟動伺服器
·小結
·主要的servlet代碼都在doGet或doPost中:
-
HttpServletRequest包含輸入資訊
-
HttpServletResponse允許我們設定發送出去的資訊
·調用setContentType指定MIME類型
·調用getWriter擷取針對客戶的Writer
·一次性的設定代碼放在init中
- servlet僅僅初始化並載入一次
- servlet被多次調用
- 初始化參數在web.xml中設定。