Khởi tạo Session trong java servlet/jsp – Bài 4 – Lập trình web Java MVC

Session trong java servlet/jsp là kiến thức mà ở bài 4 này,tôi và các bạn sẽ cùng nhau tìm hiểu.Session là gì? Cách khởi tạo session? Cách gán,lấy giá trị và xóa Session như thế nào?Áp dụng Session vào thực thế theo mô hình lập trình web java với jsp/servlet.

Sesison được áp dụng thực thế trong những trường hợp nào?

Thực tế khi nói đến mạng xã hội,không bạn nào không biết đến facebook.com.Hiện tại là trang có lượng truy cập đừng top 1 thế giới.Vậy vì sao tôi nhắc đến facebook? Khi muốn vào xem thông tin các bạn cần đăng nhập (login) gồm username,password như hình dưới :

Sau khi đăng nhập thành công,chúng ta có thể vào bất kỳ trang nào.Và các bạn thử kích chuột vào tất cả các trang,vậy cái gì không thay đổi?Luôn có ở tất cả các trang,điều tôi muốn nói ở đây chính là gì?

khoi-tao-session-trong-java-jspservlet

 

Đó chính là cái nickname,vậy nếu chúng ta lập trình web với servlet/jsp,để gữi  dữ liệu từ servlet sang jsp dùng request.setAttribute(),lúc này chỉ duy nhất trang jsp chuyển tiếp đến mới nhận được dữ liệu đối tượng truyền đến.Vấn đề đặt ra,làm thế nào khởi tạo đối tượng một lần ,và chúng ta tái sử dụng lại đối tượng đó ở bất kỳ trang nào.Chúng ta sẽ nghĩ ngay tới việc sẽ sử dụng Sesison trong java servlet.

Session trong java serlvet/jsp là gì?

Session là phương pháp sử dụng để quản lý các phiên làm việc giữa người sử dụng và hệ thống. Việc quản lý phiên làm việc này sẽ giúp tạo ra sự chứng thực hiệu quả bởi việc xác nhận thông tin trước khi truy cập vào một phân vùng cố định. Ngoài ra, việc quản lý tốt phiên làm việc cũng giúp người truy cập cảm thấy dễ dàng sử dụng dịch vụ của trang web cho những lần truy cập sau.Nói tóm lại,session giúp chúng ta lưu trữ lại trạng thái của người dùng.

Cách khởi tạo session?

Để khởi tạo đối tượng session trong java servlet.Các bạn cần tạo ra đối tượng session từ đối tượng request và dùng phương thức getSession().

HttpSession session = request.getSession();

Đối với jsp,các bạn không cần khởi tạo đối tượng session,được gọi là đối tượng tiềm ẩn trong jsp.

Cách gán session –  session.setAttribute(“string”, object)

Để có thể gán session trong servlet sử dụng session đã khởi tạo sau đó dùng :

HttpSession session = request.getSession();
session.setAttribute(“string”, object).

 

Trong đó gồm 2 tham số,tham số đầu tiên là keyname,tham số thứ 2 là đối tượng muốn gán session.

Ví dụ :

HttpSession session = request.getSession();
String nameBlog = "Blog IT Phu Tran - Chia sẽ kiến thức lập trình miễn Phí";
session.setAttribute("nameBlog", nameBlog);

Cách lấy giá trị session –  session.getAttribute(“string”)

Tương tự như gán giá trị session,bạn đọc cũng có thể đoán được cách để lấy được giá trị session rồi.Sử dụng session.getAttribute(“string”),trong đó string tương ứng với keyname đã đặt tên gán giá trị cho session.

HttpSession session = request.getSession();
session.getAttribute(“string”).

Ví dụ :

HttpSession session = request.getSession();
session.getAttribute("nameBlog");

Cách xóa session trong java servlet

Để xóa được session trong java servlet,chúng ta có 2 cách sử dụng.Tùy vào mỗi trường hợp trong thực tế mà chúng ta xử lý cho phù hợp.Ví dụ khi đăng nhập vào facebook,các bạn đăng xuất (logout) ,trong trường hợp này,chúng ta sẽ xóa tất cả  những thông tin lưu lại của người dùng.

1.Hủy tất cả session 

Sử dụng phương thức :

HttpSession session = request.getSession();
session.invalidate();

