※Cache
也就是回應給瀏覽器的cache,如果不想讓瀏覽器cache,可以如下設定resp.setHeader("Cache-Control", "no-store");
.no-cache此文件不應該被cache;
.no-store此文件不應該被cache,也不可以儲存在proxy伺服器裡
有七個選項,看5.2.1
resp.setHeader("Expires", "0");//文件失效時間,0表示馬上失效,看5.3
※錯誤頁面
在web.xml的web-app下增加如下的設定<error-page> <error-code>405</error-code> <location>/WEB-INF/405.jsp</location> </error-page> <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/xxx.jsp</location> </error-page>
※location可以是另外一支servlet,所以「/」的觀念還是一樣
※405的錯是get或post沒有對應的方法就會拋出來,所以我在jsp給post,但我servlet沒寫post,這時就會跳出405.jsp的畫面
※比較奇怪的是NullPointer,我在servlet寫Integer i;(沒初始化) i++,這樣子一定是NullPointer,可是不會跳xxx.jsp的頁面
※Cookie
Cookie cookie = new Cookie("bruce", "chen"); cookie.setMaxAge(60*60*24); resp.addCookie(cookie); Cookie[] cookieArray = req.getCookies(); for(Cookie c:cookieArray){ if(c.getName().equals("bruce")){ System.out.println(c.getValue()); } }
※setMaxAge設定有效期限,單位是秒
每個瀏覽器都有相關的設定,下面是IE的
勾結束時刪除瀏覽瀏覽記錄,會刪除一個叫刪除按鈕裡面的設定
這個設定可以調整Cookie的存取,如果調到最高就是完全不用Cookie
HttpSession方法
resp.setContentType("text/html; charset=UTF-8"); PrintWriter out = resp.getWriter(); HttpSession session = req.getSession(); out.print("sessionId=" + session.getId()); out.print("<br/>session是新的嗎?" + session.isNew()); out.print("<br/>session有效時間=" + session.getMaxInactiveInterval()); out.print("<br/>session創建時間=" + session.getCreationTime()); out.print("<br/>session上次存取時間=" + session.getLastAccessedTime()); out.print("<br/>從Cookie取得session嗎?" + req.isRequestedSessionIdFromCookie()); out.print("<br/>從URL取得session嗎?" + req.isRequestedSessionIdFromURL()); out.print("<br/>sessionId有效嗎?" + req.isRequestedSessionIdValid()); out.print("<br/><a href='"); out.print(resp.encodeURL(req.getRequestURI())); out.print("'>注意狀態列和網址</a>");
※req.getSession()等同req.getSession(true),false表示不新增session,所以只能在session之後
※invalidate()是登出
※setMaxInactiveInterval(int)設定session有效時間,單位是秒
※如果要重導就用這一組resp.sendRedirect(res.encodeRedirectURL(""));
※isRequestedSessionIdFromURL想變成true。Session會先到Cookie找資料,如果發現Cookie被關掉,就會用URL Rewriting的方式,但測試時,localhost要改成ip才行,否則還是有辦法抓到Cookie
※會在網址後加上「;jsessionid=16進位的數字」,這個數字如果被有心人拿到,也是會有安全的漏洞,所以只要寫req.getSession()就會有一條session,如果瀏覽器關掉再開就是兩條,因為jsessionid不同了
沒有留言:
張貼留言