玩轉web之servlet(六)---session介紹及簡單使用(登入驗證中儲存資訊)

來源:互聯網
上載者:User

標籤: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是沒限制的
缺點:由於將資訊儲存到伺服器端,對系統資源佔用比較大。






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.