Value Stack Struts 2-এর একটি গুরুত্বপূর্ণ অংশ, যা MVC (Model-View-Controller) আর্কিটেকচারের মধ্যে ডাটা পরিচালনা করে। এটি Struts 2 অ্যাপ্লিকেশনের মধ্যে ডাটার অস্থায়ী স্টোরেজ হিসেবে কাজ করে এবং Action, JSP, এবং Interceptors এর মধ্যে ডাটা শেয়ার করার জন্য ব্যবহৃত হয়। সহজভাবে বলতে গেলে, Value Stack হল এক ধরনের Contextual Data Holder যা অ্যাপ্লিকেশন চলাকালীন সময়ে ব্যবহৃত ডাটাগুলিকে ধারণ করে।
Struts 2 অ্যাপ্লিকেশনে Value Stack ব্যবহারের মাধ্যমে আপনি ডাটা যেমন Action class, JSP page, এবং Interceptors এর মধ্যে শেয়ার করতে পারেন, যা MVC আর্কিটেকচারের অংশ হিসেবে একসাথে কাজ করে।
Value Stack এর মূল কাজ
- Model Data Store: Value Stack মূলত মডেল ডাটা ধারণ করে, যা ইউজারের রিকোয়েস্ট অনুযায়ী Action class থেকে JSP page-এ পাস করা হয়।
- Temporary Data Store: এটি অ্যাকশন ক্লাসের মধ্যে থাকা ডাটা এবং ইউজারের রিকোয়েস্টের ভিত্তিতে তৈরি হওয়া ডাটাকে সংরক্ষণ করে রাখে। এরপর সেই ডাটা টেমপোরারি ভ্যালু হিসেবে ব্যবহার হয়।
- Data Sharing between Action and View: Value Stack Action ক্লাস থেকে ডাটা JSP পেজে প্রেরণ করে, যার মাধ্যমে ডাটা ভিউ-তে ডিসপ্লে করা হয়।
Value Stack এর কার্যপ্রণালী
১. Action Class এবং Value Stack
Action ক্লাসের মধ্যে থাকা ডাটাকে Value Stack এর মধ্যে রাখা হয়। যখন রিকোয়েস্ট প্রোসেসিং সম্পন্ন হয়, Action class থেকে ডাটা Value Stack এর মধ্যে রাখা হয় এবং JSP page এ তা রেন্ডার করা হয়।
২. Value Stack থেকে ডাটা অ্যাক্সেস
Struts 2 এর OGNL (Object-Graph Navigation Language) ব্যবহার করে Value Stack থেকে ডাটা অ্যাক্সেস করা হয়। OGNL হল একটি এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Struts 2-এর মধ্যে ডাটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
৩. JSP-এ Value Stack থেকে ডাটা অ্যাক্সেস করা
JSP পেজে Value Stack থেকে ডাটা অ্যাক্সেস করতে Struts 2 এর ট্যাগ লাইব্রেরি ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি <s:property> ট্যাগ ব্যবহার করে Value Stack থেকে প্রপার্টি ডিসপ্লে করতে পারেন।
Value Stack এর উদাহরণ
ধরা যাক, আপনার একটি অ্যাকশন ক্লাস রয়েছে যার মধ্যে ব্যবহারকারীর নাম রয়েছে এবং আপনি সেই নামকে JSP পেজে দেখাতে চান।
১. Action Class তৈরি করা
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
// Set name in the value stack
name = "John Doe";
return SUCCESS;
}
}
এখানে name ভ্যারিয়েবল Value Stack এ রাখা হবে এবং JSP পেজে তা ব্যবহার করা হবে।
২. Struts 2 Configuration (struts.xml)
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.example.HelloAction" method="execute">
<result>/WEB-INF/content/hello.jsp</result>
</action>
</package>
</struts>
৩. JSP পেজ তৈরি করা
<!-- hello.jsp -->
<html>
<body>
<h2>Hello, <s:property value="name" /></h2>
</body>
</html>
এখানে, <s:property value="name"/> ট্যাগ ব্যবহার করে Value Stack থেকে name ভ্যারিয়েবলটির মান JSP পেজে প্রদর্শন করা হয়েছে।
Value Stack এর মধ্যে থাকা অবজেক্ট
Struts 2-এর Value Stack সাধারণত বিভিন্ন ধরণের অবজেক্ট ধারণ করতে পারে:
- Action class properties: অ্যাকশন ক্লাসের প্রপার্টিগুলি।
- OGNL Expressions: OGNL এক্সপ্রেশন থেকে প্রাপ্ত ডাটা।
- Parameters: রিকোয়েস্ট প্যারামিটারগুলিও Value Stack এর মধ্যে থাকতে পারে।
- Application Context Objects: ইন্টারসেপ্টর এবং অন্যান্য কম্পোনেন্টের মাধ্যমে অ্যাপ্লিকেশন কনটেক্সটের অবজেক্ট।
Value Stack এবং OGNL
OGNL (Object-Graph Navigation Language) হল একটি এক্সপ্রেশন ল্যাঙ্গুয়েজ যা Struts 2-এর Value Stack থেকে ডাটা এক্সেস করার জন্য ব্যবহৃত হয়। OGNL এর মাধ্যমে আপনি Value Stack এর মধ্যে থাকা অবজেক্টগুলির মানকে অ্যাক্সেস করতে পারেন।
উদাহরণ: OGNL Expressions ব্যবহার
<s:property value="user.name" />
এখানে user.name OGNL এক্সপ্রেশন ব্যবহার করা হয়েছে, যেখানে user Value Stack এ থাকা অবজেক্ট এবং name তার প্রপার্টি।
Value Stack এর গুরুত্বপূর্ণ বৈশিষ্ট্য
- Dynamic Data Access: OGNL ব্যবহার করে Value Stack থেকে ডাটা সহজে অ্যাক্সেস করা যায়।
- Data Shifting: Value Stack ব্যবহারকারী অ্যাকশন ক্লাস এবং JSP পেজের মধ্যে ডাটা শিফট করতে সাহায্য করে।
- Automatic Population: যখন ActionForm বা Action ক্লাসের প্যারামিটারগুলো JSP পেজে পাওয়ার জন্য অ্যাক্সেস করা হয়, তখন Value Stack স্বয়ংক্রিয়ভাবে তা পরিচালনা করে।
- Data Types Flexibility: Value Stack ডাটা টাইপের জন্য কোন সিমিততা রাখে না এবং বিভিন্ন ডাটা টাইপের জন্য কাজ করতে সক্ষম।
Value Stack এবং Interceptors
Interceptors Struts 2-এ একটি শক্তিশালী কনসেপ্ট, যা রিকোয়েস্ট এবং রেসপন্স প্রোসেসিংয়ের মধ্যে কাজ করে। Interceptors-এ Value Stack থেকে ডাটা শেয়ার এবং ম্যানিপুলেট করা সম্ভব। উদাহরণস্বরূপ, validation বা session checking ইন্টারসেপ্টরগুলোর মধ্যে আপনি Value Stack এর অবজেক্ট ব্যবহার করতে পারেন।
সারাংশ
- Value Stack Struts 2 এর একটি গুরুত্বপূর্ণ কনসেপ্ট যা Action ক্লাস থেকে JSP পেজে ডাটা শেয়ার করার জন্য ব্যবহৃত হয়।
- OGNL ব্যবহার করে আপনি Value Stack থেকে ডাটা এক্সেস এবং ম্যানিপুলেশন করতে পারেন।
- Value Stack অ্যাপ্লিকেশনের মধ্যে ডাটা ট্রান্সফার এবং শেয়ার করার প্রক্রিয়াকে সহজ করে দেয়।
- Value Stack এবং Interceptors এর মাধ্যমে অ্যাকশনের মধ্যে ডাটা শেয়ার করা এবং বিভিন্ন লজিক প্রয়োগ করা সম্ভব।
Value Stack Struts 2-এ Model-View-Controller (MVC) আর্কিটেকচারের মধ্যে ডাটা শেয়ারিং এবং প্রোসেসিংয়ের জন্য একটি শক্তিশালী ও নমনীয় পদ্ধতি।
Read more