玩轉web之servlet(六)---session介紹及簡單使用(登入驗證中儲存資訊)
阿新 • • 發佈:2018-12-30
在瀏覽器與伺服器進行互動時,往往需要把涉及到的一些資料儲存下來,這時就需要使用cookie或session進行狀態管理。
關於session的建立是那兩行紅色字型,將使用者名稱繫結到了session物件上,那怎麼使用呢?
使用這個方法,無論是在servlet中,還是前臺指令碼段裡,都可以輕鬆的獲取所需要的資訊。
再來說說怎麼清楚session,當瀏覽器關閉時,我們需要清除掉session,一個是考慮到安全性,一個是要確保你退出後其他使用者可以登入,這就用到session的invalidate方法了。
在jsp中,當退出時寫上
就會清除掉繫結在session上的資訊。
關於session的優缺點:
優點:1:session會將所有狀態寫在伺服器端,所以相對於cookie比較安全,一般用來儲存登入使用者的資訊或其他重
要資訊
2:session可以儲存的資料型別比較豐富,而cooike只能儲存字串
3:session儲存的資料大小更大,而cooike只能儲存大約4k的資訊,理論上session是沒限制的
缺點:由於將資訊儲存到伺服器端,對系統資源佔用比較大。
這篇文章先來說說session怎麼用,首先在servlet中建立一個session來儲存資訊,舉個例子,在做登陸驗證時,如果登陸成功,需要將使用者的資訊儲存到session中,怎麼儲存呢?下面給出程式碼:
public class Login_Do extends HttpServlet { String order_name = ""; String order_password = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); order_name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") ; order_password = request.getParameter("password"); PrintWriter out = response.getWriter(); JSONObject json = new JSONObject(); String msg = ""; try { json.put("msg",login()); out.print(json.toString()); HttpSession session = request.getSession(); session.setAttribute("user_name", login()); } catch (SQLException e) { e.printStackTrace(); } } public String login() throws SQLException{ Order_User_Dao u = new Order_User_Dao(); Order_User user = new Order_User(); user = u.login(order_name,order_password); if(!"".equals(user.getUser_name())){ return user.getUser_name(); //如果登陸成功,會返回使用者的使用者名稱 } else return null; } }
關於session的建立是那兩行紅色字型,將使用者名稱繫結到了session物件上,那怎麼使用呢?
HttpSession session = request.getSession();
String user_name = String.valueOf(session.getAttribute("user_name"));
使用這個方法,無論是在servlet中,還是前臺指令碼段裡,都可以輕鬆的獲取所需要的資訊。
再來說說怎麼清楚session,當瀏覽器關閉時,我們需要清除掉session,一個是考慮到安全性,一個是要確保你退出後其他使用者可以登入,這就用到session的invalidate方法了。
在jsp中,當退出時寫上
<% session.invalidate(); %>
就會清除掉繫結在session上的資訊。
關於session的優缺點:
優點:1:session會將所有狀態寫在伺服器端,所以相對於cookie比較安全,一般用來儲存登入使用者的資訊或其他重
要資訊
2:session可以儲存的資料型別比較豐富,而cooike只能儲存字串
3:session儲存的資料大小更大,而cooike只能儲存大約4k的資訊,理論上session是沒限制的
缺點:由於將資訊儲存到伺服器端,對系統資源佔用比較大。