Servlet&JSP複習筆記 04

1.狀態管理
  由於HTTP協議是無狀態協議,但不少時候須要將客戶端和服務端的屢次請求當作一個來對待.將屢次交互中設計的數據進行保存.

  狀態:數據
  管理:對數據的維護web


2.Cookie
  客戶端向服務器發送一個請求後,服務器會將一段文本信息以set-cookie消息頭的方式發回給客戶端,瀏覽器會存儲這一段信息,
  當客戶端再次向服務器發出請求時,瀏覽器會默認給服務器發送這段信息.

  建立Cookie:
    Cookie c = new Cookie(String name,String value);
    response.addCookie(c);
  查詢Cookie:
    Cookie[] cookies = request.getCookies();
    能夠返回null.
    cookie.getName();
    cookie.getValue();瀏覽器

  修改cookie:
    若是set-cookie消息頭髮揮文本的名字在瀏覽器中已經存在,name會覆蓋原有的舊的文本.tomcat

3.Cookie的原理:
  1.發送請求;
  2.執行response.addCookie語句後,就會有set-cookie消息頭髮送一段文本到瀏覽器;
  3.瀏覽器保存信息到硬盤或者內存中;
  4.當再次發送請求時,會以cookie消息頭的形式自動將保存的文本發送到服務器.
  5.服務器端可使用request.getCookie獲取cookie的值.安全

4.Cookie的生命週期
  默認狀況下,cookie存儲組內存中,因此關閉瀏覽器時,cookie消失.

  設置生命週期:
  cookie.setMaxAge(); 單位是秒 >0 指在硬盤上保存的時間 =0 當即銷燬 <0 等同於默認狀況,保存在內存中服務器

5.設置中文
  URLEncoder.encode("中文","UTF-8");
  URLDncoder.encode("中文","UTF-8");

6.Cookie的路徑問題
  只有當瀏覽器訪問Cookie的路徑或者子路徑時,纔會將這個Cookie進行上傳.
  默認狀況下,Cookie的路徑是建立Cookie的路徑.cookie

  cookie.setPath("/")網絡

7.Cookie的限制
  只能光存儲字符串,大小不能超過4kb,各個廠商對保存cookie的個數限制.佔用過多的網絡資源.並且cookie自己存在瀏覽器,若是是明文存儲是不安全的.session


8.Session(會話):
  Session也是實現狀態管理的一種手段,保存屢次交互數據時存在服務器端的,在客戶端與服務器端之間傳遞的也只是session的編號.dom

9.Session的原理:
  客戶端第一次訪問server-->server爲不一樣的客戶端建立一個session對象-->在提供響應時間session對象的惟一編號以set-cookie消息頭的方式返回客戶端
  -->客戶端將這個id存在內存中-->再次發送請求時,內存中的id會自動發送給服務器端-->服務器端根據id查找對應的對象字體

10.Session的使用
  a.建立session對象: 實現登陸操做
    HttpSession s = request.getSession(bool);
    bool = true:根據id查詢session,有則使用,沒有則建立.若是bool=false沒有id則返回null.
  b.使用Session綁定數據 能夠實現登陸操做
    session.setAttribute(String name,Object value);
    session.getAttribute(name)
  c.刪除session
    session.inValidate(); 能夠實現退出登陸操做

11.Session驗證
  一些資源只有用戶登陸後才能進行訪問.

12.Session的超時問題
  容器回將一些閒置的好久的session進行回收.閒置時間就是session的生命週期.
  默認的超時時間是:30min.

  a)能夠修改tomcat/conf/web.xml中進行更改 全局
  b)可使用session.setMaxInactiveInterval(秒) 個例

13.禁用Cookie的後果
  基於Cookie來存儲的sid會失效,session沒法使用.若是還須要繼續使用的話,可使用URL重寫的方式.

  URL重寫:改變地址欄的地址內容,以新的形式訪問服務器而且能攜帶一個sid
  response.encodeURL(); //超連接的時候
  response.encodeRedirectURL(); //重定向時將地址進處理

14.驗證碼   1.防止惡意攻擊,不停的註冊,不停的登陸來佔用服務器資源;   2.只有發送請求時,纔將隨機昌盛的字符組合會知道圖片上,返回.   3.生成圖片:     繪製一張從白紙到內容生成圖片的過程     //建立畫布     BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);     //獲取畫筆     Graphics g = image.getGraphics();     //設置畫筆顏色     Random random = new Random();     g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));     //設置字體     g.setFont(new Font(null, Font.BOLD, 24));     //繪製背景     g.fillRect(0, 0, 100, 30);     //更改畫筆顏色     g.setColor(new Color(255,255,255));     //繪製字符串     String temp = "" + random.nextInt(20) + random.nextInt(20) + random.nextInt(20);     g.drawString(temp, 10, 25);     //保存網絡至網絡流(設置響應流的圖片)     response.setContentType("image/jpeg");     //獲取輸出流     OutputStream outputStream = response.getOutputStream();     //保存圖片到輸出流     ImageIO.write(image, "jpeg", outputStream);     outputStream.close();

相關文章
相關標籤/搜索