標籤:blog http java 使用 os 資料
在瀏覽器與伺服器進行互動時,往往需要把涉及到的一些資料儲存下來,這時就需要使用cookie或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(); //如果登陸成功,會返回使用者的使用者名稱}elsereturn 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是沒限制的
缺點:由於將資訊儲存到伺服器端,對系統資源佔用比較大。