Khởi tạo Session trong java servlet/jsp – Bài 4 – Lập trình web Java MVC – https://final-blade.com

Session trong java servlet / jsp là kỹ năng và kiến thức mà ở bài 4 này, tôi và những bạn sẽ cùng nhau tìm hiểu và khám phá. 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 quy mô 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 vấn đừng top 1 quốc tế. Vậy vì sao tôi nhắc đến facebook ? Khi muốn vào xem thông tin những 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à chiêu thức sử dụng để quản trị những phiên thao tác giữa người sử dụng và mạng lưới hệ thống. Việc quản trị phiên thao tác này sẽ giúp tạo ra sự xác nhận hiệu suất cao bởi việc xác nhận thông tin trước khi truy vấn vào một phân vùng cố định và thắt chặt. Ngoài ra, việc quản trị tốt phiên thao tác cũng giúp người truy vấn cảm thấy thuận tiện sử dụng dịch vụ của website cho những lần truy vấn sau. Nói tóm lại, session giúp tất cả chúng ta tàng 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 người tiêu dùng session trong java servlet. Các bạn cần tạo ra đối tượng người dùng session từ đối tượng người tiêu dùng request và dùng phương pháp getSession ( ) .
HttpSession session = request. getSession ( ) ;
Đối với jsp, những bạn không cần khởi tạo đối tượng người dùng session, được gọi là đối tượng người tiêu dùng tiềm ẩn trong jsp .

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

Để hoàn toàn 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ố tiên phong là keyname, tham số thứ 2 là đối tượng người dù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 hoàn toàn 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, tất cả chúng ta có 2 cách sử dụng. Tùy vào mỗi trường hợp trong trong thực tiễn mà tất cả chúng ta giải quyết và xử lý cho tương thích. Ví dụ khi đăng nhập vào facebook, những bạn đăng xuất ( logout ), trong trường hợp này, tất cả chúng ta sẽ xóa tổng thể 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 pháp :

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

Và đôi lúc tôi chỉ muốn xóa hay hủy một session, ví dụ điển hình như ví dụ trên, tôi muốn xóa session của đối tượng người tiêu dùng nameBlog trong servlet, khi 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 :


60

Truyền vào số phút muốn tự động hóa hủy session, thời hạn mặc định của mỗi phiên thao tác session với ứng dụng java web trong khoảng chừ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 thuầ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 tin sai tại chính trang đó để người dùng thực thi đă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"%>




	
		
		Form Login
	
	
		

Login : ITPHUTRAN.COM

<% if(request.getParameter("error") != null){ out.print("Sai tên đăng nhập hoặc mật khẩu"); } %>


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 thi công dụng controller, giải quyết và 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"%>




	
		
		Form Login
	
	
		

Quản lý admin || ITPHUTRAN.COM

<% if(session.getAttribute("username") != null){ %>

Username :<%=session.getAttribute("username") %>

<%} %>

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 .