ch6.JSP內建對象--session對象

來源:互聯網
上載者:User
session對象

session對象是 javax.servlet.http.HttpSession 類的執行個體。和Java Servlets中的session對象有一樣的行為。

session對象用來跟蹤在各個用戶端請求間的會話。


主要方法:



每個使用者都是一個不同的session,伺服器通過session id區分不同的使用者,用

<%String id = session.getId();%>
查看Id
在Cookie中自動化佈建的那個cookie就是使用者的session id,所以,session在操作時使用了cookiede 處理機制,如果伺服器重啟,session id要重新分配

如果要保留,就要使用序列化機制


登陸和登出

這是session用的最多的地方

session 在所有項目中用的最多的地方就是登陸驗證以及登出

測試,登陸頁面(根據之前的登陸頁面改進):

login.jsp

<%@ page contentType = "text/html" pageEncoding = "GBK"%><%@ page import = "java.sql.*"%><html><head><title>www.thystar.com</title></head><body><center><h1>登陸操作</h1><hr><form action = "login.jsp" method = "post"><table border = "1"><tr><td colspan="2">使用者登入</td></tr><tr><td>登陸ID</td><td><input type = "text" name = "id"></td></tr><tr><td>登陸密碼</td><td><input type = "password" name = "password"></td></tr><tr><td colspan = "2"><input type = "submit" value = "登陸"><input type = "reset" value = "重設"></td></tr></table></form><%!  //串連資料庫public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";public static final String DBURL = "jdbc:mysql://localhost:3306/usr";public static final String DBUSER = "root";public static final String DBPASS = "mysqladmin";%><%  //初始化連線物件Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;boolean flag = false;String name = null;         //接受使用者姓名%><%  //操作資料庫,尋找使用者名稱和密碼try{Class.forName(DBDRIVER);conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);String sql = "SELECT name FROM login WHERE userid = ? AND password = ?";pstmt = conn.prepareStatement(sql);pstmt.setString(1, request.getParameter("id"));pstmt.setString(2, request.getParameter("password"));rs = pstmt.executeQuery();if(rs.next()){flag = true;name = rs.getString(1);}}catch(Exception e){System.out.println(e);}finally{try{rs.close() ;pstmt.close() ;conn.close() ;} catch(Exception e){}}%><%  if(flag){response.setHeader("refresh","2; URL = welcome.jsp"); //定時跳轉session.setAttribute("userid", name); //將登入的使用者名稱儲存%><h3>使用者登入成功,兩秒後跳轉</h3><h3>如果沒有跳轉,請按這裡</h3><%}}else{%><h3>登入錯誤</h3><%}%></body></html>

welcome.jsp

<%@ page contentType = "text/html" pageEncoding = "GBK"%><html><head><title>www.thystar.com</title></head><body><%if(session.getAttribute("userid")!=null){%><h3>歡迎<%=session.getAttribute("userid")%>, <a href = "logout.jsp">登出</a></h3><%}else{%><h3>請先<a href = "login.jsp">登入</a></h3><%}%></body></html>

logout.jsp

<%@ page contentType = "text/html" pageEncoding = "GBK"%><html><head><title>www.thystar.com</title></head><body><%response.setHeader("refresh","2; URL=login.jsp");session.invalidate();%><h3>已退出本系統,2秒後跳轉</h3><h3>如果沒有跳轉,按<a href = "login.jsp">這裡</h3></body></html>

但是這個頁面是有問題的,就是“登陸錯誤”這個資訊一直會出現,直到你輸入正確的資訊跳轉。暫時不會解決,再往後學看看。

會話跟蹤有一下四種技術:

通過session提供的方法儲存 通過Cookie 通過表單的隱藏欄位完成 通過地址修正



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.