Và đôi lúc tôi chỉ muốn xóa hay hủy một session,chẳng hạn như ví dụ trên,tôi muốn xóa session của đối tượng nameBlog trong servlet,lúc nào tôi sẽ sử dụng như sau :

2.Hủy một session 

HttpSession session = request.getSession();
session.removeAttribute(“keyName”);

Tương ứng với :

session.removeAttribute("nameBlog");

Ngoài ra chúng ta có thể config trong file web.xml để xóa session ví dụ như sau :

<session-config>
<session-timeout>60</session-timeout>
</session-config>

Truyền vào số phút muốn tự động hủy session,thời gian mặc định của mỗi phiên làm việc session với ứng dụng java web trong khoảng tầm 30 phút.

Áp dụng Session vào thực thế bằng một ví dụ

Chúng ta sẽ làm một ứng dụng java web với jsp/servlet đăng nhập (login) đơn giản gồm username,password.Sau khi nhấn nút đăng nhập sẽ lấy thông tin và kiểm tra đúng hoặc sai.Trường hợp đăng nhập đúng sẽ tạo session và lưu lại trạng thái của người dùng.Nếu sai thông báo sai tại chính trang đó để người dùng tiến hành đăng nhập lại.Sau đó lấy thông tin và hiển thị tại trang quản trị.

Tạo file login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Form Login</title>
	</head>
	<body>
		<div style="width: 500px; margin: 50px auto;background:#D0D01A;padding:30px">
			<h2>Login : ITPHUTRAN.COM</h2>
			<%
				if(request.getParameter("error") != null){
					out.print("<p style='color:red'>Sai tên đăng nhập hoặc mật khẩu </p>");
				}
			%>
			<form action="<%=request.getContextPath() %>/login" method="post" >
				<div>
					<label>Username: </label>
					<input type="text" name="username" value="" />
				</div>
				<br />
				<div>
					<label>Password: </label>
					<input type="password" name="password" value="" />
				</div>
				<br />
				<div>
					<input type="submit" name="submit" value="Login" />
					<input type="reset" name="reset" value="Reset" />
				</div>
			</form>
		</div>
	</body>
</html>

 

Tạo file Servlet LoginController.java

package com.itphutran.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jdk.nashorn.internal.ir.RuntimeNode.Request;

/**
 * Servlet implementation class LoginController
 */
@WebServlet("/login")
public class LoginController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		if("itphutran".equals(username)){
			session.setAttribute("username", username);
			session.setAttribute("password", password);
			RequestDispatcher dispatcher = request.getRequestDispatcher("quantri.jsp");
			dispatcher.forward(request, response);
		}else{
			response.sendRedirect(request.getContextPath()+"/login.jsp?error=0");
		}
		
	}

}

File servlet này thực hiện chức năng controller,xử lý lất thông tin từ người dùng và  và kiểm tra lưu lại trạng thái của người dùng nếu đăng nhập đúng bằng cách sử dụng session.

Tạo file quantri.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Form Login</title>
	</head>
	<body>
		<div style="width: 500px; margin: 50px auto;background:#D0D01A;padding:30px">
			<h2>Quản lý admin || ITPHUTRAN.COM</h2>
			<%
				if(session.getAttribute("username") != null){
			%>
			<p>Username :<strong><%=session.getAttribute("username") %></strong> </p>
			<%} %>
		</div>
	</body>
</html>

Chạy ứng dụng : 

1.Trường hợp đăng nhập sai :

 

ứng dụng session java servlet vào form login

 

1.Trường hợp đăng nhập đúng:

 

ứng dụng session java servlet vào form login

Nhấn nút login :

 

ứng dụng session java servlet vào form login

 

 

 

Tổng kết :

Ở bài này,các bạn đã tìm hiểu được tổng hợp những kiến thức của session trong java servlet/jsp.Ngoài cách sử dụng session là cơ chế để lưu lại trang của người dùng thì các bạn có thể tìm hiểu thêm cookies trong java/jsp/servlet. Những kiến thức về session được tổng kết :

  • Session trong java servlet.
  • Cách khởi tạo session trong java servlet?
  • Cách gán,lấy giá trị và xóa session trong java servlet
  • Áp dụng Session vào thực tế.

 

Done! Good Luck.

 

5 1 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x