Struts 2 একটি Model-View-Controller (MVC) ভিত্তিক ফ্রেমওয়ার্ক, যা action-based architecture ব্যবহার করে। এতে Action Interface এবং ActionSupport ক্লাস দুটি গুরুত্বপূর্ণ ভূমিকা পালন করে। Struts 2-এ Action ক্লাসের মাধ্যমে ইউজারের ইনপুট গ্রহণ করা হয় এবং সেই ইনপুট অনুযায়ী প্রক্রিয়া সম্পাদন করা হয়। Action ক্লাস এবং ActionSupport ক্লাসের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে এবং এগুলির যথাযথ ব্যবহারে Struts 2 অ্যাপ্লিকেশনকে আরও কার্যকরী এবং রক্ষণাবেক্ষণযোগ্য করা যায়।
Action Interface
Action Interface হল Struts 2-এ একটি প্রাথমিক ইন্টারফেস যা Action ক্লাসের মধ্যে business logic বা কার্যপ্রণালী সংজ্ঞায়িত করতে ব্যবহৃত হয়। Action ইন্টারফেসে একটি execute() মেথড থাকে, যেটি Action ক্লাসের মধ্যে টার্গেট মেথড হিসেবে কাজ করে।
Action Interface এর বৈশিষ্ট্য:
- execute() মেথড:
- Action ইন্টারফেসের মধ্যে
execute()মেথডটি একটি স্ট্যান্ডার্ড মেথড, যা এক্সিকিউট হওয়ার পর একটি স্ট্রিং রিটার্ন করে। এই রিটার্ন করা স্ট্রিংটি success বা error হতে পারে, যা নির্ধারণ করে কোন রেসাল্ট (উদাহরণস্বরূপ, JSP পৃষ্ঠা) দেখানো হবে।
- Action ইন্টারফেসের মধ্যে
- স্টেটিক নয়:
- execute() মেথডটি স্টেটিক নয়, তাই এটি একটি অবজেক্ট মেথড হিসেবে কাজ করে এবং action class এর ইনস্ট্যান্স তৈরি করার পরেই এটি কল করা হয়।
- Action এর ফলাফল:
- যদি
execute()মেথডটি "success" রিটার্ন করে, তবে সেটি সাফল্য রেসাল্ট হিসাবে গ্রহণ করা হয় এবং অ্যাপ্লিকেশন টার্গেট ভিউ (যেমন একটি JSP পৃষ্ঠা) দেখায়।
- যদি
উদাহরণ: Action Interface ব্যবহার
import com.opensymphony.xwork2.Action;
public class HelloWorldAction implements Action {
private String message;
@Override
public String execute() {
message = "Hello, Struts 2!";
return SUCCESS; // SUCCESS রিটার্ন করলে "hello.jsp" দেখাবে
}
public String getMessage() {
return message;
}
}
struts.xml কনফিগারেশন:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="helloWorld" class="com.example.HelloWorldAction">
<result>/hello.jsp</result>
</action>
</package>
</struts>
এই উদাহরণে, HelloWorldAction ক্লাসটি Action ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং execute() মেথডে একটি সাফল্য রেসাল্ট রিটার্ন করছে।
ActionSupport ক্লাস
ActionSupport হল একটি কনভেনিয়েন্স ক্লাস যা Action ইন্টারফেসকে ইমপ্লিমেন্ট করে এবং এতে কিছু অতিরিক্ত সুবিধা রয়েছে, যেমন:
- Basic validation: Struts 2-এর validation ফিচার ব্যবহারের জন্য ActionSupport বেশ কার্যকরী।
- Internationalization (i18n): ActionSupport ক্লাসটি আন্তর্জাতিকীকরণ সমর্থন করে, যার মাধ্যমে বিভিন্ন ভাষায় বার্তা প্রদর্শন করা সম্ভব।
- Predefined result codes: ActionSupport এর মধ্যে কিছু স্ট্যান্ডার্ড রিটার্ন কোড থাকে (যেমন, SUCCESS, ERROR) যা আপনি Action ক্লাসে ব্যবহার করতে পারেন।
ActionSupport ব্যবহার করলে আপনাকে Action ইন্টারফেসের execute() মেথডের পরিবর্তে অন্য কোনো মেথড ব্যবহার করতে হয় না। আপনি সরাসরি SUCCESS বা ERROR কনস্ট্যান্ট ব্যবহার করে নির্দিষ্ট রেসাল্ট কন্ট্রোল করতে পারেন।
ActionSupport এর বৈশিষ্ট্য:
- Automatic Validation: ActionSupport-এ ফিল্ড ভ্যালিডেশন সহজে করা যায়।
- Localization: ActionSupport আন্তর্জাতিকীকরণ সমর্থন করে, যার মাধ্যমে একাধিক ভাষার ফিচার ব্যবহার করা যায়।
- Convenience Methods: বিভিন্ন প্রকার মেথড যেমন
addActionError(),addActionMessage()ইত্যাদি।
উদাহরণ: ActionSupport ব্যবহার
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String message;
@Override
public String execute() {
message = "Hello, Struts 2!";
return SUCCESS; // SUCCESS রিটার্ন করলে "hello.jsp" দেখাবে
}
public String getMessage() {
return message;
}
}
struts.xml কনফিগারেশন:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="helloWorld" class="com.example.HelloWorldAction">
<result>/hello.jsp</result>
</action>
</package>
</struts>
এই উদাহরণে, HelloWorldAction ক্লাসটি ActionSupport ক্লাসকে এক্সটেন্ড করে এবং execute() মেথডে একটি সাফল্য রেসাল্ট রিটার্ন করছে।
Action Interface এবং ActionSupport ক্লাসের মধ্যে পার্থক্য
| বৈশিষ্ট্য | Action Interface | ActionSupport |
|---|---|---|
| Inheritance | Directly implements Action interface. | Extends ActionSupport (which implements Action). |
| Convenience Methods | No predefined methods. | Has utility methods like addActionError(), addActionMessage(). |
| Validation | Manual validation required. | Automatic validation support. |
| Internationalization | Manual setup required. | Built-in support for internationalization. |
| Predefined Result Codes | No predefined result codes. | Provides SUCCESS, ERROR, LOGIN result codes. |
সারাংশ
Action Interface এবং ActionSupport হল Struts 2 এর দুটি গুরুত্বপূর্ণ কম্পোনেন্ট, যা অ্যাকশন প্রক্রিয়া পরিচালনা করে। Action Interface ব্যবহারের মাধ্যমে Action ক্লাসের কার্যক্রম বাস্তবায়ন করা হয়, তবে ActionSupport আরও সুবিধা প্রদান করে, যেমন স্বয়ংক্রিয় ভ্যালিডেশন, আন্তর্জাতিকীকরণ, এবং স্ট্যান্ডার্ড রিটার্ন কোড। সাধারণত, ActionSupport ক্লাস ব্যবহারের মাধ্যমে কোড লেখা সহজ এবং দ্রুত হয়। Action ইন্টারফেসটি আরও কাস্টম এবং নির্দিষ্ট অ্যাকশন লজিক প্রয়োগের জন্য ব্যবহৃত হয়।