সেশন (Session) হল একটি ওয়েব অ্যাপ্লিকেশন দ্বারা ব্যবহৃত প্রক্রিয়া, যার মাধ্যমে সার্ভার এবং ক্লায়েন্টের মধ্যে একটি নির্দিষ্ট সময়ের জন্য তথ্য সংরক্ষণ করা হয়। সাধারণত ওয়েব অ্যাপ্লিকেশনগুলো স্টেটলেস (stateless) হয়, অর্থাৎ প্রতিটি রিকোয়েস্ট একে অপরের থেকে আলাদা। তবে সেশন ব্যবস্থার মাধ্যমে আপনি ইউজারের তথ্য সংরক্ষণ করতে পারেন যাতে একাধিক রিকোয়েস্টের মধ্যে এটি শেয়ার করা যায়।
সেশনের ভূমিকা
১. ব্যবহারকারী সনাক্তকরণ: সেশন ব্যবহারের মাধ্যমে একটি ব্যবহারকারীকে সনাক্ত করা সম্ভব হয়। যখন ব্যবহারকারী প্রথমবার ওয়েবসাইটে প্রবেশ করেন, তখন তাকে একটি সেশন আইডি প্রদান করা হয় যা পরবর্তী রিকোয়েস্টগুলির জন্য ব্যবহার করা হয়।
২. ডাটা শেয়ারিং: ওয়েব অ্যাপ্লিকেশনগুলিতে একাধিক পেজ থাকে, যেখানে ব্যবহারকারী এক পেজ থেকে আরেক পেজে যায়। সেশন ব্যবহারের মাধ্যমে ব্যবহারকারীর পূর্ববর্তী পেজের তথ্য পরবর্তী পেজে শেয়ার করা যায়। যেমন, একটি শপিং কার্টের মধ্যে পণ্য যোগ করা এবং পরবর্তী পেজে সেটি দেখা।
৩. সুরক্ষা: সেশন ব্যবহারের মাধ্যমে ব্যবহারকারীর প্রাইভেট বা সিকিউর ডাটা (যেমন লগইন ইনফরমেশন) একটি নির্দিষ্ট সময়কাল পর্যন্ত সার্ভারে সুরক্ষিত রাখা হয়, যাতে ব্যবহারকারীকে প্রতিবার লগইন করতে না হয়।
সেশনের কাজের প্রক্রিয়া
সেশন সাধারণত সার্ভার সাইডে পরিচালিত হয় এবং এটি ক্লায়েন্টের ব্রাউজারে একটি কুকি (cookie) বা ইউআরএল রিডিরেকশন (URL rewriting) মাধ্যমে সংরক্ষিত হয়।
সেশন তৈরির প্রক্রিয়া
- ইউজার প্রথমবার সাইটে প্রবেশ করলে: যখন ব্যবহারকারী ওয়েবসাইটে প্রথমবার প্রবেশ করে, তখন সার্ভার একটি সেশন তৈরি করে এবং একটি ইউনিক সেশন আইডি (Session ID) ক্লায়েন্টকে প্রদান করে।
- সেশন আইডি সংরক্ষণ: সেশন আইডিটি সাধারণত কুকির মাধ্যমে ক্লায়েন্টের ব্রাউজারে পাঠানো হয়। এর ফলে পরবর্তী রিকোয়েস্টে ক্লায়েন্ট সেশন আইডিটি সার্ভারে পাঠিয়ে দেয়।
- সেশন থেকে ডাটা রিট্রিভ করা: ইউজার যখন পরবর্তী রিকোয়েস্ট করে, সার্ভার সেশন আইডি দেখে সেশন থেকে সংশ্লিষ্ট তথ্য রিট্রিভ করে।
সেশন শেষ হওয়া
- সময়সীমা শেষ হওয়া: নির্দিষ্ট সময় পর সেশন স্বয়ংক্রিয়ভাবে শেষ হয়ে যায় (যেমন ৩০ মিনিটের অ্যাকটিভিটি না থাকলে)।
- লগআউট বা সেশন ম্যানুয়ালি শেষ করা: ব্যবহারকারী যদি লগআউট করেন বা কোডের মাধ্যমে সেশন শেষ করা হয়, তবে সেশনটি মুছে ফেলা হয়।
জেএসপি তে সেশন ব্যবহারের উদাহরণ
জেএসপি তে সেশন ব্যবহারের জন্য HttpSession অবজেক্ট ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:
সেশন তৈরি এবং মান সংরক্ষণ:
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
// সেশন অবজেক্ট পেতে
HttpSession session = request.getSession();
// সেশনে ডাটা সংরক্ষণ
session.setAttribute("username", "JohnDoe");
%>
সেশন থেকে মান রিট্রিভ করা:
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
// সেশন অবজেক্ট পেতে
HttpSession session = request.getSession(false);
if (session != null) {
String username = (String) session.getAttribute("username");
out.println("Welcome, " + username);
} else {
out.println("No session found.");
}
%>
সেশন শেষ করা:
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%
// সেশন অবজেক্ট পেতে
HttpSession session = request.getSession(false);
if (session != null) {
// সেশন শেষ করা
session.invalidate();
out.println("You have logged out successfully.");
}
%>
সেশনের প্রয়োজনীয়তা
- ব্যবহারকারীর অভিজ্ঞতা উন্নয়ন: সেশন ব্যবহারের মাধ্যমে ব্যবহারকারীকে সহজ এবং ব্যক্তিগত অভিজ্ঞতা প্রদান করা যায়। যেমন, শপিং কার্টে পণ্য যোগ করা এবং পরবর্তী পেজে তা দেখা।
- সুরক্ষিত লগইন: সেশন ব্যবহারের মাধ্যমে লগইন তথ্য সুরক্ষিত রাখা সম্ভব হয়, যাতে প্রতিবার লগইন করতে না হয়।
- কাস্টম ডেটা পরিচালনা: সেশন ডাটা ব্যবহার করে বিভিন্ন ডাইনামিক কন্টেন্ট তৈরি করা যায়, যেমন ব্যবহারকারীর নাম, পছন্দ, বা অন্যান্য কাস্টম ডেটা সংরক্ষণ।
- অ্যাপ্লিকেশন স্টেট ম্যানেজমেন্ট: ওয়েব অ্যাপ্লিকেশন স্টেটলেস হলেও, সেশন ব্যবহারের মাধ্যমে কিছু নির্দিষ্ট তথ্য সাময়িকভাবে রাখা যায়, যা বিভিন্ন পেজে শেয়ার করা যায়।
জেএসপি তে সেশন অত্যন্ত গুরুত্বপূর্ণ একটি উপাদান, যা ব্যবহারকারীর তথ্য সংরক্ষণ ও পরিচালনা করতে সহায়তা করে এবং ডাইনামিক ওয়েব অ্যাপ্লিকেশনগুলিতে কার্যকরী ভূমিকা পালন করে।
Read more