cookie和session還有(request,response,servletContext)域對象;還有初始化參數servetConfig

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章