ServletConfig এবং ServletContext দুটোই সার্ভলেটের কনফিগারেশন এবং তথ্য সংরক্ষণের জন্য ব্যবহৃত হয়, তবে এগুলোর কাজ এবং পরিসর (scope) আলাদা। সার্ভলেটের কার্যকারিতা এবং জীবনচক্রে তাদের বিভিন্ন ভূমিকা রয়েছে। নিচে এই দুটি কনফিগারেশন উপাদানের মধ্যে পার্থক্য তুলে ধরা হলো।
ServletConfig
ServletConfig হল একটি সার্ভলেটের জন্য কনফিগারেশন তথ্য সরবরাহ করার উপায়। এটি শুধুমাত্র সার্ভলেটের জন্য সীমাবদ্ধ এবং সার্ভলেটটি প্রথমবার ইনস্ট্যানশিয়েট (instantiate) হওয়ার সময় এটি প্রেরণ করা হয়। ServletConfig ব্যবহার করে সার্ভলেটের নির্দিষ্ট কনফিগারেশন তথ্য (যেমন init parameters) রাখা হয় এবং এই কনফিগারেশনটি শুধুমাত্র ওই সার্ভলেটের মধ্যে উপলব্ধ থাকে।
ServletConfig এর বৈশিষ্ট্য:
- Scope: সার্ভলেটের জন্য স্থানীয়। অর্থাৎ, এটি একক সার্ভলেটের মধ্যে সীমাবদ্ধ থাকে এবং অন্য সার্ভলেটের কাছে অ্যাক্সেসযোগ্য নয়।
- প্রাথমিক কনফিগারেশন: সার্ভলেটের প্রথম ইনস্ট্যানশিয়েশনের সময় এটি সার্ভলেটের কনফিগারেশন ইনফরমেশন (যেমন
initপ্যারামিটার) সরবরাহ করে। - অ্যাক্সেস পদ্ধতি: এটি
getInitParameter()মেথডের মাধ্যমে ইনিশিয়াল প্যারামিটার অ্যাক্সেস করতে ব্যবহৃত হয়।
উদাহরণ: ServletConfig ব্যবহার
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
String dbURL = config.getInitParameter("dbURL");
System.out.println("Database URL: " + dbURL);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Logic to handle HTTP GET request
}
}
এখানে, init(ServletConfig config) মেথড ব্যবহার করে সার্ভলেটটি dbURL ইনিশিয়াল প্যারামিটার অ্যাক্সেস করছে, যা web.xml কনফিগারেশন ফাইলে সংজ্ঞায়িত করা আছে।
web.xml কনফিগারেশন উদাহরণ:
<web-app>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
<init-param>
<param-name>dbURL</param-name>
<param-value>jdbc:mysql://localhost:3306/mydb</param-value>
</init-param>
</servlet>
</web-app>
ServletContext
ServletContext হল একটি সার্ভলেট কন্টেইনারের (যেমন, Tomcat) সাথে সম্পর্কিত কনফিগারেশন এবং ডেটা সংরক্ষণ করার উপায়। এটি সার্ভলেট কন্টেইনার (যেমন, ওয়েব অ্যাপ্লিকেশন) এর পর্যায়ে ডেটা সংরক্ষণ করে এবং সমস্ত সার্ভলেটের মধ্যে শেয়ার করা হয়। ServletContext সার্ভলেট অ্যাপ্লিকেশন চলাকালীন বিভিন্ন সার্ভলেট এবং JSP ফাইলের মধ্যে সাধারণ তথ্য শেয়ার করতে ব্যবহৃত হয়।
ServletContext এর বৈশিষ্ট্য:
- Scope: সার্ভলেট কন্টেইনারের জন্য গ্লোবাল। অর্থাৎ, এটি পুরো অ্যাপ্লিকেশন জুড়ে উপলব্ধ থাকে এবং একাধিক সার্ভলেট বা JSP এর মধ্যে শেয়ার করা যায়।
- শেয়ার করা ডেটা: ServletContext সাধারণত অ্যাপ্লিকেশন স্তরের ডেটা শেয়ার করার জন্য ব্যবহৃত হয় (যেমন, অ্যাপ্লিকেশন কনফিগারেশন, লগিং ডেটা ইত্যাদি)।
- অ্যাক্সেস পদ্ধতি: এটি
getAttribute()এবংsetAttribute()মেথডের মাধ্যমে অ্যাপ্লিকেশন স্তরের ডেটা অ্যাক্সেস এবং সেট করা হয়।
উদাহরণ: ServletContext ব্যবহার
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = getServletContext();
String appName = (String) context.getAttribute("appName");
response.getWriter().println("Application Name: " + appName);
}
}
এখানে, getServletContext() মেথড ব্যবহার করে সার্ভলেট ServletContext অবজেক্ট পেতে হচ্ছে এবং getAttribute() মেথডের মাধ্যমে অ্যাপ্লিকেশন স্তরের শেয়ার করা ডেটা (যেমন appName) অ্যাক্সেস করা হচ্ছে।
web.xml কনফিগারেশন উদাহরণ:
<web-app>
<context-param>
<param-name>appName</param-name>
<param-value>My Web App</param-value>
</context-param>
</web-app>
ServletConfig এবং ServletContext এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | ServletConfig | ServletContext |
|---|---|---|
| Scope | সার্ভলেটের জন্য স্থানীয়। | অ্যাপ্লিকেশন স্তরের, সার্ভলেট কন্টেইনারের মধ্যে শেয়ার করা। |
| অবস্থান | একক সার্ভলেটের কনফিগারেশন এবং প্রাথমিক তথ্য ধারণ করে। | পুরো ওয়েব অ্যাপ্লিকেশনের জন্য সাধারণ তথ্য ধারণ করে। |
| ব্যবহার | সার্ভলেটের প্রাথমিক কনফিগারেশন (init parameters) সংরক্ষণ করে। | অ্যাপ্লিকেশন স্তরের ডেটা (যেমন, অ্যাপ্লিকেশন কনফিগারেশন) সংরক্ষণ করে। |
| অ্যাক্সেস পদ্ধতি | getInitParameter() এবং getInitParameters() ব্যবহার করা হয়। | getAttribute() এবং setAttribute() ব্যবহার করা হয়। |
| লাইফ সাইকেল | সার্ভলেটের জীবনচক্রের শুরুতে এটি ইনিশিয়ালাইজ হয়। | সার্ভলেট কন্টেইনারের মধ্যে অ্যাপ্লিকেশন চলাকালীন উপলব্ধ থাকে। |
| কনফিগারেশন ফাইল | web.xml ফাইলে সার্ভলেট কনফিগারেশন করা হয়। | web.xml ফাইলে অ্যাপ্লিকেশন কনফিগারেশন করা হয়। |
সারাংশ
ServletConfig এবং ServletContext দুটি ভিন্ন ধরনের কনফিগারেশন অবজেক্ট যা সার্ভলেট এবং ওয়েব অ্যাপ্লিকেশনে ব্যবহৃত হয়। ServletConfig একক সার্ভলেটের জন্য কনফিগারেশন তথ্য সংরক্ষণ করে এবং এটি সার্ভলেটের জীবনের প্রথমে ইনিশিয়ালাইজ হয়, যখন ServletContext পুরো অ্যাপ্লিকেশন স্তরের জন্য সাধারণ তথ্য শেয়ার করে এবং সার্ভলেট কন্টেইনারের মধ্যে অ্যাপ্লিকেশন চলাকালীন উপলব্ধ থাকে। ServletConfig সাধারণত সার্ভলেটের কনফিগারেশন ইনফরমেশন রাখে, যেমন ইনিশিয়াল প্যারামিটার, এবং ServletContext অ্যাপ্লিকেশন স্তরের ডেটা শেয়ার করার জন্য ব্যবহৃত হয়।
Read more