Servlet與JSP進階
ContentType的作用:
請求轉發與響應重定向的使用;
多個Servlet(JSP) 之間跳轉有兩種方式:
request.getRequestDispatcher().forward() - 請求轉發
reponse.sendRedirect() - 響應重定向
請求轉發是伺服器跳轉,只會產生一次請求
重定向則是瀏覽器端跳轉,會產生兩次請求
設定請求自定義屬性
設定請求屬性:request.setAttribute(屬性名,屬性值) 屬性名:必須是字串,屬性值 可以任意
獲取請求屬性: Object attr = request.getAttribute(屬性名)
cookie與session
Cookie是由伺服器端生成,傳送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value儲存到某個目錄下的文字檔案內,下次請求同一網站時就傳送該Cookie給伺服器(前提是瀏覽器設定為啟用cookie)。Cookie名稱和值可以由伺服器端開發自己定義,對於JSP而言也可以直接寫入JSESSIONID用於標記一個會話(session),這樣伺服器可以知道該使用者是否合法使用者以及是否需要重新登入等,伺服器可以設定或讀取Cookies中包含資訊,藉此維護使用者跟伺服器會話中的狀態。
Cookie是客戶端技術,而HttpSession是伺服器端技術
1、Cookie是什麼?
一個小資訊,由伺服器寫給瀏覽器的。由瀏覽器來儲存。
客戶端儲存的Cookie資訊,可以再次帶給伺服器。
Cookie類:javax.servlet.http.Cookie
3、如何向客戶端寫Cookie:
HttpServletResponse物件.addCookie(javax.servlet.http.Cookie物件)(就是寫了一個響應訊息頭:Set-Cookie:cookie的資訊)
Servlet規範中的Cookie API 提供了setMaxAge setPath setDomain等方法,可以對Cookie狀態進行控制
特點:一個瀏覽器針對一個網站最多存20個Cookie;最多存300個Cookie,每個Cookie的長度不能超過4KB(稀缺)。只是規定,但不同的瀏覽器實現的不同。
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 Cookie cookie=new Cookie("name","Tom"); 4 //設定Maximum Age 5 cookie.setMaxAge(1000); 6 //設定cookie路徑為當前專案路徑 7 cookie.setPath(request.getContextPath()); 8 //新增cookie 9 response.addCookie(cookie); 10 }