Session কি এবং কেন প্রয়োজন?

Servlet এর মধ্যে Session Management - সার্ভলেটস (Servlets) - Java Technologies

308

Session হল একটি গুরুত্বপূর্ণ প্রযুক্তি যা Servlets এবং Java Web Applications-এ ব্যবহারকারীদের মধ্যে ডেটা স্টোর এবং ট্র্যাক করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে প্রয়োজনীয় যখন আপনি ব্যবহারকারীর সাথে চলমান ইনটারঅ্যাকশন, যেমন লগইন বা শপিং কার্ট, ট্র্যাক করতে চান। HTTP প্রোটোকল স্টেটলেস, যার মানে প্রতিটি HTTP রিকোয়েস্ট একে অপরের থেকে পৃথক এবং পূর্বের রিকোয়েস্টের সাথে কোন সম্পর্ক থাকে না। তাই Session ব্যবহার করা হয় যাতে একাধিক রিকোয়েস্টের মধ্যে ডেটা শেয়ার করা যায়।

Servlets-এ Session Management ব্যবহৃত হয় যাতে একাধিক রিকোয়েস্টের মধ্যে ব্যবহারকারীর তথ্য সঞ্চিত থাকে এবং তার অবস্থা (state) বজায় থাকে। Session এর মাধ্যমে, ব্যবহারকারীর তথ্য এবং সেশন সম্পর্কিত ডেটা টেম্পোরারি স্টোর করা যায়।


Session কী?

Session হল একটি সার্ভার-সাইড ডেটা স্টোরেজ মেকানিজম যা ব্যবহারকারীর তথ্য (যেমন ইউজার নাম, পছন্দ, লগইন স্ট্যাটাস) বিভিন্ন HTTP রিকোয়েস্টের মধ্যে ধরে রাখে। যখন একটি ব্যবহারকারী ওয়েব অ্যাপ্লিকেশনে প্রবেশ করে, তখন একটি নতুন Session শুরু হয়। সাধারণত, সেশনটি একটি ইউনিক আইডেন্টিফায়ার (যেমন Session ID) দিয়ে চিহ্নিত করা হয়, যা ব্যবহারকারীর ক্লায়েন্ট সাইড (ব্রাউজার) এবং সার্ভার সাইড (সার্ভলেট কন্টেইনার) মধ্যে ট্র্যাক করা হয়।

Session একটি টেম্পোরারি অবজেক্ট যা সাধারণত ব্রাউজার বন্ধ হওয়া বা সেশনটি এক্সপায়ার হয়ে গেলে মুছে ফেলা হয়। এটি ওয়েব অ্যাপ্লিকেশনগুলোতে বিশেষভাবে কার্যকরী, যেখানে ব্যবহারকারীর স্টেট (যেমন লগইন সেশন) টানা কিছু সময় ধরে ধরে রাখা প্রয়োজন।


Session কেন প্রয়োজন?

1. State Management:

  • HTTP প্রোটোকল স্টেটলেস, অর্থাৎ প্রতিটি রিকোয়েস্ট একে অপর থেকে পৃথক থাকে এবং পূর্বের রিকোয়েস্টের সাথে কোন সম্পর্ক থাকে না। সুতরাং, ব্যবহারকারীর অবস্থা (state) ট্র্যাক করার জন্য সেশন ব্যবহৃত হয়। এটি ব্যবহারকারীর জন্য একটি stateful সিস্টেম তৈরি করতে সাহায্য করে।

উদাহরণস্বরূপ, লগইন পরবর্তী সমস্ত রিকোয়েস্টে ব্যবহারকারীর তথ্য যেমন নাম বা ইউজার আইডি জানা প্রয়োজন। সেশন এই তথ্য সংরক্ষণ করে যাতে প্রতিটি রিকোয়েস্টে পুনরায় লগইন করার প্রয়োজন না হয়।

2. Shopping Cart:

  • E-commerce ওয়েব অ্যাপ্লিকেশনগুলিতে Shopping Cart সিস্টেমের জন্য সেশন খুবই গুরুত্বপূর্ণ। ব্যবহারকারী যখন পণ্য যোগ করে, তখন সেগুলির তথ্য সেশনেই স্টোর হয়, যাতে পরবর্তীতে পেমেন্ট পদ্ধতি নির্বাচন বা চেকআউট করার সময় সেই ডেটা পুনরায় পাওয়া যায়।

3. User Authentication:

  • Session ব্যবহারকারীর লগইন স্ট্যাটাস ট্র্যাক করতে সাহায্য করে। ব্যবহারকারী একবার লগইন করার পর সেশনটি সক্রিয় থাকে, এবং অন্য রিকোয়েস্টে লগইন তথ্য যাচাই করার প্রক্রিয়া সহজ হয়। এক্সপায়ার হওয়ার পর সেশন বন্ধ হয়ে যায়।

4. Efficiency:

  • সেশন ব্যবহার করলে বারবার ডেটাবেসে গিয়ে তথ্য আহরণ করার প্রয়োজন হয় না, যেমন ব্যবহারকারীর পছন্দ বা অন্যান্য তথ্য। সেগুলি সেশনেই রাখা থাকে, ফলে সার্ভারের লোড কমে এবং অ্যাপ্লিকেশন আরও দ্রুত কাজ করে।

