Struts 2 একটি শক্তিশালী ফ্রেমওয়ার্ক যা ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশনকে সহজ করে তোলে। ফর্ম হ্যান্ডলিংয়ের মাধ্যমে ইউজারের ইনপুট রিসিভ করা হয় এবং Struts 2 Validation এর মাধ্যমে ইনপুটের বৈধতা যাচাই করা হয়। Struts 2 অটোমেটিকালি ইনপুট ডেটা মডেল অবজেক্টে ম্যাপ করে এবং সেই ডেটার উপর বিভিন্ন ভ্যালিডেশন লজিক প্রয়োগ করা যায়।
এখানে আমরা Struts 2-এ Form Handling এবং Validation এর উদাহরণ দেখব।
1. Form Handling কী?
Form Handling এর মাধ্যমে ইউজারের ইনপুট (যেমন, নাম, ইমেইল, পাসওয়ার্ড) একটি ফর্ম থেকে নেওয়া হয় এবং সেই ডেটা প্রক্রিয়াজাত (process) করা হয়। Struts 2 এর ফর্ম হ্যান্ডলিং অত্যন্ত সহজ কারণ এটি ডেটা মডেল ক্লাসে মডেলিং করে, যা নিজে থেকেই getter এবং setter মেথড দিয়ে ইনপুট ডেটা প্রক্রিয়া করে।
2. Validation কী?
Validation হল ইনপুট ডেটার বৈধতা যাচাই করার প্রক্রিয়া। Struts 2 ফ্রেমওয়ার্কে Annotations এবং XML কনফিগারেশন দুটো মাধ্যমেই ভ্যালিডেশন করা যায়। এখানে আমরা Annotations-based Validation এবং XML-based Validation দুইটির উদাহরণ দেখব।
Form Handling এবং Validation এর উদাহরণ
Step 1: Action Class (Form Handling)
প্রথমে একটি Action Class তৈরি করি যা ফর্ম ডেটা গ্রহণ করবে এবং সেই ডেটার উপর ভ্যালিডেশন প্রক্রিয়া প্রয়োগ করবে।
UserAction.java (Action Class)
package com.example.action;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.validation.SkipValidation;
public class UserAction extends ActionSupport {
private String username;
private String email;
private String password;
// Getter and Setter methods
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// Execute method (for form handling)
@Override
public String execute() {
if ("admin".equals(username) && "password123".equals(password)) {
return SUCCESS;
} else {
return ERROR;
}
}
// Validate method (for validation)
@Override
public void validate() {
if (username == null || username.trim().isEmpty()) {
addFieldError("username", "Username is required.");
}
if (email == null || email.trim().isEmpty()) {
addFieldError("email", "Email is required.");
} else if (!email.matches("^[A-Za-z0-9+_.-]+@(.+)$")) {
addFieldError("email", "Invalid email format.");
}
if (password == null || password.trim().isEmpty()) {
addFieldError("password", "Password is required.");
}
}
}
এখানে:
- username, email, এবং password ফিল্ড ডেটা ফর্ম থেকে গ্রহণ করা হবে।
- validate() মেথডে ভ্যালিডেশন করা হয়েছে, যেখানে যদি কোনো ফিল্ড খালি থাকে বা ইমেইল ফরম্যাট সঠিক না হয়, তাহলে addFieldError() ব্যবহার করে ত্রুটি বার্তা যুক্ত করা হবে।
- execute() মেথডে লগইন প্রক্রিয়া প্রক্রিয়া করা হয়েছে। যদি ইউজারনেম এবং পাসওয়ার্ড সঠিক হয় তবে SUCCESS রিটার্ন করবে, অন্যথায় ERROR রিটার্ন করবে।
Step 2: Validation Annotations (Optional)
Struts 2 annotations ব্যবহার করে আরও সুবিধাজনকভাবে ভ্যালিডেশন করা যায়। Validation annotations দিয়ে ফিল্ডের ওপর ভ্যালিডেশন চেক করা যায়।
import com.opensymphony.xwork2.validator.annotations.EmailValidator;
import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;
public class UserAction extends ActionSupport {
@RequiredStringValidator(message = "Username is required")
private String username;
@EmailValidator(message = "Please enter a valid email address")
private String email;
@RequiredStringValidator(message = "Password is required")
private String password;
// Getter and Setter methods for username, email, and password...
@Override
public String execute() {
return SUCCESS;
}
}
এখানে:
- @RequiredStringValidator: ফিল্ডটি খালি না থাকার জন্য ভ্যালিডেশন।
- @EmailValidator: ইমেইল ফিল্ডে সঠিক ইমেইল ফরম্যাটের জন্য ভ্যালিডেশন।
- @RegexFieldValidator: কাস্টম রেগুলার এক্সপ্রেশন দিয়ে ভ্যালিডেশন।
Step 3: Struts 2 Configuration (struts.xml)
struts.xml ফাইলে Action Class কনফিগার করতে হবে এবং ভ্যালিডেশন মেথডের ফলাফল কনফিগার করতে হবে।
struts.xml কনফিগারেশন:
<struts>
<package name="default" extends="struts-default">
<action name="user" class="com.example.action.UserAction">
<result name="success">/welcome.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
</struts>
এখানে:
- action name="user": এটি UserAction ক্লাসের user অ্যাকশন মেপিং করবে।
- result: SUCCESS হলে welcome.jsp এবং ERROR হলে login.jsp পৃষ্ঠায় রিডাইরেক্ট করা হবে।
Step 4: JSP Form for Input
এখন একটি JSP ফাইল তৈরি করি যেখানে ফর্ম ইনপুট নেওয়া হবে এবং Struts 2 ট্যাগ লাইব্রেরি ব্যবহার করে ফর্ম তৈরি হবে।
userForm.jsp
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head><title>User Form</title></head>
<body>
<h2>User Login</h2>
<s:form action="user" method="post">
<s:textfield name="username" label="Username"/>
<s:textfield name="email" label="Email"/>
<s:password name="password" label="Password"/>
<s:submit value="Login"/>
</s:form>
<s:fielderror fieldName="username"/>
<s:fielderror fieldName="email"/>
<s:fielderror fieldName="password"/>
</body>
</html>
এখানে:
- s:form: ফর্মের জন্য Struts 2 এর ট্যাগ ব্যবহার করা হয়েছে। অ্যাকশন নাম user দেওয়া হয়েছে।
- s:textfield, s:password: ইউজারনেম, ইমেইল এবং পাসওয়ার্ড ইনপুট ফিল্ড তৈরি করা হয়েছে।
- s:fielderror: যদি কোনো ফিল্ডে ত্রুটি থাকে, তবে তা দেখানো হবে।
5. Validation Handling (Error Handling)
যদি ব্যবহারকারী ভুল ইনপুট প্রদান করে, তেমন ক্ষেত্রে Validation এর ত্রুটি বার্তা দেখানো হবে। এখানে s:fielderror ট্যাগটি ত্রুটির বার্তা দেখানোর জন্য ব্যবহৃত হয়েছে।
সারাংশ
Struts 2-এ ফর্ম হ্যান্ডলিং এবং ভ্যালিডেশন অত্যন্ত শক্তিশালী এবং সহজ। আপনি Action Class-এ ইনপুট ডেটা গ্রহণ এবং validate() মেথডের মাধ্যমে ফর্ম ডেটার ভ্যালিডেশন করতে পারেন। এছাড়া, Annotations ব্যবহার করে ফিল্ড লেভেলে ভ্যালিডেশন করা যায়। Struts 2 ট্যাগ লাইব্রেরি (যেমন s:textfield, s:password, s:fielderror) দিয়ে ফর্ম ইনপুট এবং ত্রুটি হ্যান্ডলিং অত্যন্ত সহজ হয়।
Read more