Servlet基礎梳理(四),servlet基礎梳理
本篇說一下session和路徑的問題。
session:
是一種在伺服器端儲存http狀態資訊的方案,目前有兩種實現方式:基於Cookie或者URL重寫。
基於cookie:第一次訪問伺服器,伺服器給響應的cookie中帶有sessionid,再次請求時把cookie帶回。匹配sessionID。
URL重寫:在請求的url中將sessionid以參數形式進行提交,伺服器擷取並進行匹配。action="<%response.encodeURL("welcome.jsp")%>"
建立時機:
並非第一次訪問伺服器jsp都會建立session,如果jsp設定session=false不建立
如果訪問的頁面不是第一次訪問伺服器的第一個資源,那麼返回本次會話的session,自身不再建立
如果第一次訪問的是Servlet,只有調用request.getsession()或request.getsession(true)才會建立session。
銷毀:
調用session.invalidate()直接銷毀
卸載web應用
超過session的到期時間預設半個小時:(session.getMaxInactiveInterval());可以設定(session.setMaxInactiveInterval()),在 web.xml中設定,時間單位為分鐘。
對於session,最重要的兩個方法:session.setAttribute(arg0, arg1);session.getAttribute(arg0)。
URL路徑:
開發中盡量使用絕對路徑,因為絕對路徑一定沒問題,相對路徑可能有問題。寫法如下:
response.sendRedirect(request.getContextPath()+"/shoppingCart/person.jsp");
在Servlet/jsp中,因為路徑中/問題引發很多重路徑問題,這裡主要說一下/的兩種含義:
避免這些錯誤的方式就是使用絕對路徑。
最後提一下①表單重複提交和驗證碼的機制問題:
因為這兩個啟動並執行原理相同,基本上一起提一下:
1 在表單原始介面產生驗證碼圖片(①產生字串),並把圖片中字元放入session
2 表單中輸入驗證碼(①不用輸入自己產生)
3 Servlet中擷取兩個值比較,一致則受理成功,銷毀session中驗證碼,不一致則打回重新
OK,這一篇暫時說這些吧