---
# System prepended metadata

title: '0510'
tags: [Servlet, 大吳上課]

---

###### 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)
登出與刪除物件在購物車中，兩者都可用，保險起見可用登出