ข้อแตกต่างระหว่าง getSession(boolean) กับ getSession()

Note ไว้เป็นข้อจดจำเนื่องจากความจำไม่ดี เวลามีการดึงข้อมูลที่ถูกเก็บไว้ใน session มาใช้งานนั้น จะเห็นว่ามี method ในการ getSession อยู่สองตัวก็คือ getSession(boolean) กับ getSession() ข้อแตกต่างของ method ทั้งสองเป็นดังนี้
1. getSession() ถ้า request ที่เข้ามานั้นมี session อยู่แล้วก็จะทำการส่ง session นั้นคืนมาให้ผู้เรียก แต่ถ้ายังไม่มีก็จะทำการสร้าง sesion ใหม่พร้อมกับสร้าง session id ให้ด้วย ตัวอย่างเช่น

protected void doGet(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
		
	HttpSession ss = request.getSession();
	String data = (String) ss.getAttribute("data");
	System.out.println("session data : "+data);
}

ดังนั้นในบรรทัดที่ 5 จะไม่เกิด Error ขึ้นเวลาให้ ss.getAttribute(“xx”);
2. ส่วน getSession(boolean) นั้น parameter boolean ที่ส่งเข้ามาเป็นตัวบ่งบอกว่า ในกรณีที่ยังไม่มี session มาก่อนจะให้สร้าง session ขึ้นมาใหม่หรือไม่ ถ้าเป็น true จะสร้างใหม่ ถ้าเป็น false จะม่มีการสร้าง session ใหม่กรณีที่ยังไม่มี session ตัวอย่างเช่น (Code จากข้อ 1 เปลี่ยนแค่ บรรทัดที่ 5)

HttpSession ss = request.getSession(true);

จะไม่เกิดข้อผิดพลาดในบบรทัดที่ 5 แต่ถ้าเป็นเปลี่ยนเป็น

HttpSession ss = request.getSession(false);

จะเกิด error เป็น java.lang.NullPointerException ที่บรรทัดที่ 5
หมายเหตุ : โดยปกติ session จะถูกสร้างโดยอัตโนมัติ อยู่แล้ว อยากอยากเห็นผลการทำงานให้ทำการ Disable cookies ใน browser ที่ใช้งานก่อน

  1. No comments yet.

  1. No trackbacks yet.