實驗會話管理_第1頁
實驗會話管理_第2頁
實驗會話管理_第3頁
實驗會話管理_第4頁
實驗會話管理_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗五 會話管理一、實驗目的1. 了解Web服務器對客戶跟蹤的各種方法;2. 重點掌握使用HttpSession對象跟蹤會話的方法; 3. 掌握使用Cookie技術跟蹤會話的方法;4. 了解URL重寫和隱藏表單域的方法。二、實驗原理HTTP協(xié)議是無狀態(tài)的協(xié)議。在很多情況下,Web服務器必須能夠跟蹤客戶的狀態(tài)。比如,對于一個購物網站,在一個時刻可能有多個客戶購物,Web服務器必須能夠區(qū)分不同的客戶。一般情況下,Web服務器為每個客戶配置了虛擬的購物車(ShoppingCart)。當某個客戶請求將一個商品放入購物車時,Web服務器必須根據發(fā)出請求的客戶的身份,找到該客戶的購物車,然后把商品放入其中

2、。Web服務器跟蹤客戶的狀態(tài)通常有4種方法:(1)使用HttpSession對象管理會話;(2)使用持久的Cookie對象;(3)使用URL重寫機制;(4)使用隱藏的表單域。三、實驗內容與步驟(一) 使用HttpSession對象管理會話?!静襟E1】建立Servlet對象,代碼如下:package .session.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServl

3、et;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException request.s

4、etCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String username = request.getParameter("username");if(username.equalsIgnoreCase("zhangsan") response.getWriter().print("用戶名或密碼錯誤!"); else HttpSession session = request.ge

5、tSession();session.setAttribute("username", username);response.sendRedirect("/prac05_session/index1.jsp");【步驟2】修改web.xml文件,添加代碼如下:<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>.session.servlet.LoginServlet</servlet-class><

6、/servlet>【步驟3】新建login.jsp頁面,代碼如下:<% page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>login.jsp</title> </head> <body

7、> <h1>login.jsp</h1> <hr/> <form action="/prac05_session/sessionLoginServlet" method="post"> 用戶名:<input type="text" name="username" /><br/> <input type="submit" value="Submit"/> </form> <

8、;/body></html>【步驟4】新建index1.jsp頁面,代碼如下:<% page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>index1.jsp</title> </head

9、> <body><h1>index1.jsp</h1><%String username = (String)session.getAttribute("username");if(username = null) out.print("您還沒有登錄!"); else out.print("用戶名:" + username);%><hr/><a href="/prac05_session/index2.jsp">index2</a&

10、gt; </body></html>【步驟5】新建index2.jsp頁面,代碼如下:<% page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <title>index2.jsp</title> &l

11、t;/head> <body><h1>index2.jsp</h1><%String username = (String)session.getAttribute("username");if(username = null) out.print("您還沒有登錄!"); else out.print("用戶名:" + username);%><hr/><a href="/prac05_session/index1.jsp">index1

12、</a> </body></html>圖5.1 login.jsp頁面圖5.2 重定向后頁面(二)使用Cookie跟蹤會話使用Cookie跟蹤會話涉及到向客戶端寫入Cookie和從客戶端讀取Cookie。注意UUID的用法?!静襟E1】向客戶端寫入Cookie對象package .cookie;import java.io.IOException;import java.io.PrintWriter;import java.util.UUID;import javax.servlet.ServletException;import javax.se

13、rvlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AddCookie extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExceptio

14、n response.setContentType("text/html;charset=utf-8");String id = UUID.randomUUID().toString();/ 生成一個隨機字符串Cookie cookie = new Cookie("id", id);/ 創(chuàng)建Cookie對象,指定名字和值response.addCookie(cookie);/ 在響應中添加Cookie對象response.getWriter().print("已經給你發(fā)送了ID");public void doPost(HttpSer

15、vletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request, response);訪問上述Servlet將向客戶端寫入一個Cookie,執(zhí)行后可查看客戶機對應目錄看是否寫了一個文件。圖5.3 SendCookie程序的運行結果【步驟2】從客戶端讀取Cookie對象package .cookie;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.

16、ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class GetCookie extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)thr

17、ows ServletException, IOException response.setContentType("text/html;charset=utf-8");Cookie cs = request.getCookies();/獲取請求中的Cookieif(cs != null) /如果請求中存在Cookie for(Cookie c : cs) /遍歷所有Cookieif(c.getName().equals("id") /獲取Cookie名字,如果Cookie名字是id response.getWriter().print("您的

18、ID是:" + c.getValue();/打印Cookie值public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doGet(request,response);圖5.4 GetCookie程序的運行結果四、思考題1. 簡述會話管理的常用方法有哪些?答:使用Servlet API的Session機制,使用持久的Cookie對象,使用URL重寫機制,使用隱藏的表單域。2. 如何使用HttpSession對象共享數據?答: Public void setAttribute(String name,Object value)j將一個指定名稱和值的屬性綁定到會話對象上,Public void getAt

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論