Servlets এ Session ব্যবহারের কৌশল

Servlets এ সেশন ম্যানেজমেন্ট করার জন্য HttpSession অবজেক্ট ব্যবহার করা হয়। এই অবজেক্টের মাধ্যমে সার্ভার ব্যবহারকারীর সেশন পরিচালনা করে এবং বিভিন্ন রিকোয়েস্টের মধ্যে প্রয়োজনীয় তথ্য স্টোর করা হয়।

1. HttpSession তৈরি করা:

HttpSession অবজেক্ট তৈরি করা খুবই সহজ। request.getSession() মেথড কল করলে একটি সেশন অবজেক্ট পাওয়া যায়। যদি সেশন না থাকে, তবে একটি নতুন সেশন তৈরি হয়।

উদাহরণ: HttpSession তৈরি এবং ব্যবহার করা

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class UserSessionServlet extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Get the session object
        HttpSession session = request.getSession(true); // `true` means create a new session if it doesn't exist
        
        // Set an attribute in the session
        session.setAttribute("username", "JohnDoe");

        // Get attribute from session
        String username = (String) session.getAttribute("username");

        // Respond with the session information
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<h1>Hello, " + username + "!</h1>");
    }
}

এখানে:

  • request.getSession(true) সার্ভলেট কন্টেইনারকে একটি নতুন সেশন তৈরি করতে বলে যদি ইতিমধ্যে সেশন না থাকে।
  • setAttribute() মেথড দ্বারা সেশনের মধ্যে তথ্য (যেমন username) সঞ্চিত হয়।
  • getAttribute() মেথড দ্বারা সেশন থেকে তথ্য ফেরত পাওয়া যায়।

2. Session ID:

Session ID হল একটি ইউনিক আইডেন্টিফায়ার যা প্রতিটি সেশনকে চিহ্নিত করে। এটি সাধারণত cookie হিসেবে ব্রাউজারে স্টোর হয়। সার্ভার এই Session ID এর মাধ্যমে বিভিন্ন রিকোয়েস্টের মধ্যে সেশনটি ট্র্যাক করে।

উদাহরণ:

// Retrieve the session ID
String sessionId = session.getId();
response.getWriter().println("Session ID: " + sessionId);

3. Session Expiration and Timeout:

সেশন যখন নির্দিষ্ট সময় ধরে ব্যবহৃত না হয়, তখন সেটি expire হয়ে যায়। সেশন টাইমআউট সাধারণত web.xml কনফিগারেশন ফাইলে সেট করা হয়।

উদাহরণ: web.xml তে সেশন টাইমআউট সেট করা

<web-app>
    <session-config>
        <session-timeout>30</session-timeout> <!-- 30 minutes -->
    </session-config>
</web-app>

এখানে, সেশন ৩০ মিনিটের পর টাইমআউট হয়ে যাবে যদি কোনও রিকোয়েস্ট না আসে।

4. Invalidating a Session:

যখন ব্যবহারকারী লগ আউট করে, তখন সেশনটি অবৈধ (invalidate) করা হয়। এর মাধ্যমে ব্যবহারকারীর সেশন সম্পর্কিত সমস্ত তথ্য মুছে ফেলা হয়।

উদাহরণ: Session invalidate করা

// Invalidating the session
session.invalidate();

Session এর সুবিধা

  1. User State Management: সেশন ব্যবহারকারীর তথ্য এবং অবস্থা ট্র্যাক করতে সহায়তা করে, যা স্টেটলেস HTTP প্রোটোকলের সমস্যা সমাধান করে।
  2. Security: সেশন লগইন বা অথেনটিকেশন সম্পর্কিত তথ্য সুরক্ষিতভাবে সঞ্চয় করতে সহায়তা করে।
  3. E-commerce: শপিং কার্ট, চেকআউট প্রক্রিয়া, এবং পেমেন্ট ট্র্যাকিংয়ের জন্য সেশন অত্যন্ত গুরুত্বপূর্ণ।
  4. Performance: সেশন ব্যবহারকারীর তথ্য এবং পছন্দগুলি দ্রুত অ্যাক্সেস করার সুযোগ দেয়, ফলে অ্যাপ্লিকেশন দ্রুত কাজ করে।

সারাংশ

Session হল একটি গুরুত্বপূর্ণ প্রযুক্তি যা Java Servlets এবং ওয়েব অ্যাপ্লিকেশনে ব্যবহারকারীর তথ্য স্টোর এবং ট্র্যাক করার জন্য ব্যবহৃত হয়। HTTP প্রোটোকল স্টেটলেস হওয়ায়, সেশন ব্যবহার করা হয় যাতে একাধিক HTTP রিকোয়েস্টের মধ্যে ব্যবহারকারীর অবস্থা (state) বজায় রাখা যায়। Session ব্যবহারের মাধ্যমে আমরা লগইন, শপিং কার্ট, ইউজার প্রেফারেন্স, এবং অন্যান্য ডেটা কার্যকরভাবে ট্র্যাক করতে পারি। HttpSession অবজেক্ট ব্যবহার করে সেশন তৈরি এবং পরিচালনা করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...