01Cookie方法
Cookie cookie = new Cookie(name,value):創建對象
獲取name:cookie.getName();
獲取value:Cookie.getValue();
響應給瀏覽器:
response.addCookie(Cookie);
request.getCookies();
02設置cookie存活的時間
sexMaxAge(秒) 持久化cookie
03:刪除cookie,替換setManager(0);
04Session原理
01通過唯一的標識JeSessionId放入到cookie中存儲,下次訪問的時候攜帶cookie取出唯一的標識JessionId比較查找Session容器
05Session創建在服務器中,存儲在服務器中
06:Session創建和銷燬
request.getSession() Invalidate()銷燬 getId()獲取唯一的標識JeSessionId
09Session的其他常用Api
HttpServlet 作用 long getCreateTime() 返回的是一個時間戳 boolean is New() 判斷當前是否是一個新的會話,是的返回true
Session域對象的Api(重要)
void SetAttribute(String name,Object value)向Session中存儲數據 Object getAttribute(String name) 獲取Session中的數據 Void RemoveAttruvbute(String name) 刪除session中的數據
12:瀏覽器關閉後,session的持久化方案
拋出問題
我們之前講解的時候發現tomcat在創建session之後,同時會創建一個會話級別的cookie,用來存儲創建的session的唯一標識的JsesssionId然後將會話級別的cookie即唯一的標識JsessionId查找Session容器
由於Tomcat就會默認創建的Session屬於會話級別的,那麼瀏覽器已關閉Cookie就消失,Session並沒有消失,因爲Session和瀏覽器沒有關係,依然存在,只是下次打開瀏覽器再次訪問的時候找不到session,如果多次這樣擦歐洲哦服務器會宕機
解決方法
持久化Session
持久化的步驟
01獲取Session中的唯一標識JsESSionId 02創建Cookie,將唯一的標識存儲到Cookie new Cookie("JessionId","id"); 03設置Cookie的存活時間,建議30秒 04將cookie響應給瀏覽器
小結
01:如果cookie禁止了,那麼找不到Session了,我們此時可以使用重定向的方式在url後面拼接Session使用Session的使用方噶 response.encodeRediRectUrl(path); 使用超鏈接解決問題 resopnse.necodURL(path); 上述的做法在訪問的路徑後面添加JEssion
小結:
01禁用cookie的使用超鏈接解覺
方法: path = resounse.encodeURL(path); 禁用cookie使用重定向的問題 resonse.encodeRedirectURL(path); 03上述兩種方式都是要在訪問路徑後面拼接SessionId http://localHost:8080/demo02Servlet;Jsesionied =365D6E4C4B80BDDE760818DFFC391EB 上述兩種方式的區別 使用超鏈接:即使路徑是錯誤的也會片接到Jsessioned 重定向:如果路徑有錯誤就不會拼接jsessioned
10.總結servlet request response servletContext(域對象) servletConfig (初始化參數)cookie session
Servlet小結
實現Servlet的三種方式:
01自定義義實現servelt接口實現接口的所有抽象方法
public class HelloWorldServlet implement Servlet{}
02自定義類繼承GeneratorServlet類重寫servlet方法
public Class DemoServlet extends GeneratorServlet{}
03自定義繼承HttpServlet重寫doGet和doPast方法
public class Demo02Servlet extends HttpServlet{}
Servlet生命週期
就是Servet從生到死的過程
01servelet由誰創建
tomcat通過反射的技術創建,調用無參構造
02何時創建
第一次在瀏覽器訪問的時候創建
03創建之後做了什麼事
01:對象創建了之後立刻使用對象調用init方法初始化使用,只調用了一次
02:每次調用servelet都會執行一次Servlet方法,
03:關閉tomcat服務器之前使用Servlet對象調用destroy銷燬方法,釋放資源
servletConfig
01ServletConfig是一個接口
02tomcat服務器使用serveltConfig配置對象,該對象在初始化的期間將信息傳遞給Servlet.
01String getInitParameter(String name) 返回包含指定初始化參數的D 的String,如果參數不存在,則返回null 02:Enumeration 的形式返回servlet的初始化參數的名稱,如果servlet沒有初始化參數,則返回一個空的Enumeration.
04ServeltConfig屬於接口,怎麼獲取 對象
01tomcat服務器的使用Servlet配置對,該對象在初始化期間將信息傳遞給Servlet.
01 String getInitParamter(String name)返回包含指定的初始化的值String,如果參數不存在返回null 02Enumerator的形式返回Servlet的初始化名稱,如果servlet沒有則返回一個空值
在Servlet的init方法中可以直接獲取
public void init(ServletConfig serveltConfig){}
域對象:session request servletContext
01request:可以在服務器內部串數據
在一個Servlet中向request中存儲數據,在其他servlet中可以獲取request中的數據
注意 request作爲域對象只能在一次請求的過程中使用
02ServletContext對象()
表示整個web項目的上下文對象屬於全局對象,代表整個web西安航母
可以讀取整個web項目的所有內容
tomcat啓動時創建,tomcat關閉就消亡
ServletContext屬於接口,不能直接創建對象,使用HTTPsERVLET的父類的
GeneratorServlet方法();
String getRealPath(String path)獲取指定文件在Tomcat中的真實路徑 String getMimeType(String file)獲取指定的文件在Tomcat中的文件類型 例如.txt文件.doct文件.jpg等
域對象的方法如下
void setAttribute(String name,object 0);向域對象中存儲數據 void getAttribute(String name)從域對象中獲取setAttribute數值 coid RemoveAttribute(String name)從域對象中刪除整體根據key刪除
請求和轉發
01使用HttpServletRequest的對象調用方法獲取轉發器 request.getRequestDispatcher(/path).forward(request,response);
重定向
response.sendRedirect("/path") 響應體 response.getWriter().print()字符流 response.getOutputStream().print()字節流
sql中插入兩個以上的語句要加@param
//定義註冊方法 @Insert("insert into user values(null,#{name},#{password})") void addUser(@Param("name") String username, @Param("password") String password);