Struts 2 ফ্রেমওয়ার্কে Plugins একটি গুরুত্বপূর্ণ ফিচার, যা আপনাকে বিভিন্ন অতিরিক্ত ফাংশনালিটি যোগ করতে সহায়ক। প্লাগইন ব্যবহার করে আপনি ফ্রেমওয়ার্কের কার্যকারিতা বাড়াতে পারেন যেমন validation, file upload, internationalization (i18n), AJAX ইত্যাদি। Struts 2 প্লাগইন ব্যবহারের মাধ্যমে আপনি আরও কাস্টমাইজড এবং শক্তিশালী অ্যাপ্লিকেশন তৈরি করতে পারেন।
এখানে Struts 2 Plugin এর কনফিগারেশন এবং ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হবে।
১. Struts 2 Plugin কী?
Plugins হল Struts 2 ফ্রেমওয়ার্কের অংশ যা আপনাকে নতুন ফিচার বা ফাংশনালিটি যোগ করতে সহায়তা করে। উদাহরণস্বরূপ, Struts 2 প্লাগইন ব্যবহার করে আপনি বিভিন্ন form validation, file upload, AJAX কাজগুলোকে আরো সহজ এবং দ্রুত করতে পারেন।
Struts 2 প্লাগইনগুলো সাধারণত JAR ফাইল হিসেবে আসে এবং আপনাকে আপনার অ্যাপ্লিকেশনে সেগুলিকে pom.xml বা lib ফোল্ডারে যোগ করতে হয়।
২. Struts 2 প্লাগইন কনফিগারেশন
Struts 2 প্লাগইন কনফিগার করতে সাধারণত দুটি কাজ করতে হয়:
- pom.xml ফাইলে প্রয়োজনীয় প্লাগইন ডিপেনডেন্সি যোগ করা।
- struts.xml ফাইলে প্লাগইনের কনফিগারেশন করা।
৩. Struts 2 Validator Plugin
Struts 2 Validator Plugin একটি প্লাগইন যা ফর্মের ইনপুট ভ্যালিডেশন পরিচালনা করতে সহায়ক। এটি JSP পৃষ্ঠাগুলিতে সহজে ইনপুট ভ্যালিডেশন করতে সাহায্য করে এবং অটোমেটিক্যালি ত্রুটি বার্তা দেখায়।
উদাহরণ: Struts 2 Validator Plugin কনফিগারেশন
- pom.xml ফাইলে Validator Plugin ডিপেনডেন্সি যুক্ত করা:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.5.22</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-validator-plugin</artifactId>
<version>2.5.22</version>
</dependency>
- struts.xml ফাইলে Validator প্লাগইন কনফিগার করা:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.example.LoginAction">
<result>/login.jsp</result>
</action>
</package>
</struts>
- validation.xml ফাইল তৈরি করে ইনপুট ভ্যালিডেশন যুক্ত করা:
<validators>
<field name="username">
<field-validator type="required">
<message>Username is required!</message>
</field-validator>
<field-validator type="stringlength">
<param name="min">5</param>
<param name="max">15</param>
<message>Username must be between 5 and 15 characters!</message>
</field-validator>
</field>
<field name="password">
<field-validator type="required">
<message>Password is required!</message>
</field-validator>
<field-validator type="stringlength">
<param name="min">8</param>
<message>Password must be at least 8 characters!</message>
</field-validator>
</field>
</validators>
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private String username;
private String password;
@Override
public String execute() {
return SUCCESS;
}
// Getters and Setters
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- JSP Page (login.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2>Login Form</h2>
<s:form action="login">
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:submit value="Login" />
</s:form>
<s:if test="hasActionErrors()">
<div style="color: red;">
<ul>
<s:actionerror />
</ul>
</div>
</s:if>
</body>
</html>
ব্যাখ্যা:
- validation.xml: ফর্ম ইনপুটের জন্য ভ্যালিডেশন রুলস সংজ্ঞায়িত করা হয়েছে। এখানে
usernameএবংpasswordফিল্ডের জন্য কিছু কাস্টম ভ্যালিডেশন রুলস দেওয়া হয়েছে। - struts.xml: প্লাগইন ব্যবহারের জন্য কনফিগার করা হয়েছে।
- LoginAction:
execute()মেথডের মাধ্যমে অ্যাকশন পরিচালিত হয়।
৪. File Upload Plugin
Struts 2-এ File Upload প্লাগইন ব্যবহৃত হয় ফাইল আপলোড করার জন্য। এটি ক্লায়েন্ট থেকে ফাইল গ্রহণ করে এবং সার্ভারে ফাইল সংরক্ষণ করতে সহায়তা করে।
উদাহরণ: Struts 2 File Upload Plugin কনফিগারেশন
- pom.xml ফাইলে File Upload Plugin ডিপেনডেন্সি যুক্ত করা:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-fileupload-plugin</artifactId>
<version>2.5.22</version>
</dependency>
- struts.xml কনফিগারেশন:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="uploadFile" class="com.example.FileUploadAction">
<result>/uploadSuccess.jsp</result>
</action>
</package>
</struts>
- FileUploadAction Class:
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
public class FileUploadAction extends ActionSupport {
private File upload; // This will hold the file
private String uploadContentType; // To hold file type
private String uploadFileName; // To hold file name
@Override
public String execute() {
// File upload logic here
return SUCCESS;
}
// Getters and Setters
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
}
- JSP Page for File Upload (upload.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2>File Upload</h2>
<s:form action="uploadFile" method="post" enctype="multipart/form-data">
<s:file name="upload" label="Upload File" />
<s:submit value="Upload" />
</s:form>
</body>
</html>
ব্যাখ্যা:
- struts.xml: ফাইল আপলোড করার জন্য একটি Action কনফিগার করা হয়েছে।
- FileUploadAction: এখানে ফাইল আপলোড করা হচ্ছে এবং সংশ্লিষ্ট ডেটা (ফাইলের নাম এবং কনটেন্ট টাইপ) গ্রহণ করা হচ্ছে।
- upload.jsp: ফাইল নির্বাচন এবং আপলোড করার জন্য ফর্ম তৈরি করা হয়েছে।
৫. Internationalization Plugin
Struts 2-এর Internationalization (i18n) প্লাগইন ব্যবহার করে আপনি বিভিন্ন ভাষায় আপনার অ্যাপ্লিকেশন কনফিগার করতে পারেন, যা অনেক ভাষার জন্য সমর্থন প্রদান করে।
উদাহরণ: Struts 2 Internationalization Plugin কনফিগারেশন
- struts.xml কনফিগারেশন:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.example.HelloAction">
<result>/hello.jsp</result>
</action>
</package>
</struts>
- Resource Bundles (messages.properties):
greeting=Hello, welcome to Struts 2!
- messages_fr.properties (French Translation):
greeting=Bonjour, bienvenue sur Struts 2!
- JSP Page (hello.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2><s:text name="greeting" /></h2>
</body>
</html>
ব্যাখ্যা:
- struts.xml: অ্যাকশন কনফিগার করা হয়েছে যা hello.jsp পৃষ্ঠায় রিডিরেক্ট করবে।
- Resource Bundles: বিভিন্ন ভাষার জন্য বার্তা ফাইল তৈরি করা হয়েছে (যেমন messages_fr.properties)। Struts 2 অ্যাপ্লিকেশনটি সিস্টেমের লোকাল ভাষা অনুযায়ী উপযুক্ত বার্তা দেখাবে।
সারাংশ
Struts 2 প্লাগইন ব্যবহারের মাধ্যমে আপনি অ্যাপ্লিকেশনে বিভিন্ন ফিচার সহজেই যোগ করতে পারেন। Validator Plugin, File Upload Plugin, এবং Internationalization Plugin এর মতো প্লাগইনগুলি Struts 2 অ্যাপ্লিকেশনের কার্যকারিতা ও কাস্টমাইজেশন বাড়াতে সাহায্য করে। প্রতিটি প্লাগইন ব্যবহারের জন্য আপনাকে সংশ্লিষ্ট ডিপেনডেন্সি যোগ করতে হবে এবং struts.xml বা validation.xml ফাইলের মাধ্যমে কনফিগার করতে হবে।