##JSP
1. 概念:
* Java Server pages:java服務器端頁面
* 能夠理解爲:一個特殊的頁面,其中既能夠直接定義html的標籤,又能夠定義java代碼
* 用於簡化書寫!
2.原理
* JSP本質上就是一個Servlet
3. JSP的腳本: JAVA定義JAVA代碼的方式:
1. <% 代碼 %>:定義的java代碼,在service方法中。service方法中能夠定義什麼,該腳本中就能夠定義什麼
2. <%! 代碼 %> :定義的java代碼,在jsp轉換後的java類的成員位置。
3. <%= 代碼 %> :‘=’至關於輸出語句,定義的java代碼,會輸出到頁面上。輸出語句中能夠定義什麼,該腳本中就能夠定義什麼
4. JSP內置對象:
* 在jsp頁面中不須要去建立獲取,就能夠直接使用的對象
* jsp一共有9個內置對象。
* 今天學習:
* request
* response
* out:字符輸出流對象,能夠將數據輸出到頁面上。和response.getWriter()相似
* response.getWriter()和out.writer()的區別:tomcat給客戶端作出響應以前,會先去找response的緩衝區,再去找out的緩衝區。out在定義的位置輸出,而response先於out輸出
##Session
1. 概念:服務器端會話技術,再一次會話的多起請求間共享數據,將數據保存在服務器端的對象中。HttpSession
2. 快速入門:
1. 獲取HttpSession對象:
request.getSession()
2. 使用HttpSession對象:
getAttribute()
setAttribute()
removeAttribute()
3. 原理
* Session的實現是依賴於Cookie 的
4.細節:
1. 當客戶端關閉後,服務器端不關閉,兩次獲取的session是同一個嗎
* 默認狀況下不是(客戶端關閉,cookie關閉,沒有對應的cookie 頭,session是依賴於cookie的)
* 指望客戶端關閉後,session也能相同。
1. 建立cookie,鍵爲JSESSION Cookie c = new Cookie("JSESSION",session.getId());
2. 設置cookie的最大存活時間 c.setMaxAge(60 * 60);
response.addCookie(c);
2. 客戶端不關閉,服務器端關閉,兩次獲取的session是同一個嗎
* 不是同一個,可是要確保數據不丟失
* session的鈍化
* 在服務器正常關閉以前,將session對象序列化到硬盤上
* session的活化
* 在服務器啓動後,將session文件轉化爲內存中的session對象便可。
* tomcat服務器能夠進行session對象的序列化和反序列化,而idea能夠序列化可是不可以反序列化讀取session對象(先刪除work文件再從新建立)
3. session何時被銷燬?
1. 服務器關閉
2. session對象去調用一個方法invalidate();
3. session默認失效時間是30分鐘(能夠設置默認失效時間,在tomcat目錄下web.xml的<session-config>標籤內)
5. session的特色:
1. session用於存儲一次會話的屢次請求的數據,存在服務器端
2. session能夠存儲任意類型,任意大小的數據
* session與cookie的區別:
1. session存儲數據在服務器端
2. session沒有數據大小限制,cookie有
3. session數據安全,cookie相對於不安全
================================================================================================
驗證碼案例:
分析:1.設置request的編碼
2. 獲取參數Map集合
3. 獲取驗證碼
4. 將用戶信息封裝到user對象
5. 先判斷程序生成的驗證碼和用戶輸入的驗證碼是否一致(減少數據庫的開銷)。從session中獲取程序生成的驗證碼。
* 一致:
* 再判斷用戶名和密碼是否正確
* 正確:
* 登陸成功
* 存儲數據 session
* 跳轉到successjsp(重定向)
* 不正確:
1. 給提示信息
2. 跳轉登陸頁面
* 不一致:1. 給用戶提示信息,驗證碼錯誤(request)
2. 跳轉登陸頁面,轉發html