###### tags: `大吳上課` `Servlet` # 0510 ## 第一節課 ### Status Line(A) & Response Header(B) & Response Content(C) 以上三個為傳送HTML資訊的三個回應 回應都是位元組 而非文字 A跟B會先送出,C最後到 setContent 可見P.112 文字在傳送時,就要正確的cherset,否則產生亂碼,在瀏覽器修是試辦不到的 文字資料 圖片資料,有兩種輸出,輸入則用port即可 getOutbput getInputStream getReader getWriter 以上四種為servletResponse為兩對 兩進兩出的方法 主要用getWriter及servletOutputStream進的方法 文字資料與二位元資料只能擇一使用 否則編譯時期就會產生錯誤 ### Sratus sendError會產生一個額外的錯誤訊息頁面 ## 第二節課 ### Response Header setHeader(key,vaule) Collection>IO&Thread ``` res.setContentType("text/html; charset=Big5"); // res.setHeader("Content-Type", "text/html;charset=Big5"); // 等同上面方法 ``` ### 應用 Client Pull與Server Push差異為是否有顯示頁面之後再轉 Refresh可能會重複提取伺服器連線資源,要小心使用 若要使用請對Servlet Context刷新,不要重複對資料庫資源刷新 Server Push 類似簡訊發送,廣告信都自動寄來 Client Pull 類似電子郵件,需要去刷新才會顯示在信箱中 重導請求重要性>客戶端提取 參考:SiteSelector.java 重導請求 ClientPull.java 客戶端提取 ClientPullMove.java ## 第三節課 ### 快取 P.139 快取proxy的用途: 若沒增加setHeader("Cache-Contrl","no-sotre"); 會造成將文件占存在代理伺服器; 同網段的人員若去瀏覽該網站,將無法拜訪最新資訊 建議三個setHeader都使用,放在doget or dopost ``` res.setHeader("Cache-Control","no-store"); //HTTP 1.1 res.setHeader("Pragma","no-cache"); //HTTP 1.0 res.setDateHeader ("Expires", 0); ``` ### 錯誤 測試ERROR頁面 可在web.xml註冊 ``` <error-page> <error-code> 400 </error-code> <location> /error.html </location> </error-page> <error-page> <error-code> 404 </error-code> <location> /error.html </location> </error-page> <error-page> <error-code> 500 </error-code> <location> /error.html </location> </error-page> <error-page> <exception-type> javax.servlet.ServletException </exception-type> <location> /error.html </location> </error-page> ``` 當產生404 500的時候可以跳轉至error頁面示意,避免直接秀出404或500狀況 ## 第四節課 都在測試MAC有多怪 錯誤處裡的方法 ## 第五節課 ### Session Tracking FTP會儲存狀態 HTTP在瀏覽器與伺服器完成傳送後即斷線 一般購物流程 先Session Tracking 後 Authentication ## 第六節課 ### Cookie Cookie有存活時間,且會有上限數量 Session 與 Cookie有關,若封鎖Cookie將會讓Session無法作用 session.invalidate() & removeAttribute(string) 登出與刪除物件在購物車中,兩者都可用,保險起見可用登出
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up