truts 2 এর Validation Framework

স্ট্রাটস (Struts 2) - Java Technologies

420

Struts 2 এর Validation Framework একটি শক্তিশালী এবং নমনীয় ব্যবস্থা যা ইনপুট ডেটা ভ্যালিডেশন কার্যকরীভাবে পরিচালনা করে। এটি ব্যবহারকারীর ইনপুট যাচাই করার জন্য XML এবং annotations এর মাধ্যমে কাস্টম ভ্যালিডেশন রুলস তৈরি করতে সক্ষম। Struts 2 এর Validation Framework ডেভেলপারদের form-based validation এবং action-based validation সুবিধা প্রদান করে।

Struts 2 এর Validation Framework এর বৈশিষ্ট্য


১. Action Class Validation

Struts 2 তে Action Class Validation ব্যবহৃত হয় যেখানে Action ক্লাসের মধ্যে ইনপুট যাচাই করা হয়। এই যাচাই প্রক্রিয়া ValidationInterceptor দ্বারা পরিচালিত হয়, যা ইনপুট ভ্যালিডেশন সম্পন্ন করে এবং ত্রুটি হলে সেই ত্রুটির বার্তা উপস্থাপন করে।

২. XML ভিত্তিক Validation

Struts 2 ভ্যালিডেশন কনফিগারেশন সাধারণত validation.xml ফাইলে থাকে। আপনি এই ফাইলে ইনপুটের জন্য কাস্টম ভ্যালিডেশন রুলস ডিফাইন করতে পারেন, যেমন required, minLength, maxLength, regex, ইত্যাদি।

৩. Annotation ভিত্তিক Validation

Struts 2 Annotations এর মাধ্যমে সরাসরি Action Class এর মধ্যে ভ্যালিডেশন রুলস সেট করা যায়, যা কনফিগারেশনকে আরও সহজ এবং সোজা করে।


Validation Framework কনফিগারেশন

Struts 2 এর Validation Framework দুইটি প্রধান কনফিগারেশন পদ্ধতি প্রদান করে:

  1. XML-based configuration (validation.xml)
  2. Annotation-based configuration (ডিরেক্টলি Action class এ)

১. XML-based Validation

Struts 2 তে validation.xml ফাইলের মাধ্যমে ভ্যালিডেশন কনফিগার করা হয়। এখানে, আপনি ইনপুট ফিল্ডগুলোর জন্য বিভিন্ন ভ্যালিডেশন রুলস যেমন required, minLength, maxLength, email, regex ইত্যাদি ডিফাইন করতে পারেন।

validation.xml উদাহরণ

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="register" class="com.example.RegisterAction">
            <result name="input">/register.jsp</result>
            <result name="success">/welcome.jsp</result>

            <!-- Validation Rules -->
            <interceptor-ref name="validationWorkflowStack"/>
        </action>
    </package>

    <!-- validation.xml -->
    <validator>
        <field name="username">
            <field-validator type="required"/>
            <field-validator type="stringlength">
                <param name="min">5</param>
                <param name="max">15</param>
            </field-validator>
        </field>
        <field name="email">
            <field-validator type="email"/>
        </field>
    </validator>
</struts>

এখানে, username এর জন্য required এবং stringlength ভ্যালিডেশন রুলস ডিফাইন করা হয়েছে, এবং email ফিল্ডের জন্য email ভ্যালিডেশন রুল ব্যবহার করা হয়েছে।

RegisterAction.java উদাহরণ:

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.validation.annotations.Validations;
import org.apache.struts2.validation.annotations.Validation;
import org.apache.struts2.validation.annotations.Required;
import org.apache.struts2.validation.annotations.Email;

public class RegisterAction extends ActionSupport {

    private String username;
    private String email;

    @Required
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Email
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String execute() {
        return SUCCESS;
    }
}

এখানে @Required এবং @Email এনোটেশন ব্যবহার করে username এবং email ফিল্ডের জন্য ভ্যালিডেশন অ্যাপ্লাই করা হয়েছে।


২. Annotation-based Validation

Struts 2 এর মধ্যে Annotations ব্যবহার করে সরাসরি Action class এর মধ্যে ইনপুট ভ্যালিডেশন করা যায়, যা খুবই সহজ এবং কার্যকরী। এতে কোনো আলাদা validation.xml ফাইল তৈরি করার প্রয়োজন পড়ে না। আপনি @Validations, @FieldValidator ইত্যাদি অ্যাট্রিবিউট ব্যবহার করতে পারেন।

উদাহরণ: Annotation-based Validation

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.validation.annotations.Validations;
import org.apache.struts2.validation.annotations.Required;
import org.apache.struts2.validation.annotations.StringLengthFieldValidator;

public class RegisterAction extends ActionSupport {

    private String username;
    private String email;

    @Required(fieldName="username", message="Username is required")
    @StringLengthFieldValidator(fieldName="username", minLength="5", maxLength="15", message="Username must be between 5 to 15 characters")
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Required(fieldName="email", message="Email is required")
    @EmailFieldValidator(fieldName="email", message="Invalid email address")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String execute() {
        return SUCCESS;
    }
}

এখানে ব্যবহার করা ভ্যালিডেশন:

  • @Required: ইনপুট ফিল্ডটি খালি রাখা যাবে না।
  • @StringLengthFieldValidator: ফিল্ডের লম্বা নির্ধারণ করা।
  • @EmailFieldValidator: ইমেইল ফিল্ডের জন্য সঠিক ইমেইল যাচাই।

Validation Result Handling

Struts 2 এর Validation Framework ব্যবহার করে যখন ইনপুট ভ্যালিডেশন ব্যর্থ হয়, তখন Action ক্লাসের ফলাফল input নামক রিটার্ন ভ্যালু নিয়ে struts.xml কনফিগারেশনের মাধ্যমে ব্যবহারকারীকে ফিরে যায়। সাধারণত, ব্যবহারকারীকে একটি ফর্ম প্রদর্শিত হয় যেখানে তারা ইনপুট সংশোধন করতে পারে।

উদাহরণ:

<action name="register" class="com.example.RegisterAction">
    <result name="input">/register.jsp</result>
</action>

যখন validation ব্যর্থ হয়, তখন অ্যাকশনটি input রিটার্ন করে এবং ব্যবহৃত JSP পৃষ্ঠায় ত্রুটির বার্তা দেখানো হয়।


Error Messages Display in JSP

আপনি JSP পৃষ্ঠায় ত্রুটির বার্তা প্রদর্শন করতে পারেন Struts 2 এর <s:fielderror> ট্যাগ ব্যবহার করে। এটি ভ্যালিডেশন এরর বার্তা প্রদর্শন করতে সাহায্য করে।

<s:form action="register">
    <s:textfield name="username" label="Username"/>
    <s:fielderror fieldName="username"/>
    
    <s:textfield name="email" label="Email"/>
    <s:fielderror fieldName="email"/>

    <s:submit value="Submit"/>
</s:form>

এখানে <s:fielderror> ট্যাগটি ইনপুট ফিল্ডের জন্য ত্রুটি বার্তা দেখাবে, যদি সেই ফিল্ডে কোনো ভ্যালিডেশন ত্রুটি থাকে।


সারাংশ

Struts 2 এর Validation Framework একটি শক্তিশালী এবং নমনীয় উপায় যা ব্যবহারকারীর ইনপুট যাচাই করতে সাহায্য করে। এটি XML-based এবং Annotation-based কনফিগারেশন সমর্থন করে, যা ডেভেলপারদের ইনপুট ভ্যালিডেশন কাস্টমাইজ করতে সুযোগ দেয়। validation.xml অথবা Annotations ব্যবহার করে আপনি required, stringLength, email, regex ইত্যাদি ভ্যালিডেশন রুলস প্রয়োগ করতে পারেন। Struts 2 এর এই Validation Framework আপনাকে সিস্টেমের সঠিকতা নিশ্চিত করতে এবং ব্যবহারকারীদের সঠিক ইনপুট সংগ্রহ করতে সহায়তা করে।

Content added By

Struts 2 Validation Framework একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা Struts 2 অ্যাপ্লিকেশনগুলিতে ব্যবহারকারীর ইনপুটের বৈধতা পরীক্ষা (validation) করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীর ইনপুট যাচাই করে এবং যদি কোনো ভুল বা অবৈধ তথ্য পাওয়া যায়, তবে তা প্রদর্শন করার ব্যবস্থা করে। Validation ফ্রেমওয়ার্ক ব্যবহার করে আপনি আপনার ফর্মের ডেটার সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে পারেন।

Struts 2 Validation Framework অনেক ধরণের ভ্যালিডেশন পদ্ধতি সাপোর্ট করে যেমন:

  • শুধু প্রয়োজনীয় ক্ষেত্রগুলি পূর্ণ করা (Required fields)
  • ইমেইল ঠিকানা ফরম্যাট (Email format)
  • সংখ্যার পরিসীমা পরীক্ষা (Range checking)
  • পারমিটেড মান যাচাই (Allowed values)
  • কাস্টম ভ্যালিডেশন (Custom validation)

এটি XML-based configuration এবং annotation-based validation এর মাধ্যমে কার্যকরী হতে পারে।


Struts 2 Validation Framework এর বৈশিষ্ট্য

  1. Declarative Validation: Struts 2-এ আপনি Validation কনফিগারেশনটি struts.xml বা Annotation ব্যবহার করে declaratively বা ডিক্লেয়ারেটিভভাবে করতে পারেন।
  2. Custom Validation: আপনি আপনার নিজস্ব কাস্টম ভ্যালিডেশন কন্ডিশন তৈরি করতে পারেন যা আপনার নির্দিষ্ট প্রয়োজনের ভিত্তিতে কাজ করবে।
  3. Built-in Validators: Struts 2 বিভিন্ন built-in ভ্যালিডেটর প্রদান করে যেমন required, email, regex, range, integer, ইত্যাদি।
  4. Action Support: Validation Framework অ্যাকশন ক্লাসের সাথে ইন্টিগ্রেটেডভাবে কাজ করে, যেখানে আপনি ইনপুটের মান যাচাই করে ফলাফল অনুযায়ী ইউজারকে রেসপন্স পাঠাতে পারবেন।
  5. Error Message Management: যদি কোনো ভ্যালিডেশন ফেইল হয়, তবে সংশ্লিষ্ট ত্রুটি বার্তা প্রদর্শিত হয়, এবং সেই বার্তাগুলি বিভিন্ন ভাষায় লোকালাইজ করা সম্ভব।

Struts 2 Validation Framework এর প্রয়োগ

Struts 2 Validation Framework ব্যবহার করার জন্য মূলত দুইটি পদ্ধতি রয়েছে:

  1. XML-based Validation Configuration
  2. Annotation-based Validation

এখন আমরা দুটি পদ্ধতির উদাহরণ সহ Validation Framework কিভাবে ব্যবহার করা হয় তা দেখবো।


১. XML-based Validation Configuration

Struts 2-এ XML-based validation কনফিগারেশন ব্যবহার করে আপনি ফর্মের বিভিন্ন ফিল্ডের জন্য ভ্যালিডেশন রুলস (validation rules) নির্ধারণ করতে পারেন।

উদাহরণ:

Action Class (GreetingAction.java)

import com.opensymphony.xwork2.ActionSupport;

public class GreetingAction extends ActionSupport {
    private String name;
    private int age;

    public String execute() {
        return SUCCESS;
    }

    // Getter and Setter Methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Validation Configuration (struts.xml)

<struts>
    <package name="default" extends="struts-default">
        <action name="greetUser" class="com.example.GreetingAction" method="execute">
            <result>/greeting.jsp</result>

            <!-- Validation rules -->
            <validation>
                <field name="name">
                    <field-validator type="required">
                        <message>Name is required.</message>
                    </field-validator>
                    <field-validator type="string">
                        <message>Name must be a valid string.</message>
                    </field-validator>
                </field>

                <field name="age">
                    <field-validator type="required">
                        <message>Age is required.</message>
                    </field-validator>
                    <field-validator type="integer">
                        <message>Age must be a valid integer.</message>
                    </field-validator>
                </field>
            </validation>
        </action>
    </package>
</struts>

ব্যাখ্যা:

  • Validation Block: struts.xml ফাইলে validation ব্লক ব্যবহার করে name এবং age ফিল্ডের জন্য ভ্যালিডেশন রুলস নির্ধারণ করা হয়েছে।
  • Field Validators: এখানে required এবং string, integer টাইপের ভ্যালিডেটর ব্যবহার করা হয়েছে।
  • Error Messages: যদি ভ্যালিডেশন ফেইল করে, তাহলে ট্যাগের মাধ্যমে সংশ্লিষ্ট ত্রুটি বার্তা প্রদর্শিত হবে।

JSP File (greeting.jsp)

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
    <h2>Welcome, <s:property value="name"/>!</h2>
    <p>Age: <s:property value="age"/> years</p>

    <!-- Error messages -->
    <s:fielderror fieldName="name"/>
    <s:fielderror fieldName="age"/>
</body>
</html>

এখানে s:fielderror ট্যাগ ব্যবহার করে আমরা name এবং age ফিল্ডের জন্য ত্রুটি বার্তা প্রদর্শন করেছি।


২. Annotation-based Validation

Struts 2-এ Annotation-based validation ব্যবহার করে আপনি কম কোডে ভ্যালিডেশন কনফিগার করতে পারেন। এখানে @Validations এবং @FieldValidation অ্যনোটেশন ব্যবহার করা হয়।

উদাহরণ:

Action Class with Validation Annotations

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.*;

@Validation
public class GreetingAction extends ActionSupport {
    private String name;
    private int age;

    public String execute() {
        return SUCCESS;
    }

    // Getter and Setter Methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // Validation Annotations
    @FieldValidator(type = "required", message = "Name is required.")
    public String getName() {
        return name;
    }

    @FieldValidator(type = "integer", message = "Age must be an integer.")
    @FieldValidator(type = "required", message = "Age is required.")
    public int getAge() {
        return age;
    }
}

এখানে, @FieldValidator অ্যনোটেশন ব্যবহার করে আপনি name এবং age ফিল্ডের জন্য ভ্যালিডেশন রুলস নির্ধারণ করতে পারেন।


সারাংশ

Struts 2 Validation Framework একটি শক্তিশালী এবং নমনীয় সিস্টেম যা ইনপুট ভ্যালিডেশন পরিচালনা করতে সহায়ক। এটি XML কনফিগারেশন এবং অ্যনোটেশন ব্যবহারের মাধ্যমে কাজ করে এবং ফর্ম ডেটা যাচাই করার জন্য অনেক ধরনের বিল্ট-ইন ভ্যালিডেটর প্রদান করে। Declarative Validation এবং Custom Validation এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের ডেটার সঠিকতা নিশ্চিত করতে পারেন এবং ইনপুট ফর্মগুলিতে ভুল ডেটা এন্ট্রি থেকে রক্ষা পেতে পারেন।

Content added By

Struts 2 একটি শক্তিশালী ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। Validation বা যাচাই ফিচারটি Struts 2-এ খুবই গুরুত্বপূর্ণ, কারণ এটি ব্যবহারকারীর ইনপুট যাচাই করতে সাহায্য করে, যাতে অপ্রত্যাশিত বা ভুল ডাটা অ্যাপ্লিকেশনে প্রবাহিত না হয়। Struts 2-এ XML ভিত্তিক Validation কনফিগারেশন ব্যবহৃত হয়, যার মাধ্যমে আপনি ইনপুট যাচাই নিয়ম নির্ধারণ করতে পারেন এবং সেই অনুযায়ী অ্যাকশন ক্লাসে প্রয়োজনীয় লজিক প্রয়োগ করতে পারেন।

XML ভিত্তিক Validation কনফিগারেশন

Struts 2-এ validation কনফিগারেশন দুটি স্তরে করা যায়:

  1. Struts Validation (XML-based validation): এই কনফিগারেশনটি struts.xml এবং validation.xml ফাইলে করা হয়, যা Action Class বা Form Bean এর ডাটা যাচাই করতে ব্যবহৃত হয়।
  2. Annotation-based Validation: এটি একটি আধুনিক পদ্ধতি যেখানে Java এন্টিটি বা ক্লাসের প্রপার্টিতে annotations ব্যবহার করা হয়।

এখানে আমরা XML ভিত্তিক Validation কনফিগারেশনের মাধ্যমে Struts 2 Validation ব্যবহারের একটি সম্পূর্ণ উদাহরণ দেখব।


১. Struts 2 Validation XML কনফিগারেশন

১.১. validation.xml ফাইল

validation.xml ফাইলে আপনার অ্যাপ্লিকেশনটির বিভিন্ন ইনপুট ফিল্ডের জন্য যাচাই নিয়ম (validation rules) কনফিগার করা হয়।

এটি সাধারনত src/main/resources ডিরেক্টরিতে থাকে এবং এতে action ক্লাসের form-bean বা action class এর ভ্যালিডেশন নিয়মগুলি উল্লেখ করা হয়।

উদাহরণ: validation.xml কনফিগারেশন

<!DOCTYPE validators PUBLIC "-//Apache Struts//DTD Validator 1.0//EN" "http://struts.apache.org/dtds/struts-validator-1.0.dtd">
<validators>
    <!-- Validation for HelloAction -->
    <field name="name">
        <field-validator type="required">
            <message>Name is required!</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="min">3</param>
            <param name="max">30</param>
            <message>Name must be between 3 and 30 characters!</message>
        </field-validator>
    </field>

    <field name="email">
        <field-validator type="required">
            <message>Email is required!</message>
        </field-validator>
        <field-validator type="email">
            <message>Please enter a valid email address!</message>
        </field-validator>
    </field>
</validators>

ব্যাখ্যা:

  • name এবং email ফিল্ডের জন্য ভ্যালিডেশন কনফিগার করা হয়েছে।
  • required: এই ফিল্ডটি ফাঁকা থাকতে পারবে না।
  • stringlength: নামের দৈর্ঘ্য ৩ থেকে ৩০ ক্যারেক্টারের মধ্যে হতে হবে।
  • email: এটি একটি বৈধ ইমেইল ফরম্যাট হতে হবে।

১.২. struts.xml কনফিগারেশন

struts.xml ফাইলটি Struts 2-এর মূল কনফিগারেশন ফাইল, যেখানে অ্যাকশন, রেসাল্ট এবং অন্যান্য কনফিগারেশন সংজ্ঞায়িত হয়। এখানে validation ফাইলটি রেফারেন্স করা হয়।

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <!-- HelloAction class definition -->
        <action name="hello" class="com.example.HelloAction" method="execute">
            <result>/WEB-INF/content/hello.jsp</result>
            <!-- Validation configuration -->
            <interceptor-ref name="defaultStack">
                <param name="validation.enabled">true</param>
            </interceptor-ref>
        </action>
    </package>
</struts>

ব্যাখ্যা:

  • interceptor-ref: এখানে defaultStack ইন্টারসেপ্টরের মাধ্যমে validation.enabled প্যারামিটারটি true করা হয়েছে, যা অ্যাকশন ক্লাসে validation.xml ফাইলের কনফিগারেশন অ্যাক্টিভেট করবে।

২. Action Class কনফিগারেশন

Action class-এ ValidationAware ইন্টারফেস ইমপ্লিমেন্ট করলে, আপনি addFieldError(), addActionError() ইত্যাদি মেথড ব্যবহার করে কাস্টম এরর মেসেজ প্রদান করতে পারবেন।

উদাহরণ: Action Class

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {

    private String name;
    private String email;

    // Getters and setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String execute() {
        // Business logic here
        return SUCCESS;
    }

    // Custom validation method
    @Override
    public void validate() {
        if (name == null || name.trim().isEmpty()) {
            addFieldError("name", "Name cannot be empty.");
        }
        if (email == null || email.trim().isEmpty()) {
            addFieldError("email", "Email cannot be empty.");
        }
    }
}

ব্যাখ্যা:

  • validate(): এই মেথডে আপনি কাস্টম ভ্যালিডেশন যুক্ত করতে পারেন। উদাহরণস্বরূপ, যদি নাম বা ইমেইল ফাঁকা থাকে, তবে addFieldError() মেথড ব্যবহার করে একটি ত্রুটি বার্তা যোগ করা হবে।
  • addFieldError(): এই মেথড ব্যবহার করে আপনি নির্দিষ্ট ফিল্ডে ত্রুটি বার্তা যোগ করতে পারবেন।

৩. JSP পেজে Validation Error দেখানো

JSP পেজে Struts 2 tags ব্যবহার করে আপনি ভ্যালিডেশন এররগুলি প্রদর্শন করতে পারেন।

উদাহরণ: JSP পেজ

<!-- hello.jsp -->
<html>
    <body>
        <h2>Enter your details</h2>
        <s:form action="hello" method="post">
            <s:textfield name="name" label="Name"/>
            <s:textfield name="email" label="Email"/>
            <s:submit value="Submit"/>

            <!-- Display validation errors -->
            <s:fielderror fieldName="name"/>
            <s:fielderror fieldName="email"/>
        </s:form>
    </body>
</html>

ব্যাখ্যা:

  • s:fielderror: এই ট্যাগটি নির্দিষ্ট ফিল্ডের জন্য ত্রুটি বার্তা প্রদর্শন করে। যদি name বা email ফিল্ডে ত্রুটি থাকে, তবে সেই ত্রুটির বার্তা এখানে দেখানো হবে।

৪. Struts 2 Validation Features

  • Declarative Validation: Struts 2-এ XML ফাইলের মাধ্যমে আপনি ফিল্ড এবং অ্যাকশন লেভেলে ভ্যালিডেশন কনফিগার করতে পারেন।
  • Custom Validation: আপনি কাস্টম ভ্যালিডেশন মেথড লিখে আরও জটিল ভ্যালিডেশন লজিক প্রয়োগ করতে পারেন।
  • Error Handling: Struts 2 ত্রুটি গুলি actionError বা fieldError এর মাধ্যমে সঠিকভাবে হ্যান্ডল করতে সহায়তা করে।

সারাংশ

  • Struts 2 Validation XML ভিত্তিক কনফিগারেশন এবং অ্যাকশন ক্লাসের মাধ্যমে ডাটা ভ্যালিডেশন প্রক্রিয়াকে পরিচালনা করে।
  • validation.xml ফাইলে আপনি প্রতিটি ফিল্ডের জন্য যাচাই নিয়ম সেট করতে পারেন এবং struts.xml ফাইলে এই কনফিগারেশন রেফারেন্স করা হয়।
  • Action classvalidate() মেথডের মাধ্যমে কাস্টম ভ্যালিডেশন লজিক যুক্ত করা যায়।
  • JSP পেজে Struts 2 tags ব্যবহার করে ত্রুটি বার্তা সুন্দরভাবে প্রদর্শন করা যায়।

Struts 2 এ XML ভিত্তিক ভ্যালিডেশন ব্যবহার করা সহজ এবং কার্যকর, যা ডাটার সঠিকতা এবং অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে সহায়তা করে।

Content added By

Struts 2 ফ্রেমওয়ার্কে, Annotation ভিত্তিক Validation হল একটি সহজ এবং আধুনিক পদ্ধতি যা আপনাকে আপনার অ্যাকশন ক্লাসে ডেটা ভ্যালিডেশন যুক্ত করতে সাহায্য করে। Struts 2-এ পূর্বে XML কনফিগারেশনের মাধ্যমে ভ্যালিডেশন কনফিগার করা হত, কিন্তু Annotation ভিত্তিক কনফিগারেশন দ্বারা কোডকে আরও পরিষ্কার এবং সংক্ষিপ্ত করা সম্ভব।

Struts 2 এর Annotation ভিত্তিক Validation এর সুবিধা

  1. কমপ্লেক্স কনফিগারেশন কমানো: XML কনফিগারেশনের পরিবর্তে, ভ্যালিডেশনকে ডিরেক্টলি অ্যাকশন ক্লাসে ইনলাইন করা যায়।
  2. সহজ এবং পরিষ্কার: Annotation ব্যবহারে কোডের পাঠযোগ্যতা বাড়ে এবং কোন বাহ্যিক কনফিগারেশন ফাইলের প্রয়োজন হয় না।
  3. ভাল ডিবাগিং: কারণ ভ্যালিডেশন সরাসরি ক্লাসে যুক্ত থাকে, তাই ডিবাগ করা অনেক সহজ হয়ে যায়।

Struts 2 এর Annotation ভিত্তিক Validation সিস্টেমটি @Validations, @Validation, এবং অন্যান্য বিভিন্ন অ্যনোটেশন ব্যবহার করে কাজ করে।


Struts 2-এ Annotation ভিত্তিক Validation কনফিগারেশন উদাহরণ

এখানে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে @RequiredFieldValidator, @EmailValidator এবং অন্যান্য ভ্যালিডেশন অ্যনোটেশন ব্যবহার করা হয়েছে।

1. Action Class উদাহরণ

Struts 2-এ Annotation ভিত্তিক Validation কনফিগার করার জন্য আপনাকে প্রথমে অ্যাকশন ক্লাসে প্রয়োজনীয় Validation অ্যনোটেশনগুলো ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হল:

package com.example.action;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.validation.annotations.EmailValidator;
import org.apache.struts2.validation.annotations.RequiredFieldValidator;

public class UserAction extends ActionSupport {

    private String username;
    private String email;

    @RequiredFieldValidator(message = "Username is required.")
    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;
    }

    @Action(value = "/userAction", results = {
        @Result(name = "success", location = "/welcome.jsp"),
        @Result(name = "input", location = "/userForm.jsp")
    })
    public String execute() {
        // Perform the action logic
        return SUCCESS;
    }
}

ব্যাখ্যা:

  • @RequiredFieldValidator: এটি নিশ্চিত করে যে password ফিল্ডটি খালি থাকবে না।
  • @EmailValidator: এটি চেক করে যে email ফিল্ডে একটি সঠিক ইমেইল অ্যাড্রেস আছে কিনা।
  • @Action: এটি Struts 2-এ অ্যাকশন মেথড কনফিগার করার জন্য ব্যবহৃত হয়। এখানে SUCCESS রেজাল্টটি /welcome.jsp এ রিডাইরেক্ট করে এবং input রেজাল্টটি /userForm.jsp ফর্মে রিডাইরেক্ট করে।

2. Validation Configuration

Struts 2 এ ভ্যালিডেশন অ্যনোটেশন সাধারণত Struts 2 Validation Framework এর অংশ হিসেবে ব্যবহৃত হয়, এবং এটি xwork-conversion.properties বা validation.xml ফাইলের সাথে ইন্টিগ্রেট হতে পারে।

তবে, Annotation ভিত্তিক ভ্যালিডেশন কনফিগারেশনের ক্ষেত্রে, আপনাকে আলাদা কোনো কনফিগারেশন ফাইল প্রয়োজন নেই।

3. userForm.jsp (View)

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>User Form</title>
</head>
<body>
    <h2>User Registration Form</h2>
    <s:form action="userAction">
        <s:textfield name="username" label="Username" />
        <s:password name="password" label="Password" />
        <s:textfield name="email" label="Email" />
        <s:submit value="Submit" />
    </s:form>
</body>
</html>

এখানে, s:form ট্যাগ ব্যবহার করা হয়েছে যা username, password, এবং email ইনপুট ফিল্ডগুলোকে অ্যাকশন ক্লাসের প্রপার্টিতে মাপবে। এই ফর্মটি userAction নামের অ্যাকশন ক্লাসে পাঠানো হবে।

4. welcome.jsp (Success Page)

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h2>Welcome, <s:property value="username" /></h2>
</body>
</html>

এখানে, s:property ট্যাগ ব্যবহার করে username প্রপার্টি ভ্যালু ডিসপ্লে করা হচ্ছে, যা UserAction ক্লাস থেকে আসবে।


সাধারণ Validation অ্যনোটেশন

Struts 2-এর Annotation ভিত্তিক Validation-এর মাধ্যমে বিভিন্ন ধরনের ইনপুট ভ্যালিডেশন করা যায়। কিছু সাধারণ ভ্যালিডেশন অ্যনোটেশন:

  1. @RequiredFieldValidator:
    • একটি ফিল্ড খালি থাকতে পারে না।
    • উদাহরণ:

      @RequiredFieldValidator(message = "Username is required.")
      private String username;
      
  2. @EmailValidator:
    • একটি বৈধ ইমেইল ঠিকানা চেক করে।
    • উদাহরণ:

      @EmailValidator(message = "Please enter a valid email address.")
      private String email;
      
  3. @RegexFieldValidator:
    • একটি কাস্টম রেগুলার এক্সপ্রেশন দিয়ে ভ্যালিডেশন করা।
    • উদাহরণ:

      @RegexFieldValidator(message = "Phone number must be in format (xxx) xxx-xxxx", regex = "\\(\\d{3}\\) \\d{3}-\\d{4}")
      private String phoneNumber;
      
  4. @StringLengthFieldValidator:
    • একটি ফিল্ডের দৈর্ঘ্য চেক করা।
    • উদাহরণ:

      @StringLengthFieldValidator(minLength = "6", maxLength = "12", message = "Password length must be between 6 and 12 characters.")
      private String password;
      

Struts 2 Validation Flow

  1. Input ফর্মের ডেটা: ব্যবহারকারী যখন ইনপুট ফর্মে ডেটা প্রদান করে, সেই ডেটা অ্যাকশন ক্লাসে পাঠানো হয়।
  2. ভ্যালিডেশন: Struts 2 ফ্রেমওয়ার্কে, Annotation ভিত্তিক ভ্যালিডেশন যাত্রা শুরু হয়। যেমন, @RequiredFieldValidator, @EmailValidator ইত্যাদি।
  3. ফলাফল: যদি কোনো ইনপুট ভুল থাকে (যেমন, password ফিল্ড খালি থাকে বা email ভুল থাকে), তাহলে অ্যাকশনটি ERROR রিটার্ন করবে এবং ফর্ম পুনরায় ব্যবহারকারীকে প্রদর্শন করা হবে।
  4. সফল ভ্যালিডেশন: যদি সমস্ত ভ্যালিডেশন সফল হয়, তবে অ্যাকশনটি SUCCESS রিটার্ন করবে এবং সংশ্লিষ্ট রেজাল্ট পেজ (যেমন, welcome.jsp) প্রদর্শিত হবে।

সারাংশ

Struts 2-এ Annotation ভিত্তিক Validation একটি আধুনিক এবং সহজ পদ্ধতি যা ফর্ম ডেটা ভ্যালিডেশন পরিচালনা করে। @RequiredFieldValidator, @EmailValidator, @StringLengthFieldValidator ইত্যাদি অ্যনোটেশন ব্যবহার করে আপনি অ্যাকশন ক্লাসে সরাসরি ভ্যালিডেশন যুক্ত করতে পারেন। এতে কোডের শুদ্ধতা এবং পাঠযোগ্যতা বৃদ্ধি পায় এবং XML কনফিগারেশন ফাইলের প্রয়োজনীয়তা কমে যায়।

Content added By

Struts 2 একটি শক্তিশালী MVC ফ্রেমওয়ার্ক, যা ডেটা ভ্যালিডেশন পরিচালনা করার জন্য Validation Framework সরবরাহ করে। Struts 2 এর Validation Framework ব্যবহার করে আপনি ইউজারের ইনপুটকে যাচাই করতে পারেন এবং নিশ্চিত করতে পারেন যে ইনপুটগুলি সঠিক এবং নিরাপদ। এই ফ্রেমওয়ার্কের মাধ্যমে আপনি সার্ভার সাইড ভ্যালিডেশন, যেমন ফিল্ড লেভেল ভ্যালিডেশন এবং কাস্টম ভ্যালিডেশন, সহজে বাস্তবায়ন করতে পারেন।

Struts 2 Validation Framework মূলত annotation-based validation এবং XML configuration এর মাধ্যমে কাজ করে। এটি Action Class এবং struts.xml কনফিগারেশন ফাইলে নির্ধারিত হয়।


1. Struts 2 Validation Framework: কিভাবে কাজ করে?

Struts 2 তে ভ্যালিডেশন সাধারণত ValidationInterceptor ব্যবহার করে পরিচালিত হয়, যা ইনপুট ভ্যালিডেশন নিশ্চিত করার জন্য ব্যবহৃত হয়। আপনি action ক্লাসে ভ্যালিডেশন মেথড যোগ করতে পারেন অথবা struts.xml ফাইলে কনফিগারেশন করতে পারেন।

2. Struts 2 Validation Framework: উদাহরণসহ

এই উদাহরণে আমরা একটি সাধারণ ইউজার ফর্ম তৈরি করবো, যেখানে ব্যবহারকারীর নাম এবং ইমেইল ঠিক আছে কিনা তা যাচাই করা হবে।

১. Action Class (UserAction)

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.interceptor.validation.SkipValidation;

public class UserAction extends ActionSupport {
    private String name;
    private String email;

    // Getter and Setter methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    // Validation method
    @Override
    public void validate() {
        if (name == null || name.trim().isEmpty()) {
            addFieldError("name", "Name is required.");
        }
        if (email == null || email.trim().isEmpty()) {
            addFieldError("email", "Email is required.");
        } else if (!email.matches("[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}")) {
            addFieldError("email", "Invalid email format.");
        }
    }

    // Execute method
    public String execute() {
        return SUCCESS;
    }
}

ব্যাখ্যা:

  • validate() মেথডটি Struts 2 Validation Framework তে ব্যবহার করা হয়। এটি ইনপুটের ভ্যালিডেশন সম্পাদন করে এবং addFieldError() ব্যবহার করে ভুল ইনপুটের জন্য ত্রুটি বার্তা যোগ করা হয়।
  • এখানে name এবং email ক্ষেত্রের জন্য ভ্যালিডেশন করা হয়েছে। name ফিল্ড যদি খালি থাকে তবে ত্রুটি বার্তা দেখানো হবে এবং email ফিল্ডের জন্য একটি ইমেইল প্যাটার্ন চেক করা হয়েছে।

২. JSP (View Layer) তৈরি করুন

<s:form action="userAction">
    <s:textfield name="name" label="Name" />
    <s:textfield name="email" label="Email" />
    <s:submit value="Submit" />
</s:form>

<s:actionmessage />
<s:actionerror />

ব্যাখ্যা:

  • s:form ট্যাগ দিয়ে একটি ফর্ম তৈরি করা হয়েছে যা UserAction এর execute() মেথডকে কল করবে।
  • s:textfield ট্যাগ দিয়ে ইউজারের নাম এবং ইমেইল ইনপুট ফিল্ড তৈরি করা হয়েছে।
  • s:actionmessage এবং s:actionerror ট্যাগ ব্যবহার করে আমরা ত্রুটি বার্তা বা সফল বার্তা প্রদর্শন করতে পারি।

৩. struts.xml কনফিগারেশন

<package name="default" extends="struts-default">
    <action name="userAction" class="com.example.UserAction" method="execute">
        <result name="success">/success.jsp</result>
        <result name="input">/input.jsp</result>
    </action>
</package>

ব্যাখ্যা:

  • struts.xml ফাইলে userAction নামের একটি অ্যাকশন কনফিগার করা হয়েছে যা UserAction ক্লাসের execute() মেথডকে কল করবে।
  • success.jsp এবং input.jsp ফাইলটি রিটার্ন হবে SUCCESS এবং INPUT ফলস্বরূপ।

৪. Validation Configuration (struts-validation.xml)

Struts 2 তে, আপনি যদি XML ভিত্তিক কনফিগারেশন ব্যবহার করতে চান, তাহলে struts-validation.xml ফাইল তৈরি করতে পারেন।

<validators>
    <field name="name">
        <field-validator type="required">
            <message>Name is required.</message>
        </field-validator>
    </field>

    <field name="email">
        <field-validator type="required">
            <message>Email is required.</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex">[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}</param>
            <message>Invalid email format.</message>
        </field-validator>
    </field>
</validators>

ব্যাখ্যা:

  • struts-validation.xml ফাইলে আপনি name এবং email ফিল্ডের জন্য ভ্যালিডেশন নির্ধারণ করতে পারেন।
  • required ভ্যালিডেটরটি নিশ্চিত করে যে name এবং email ফিল্ড খালি না থাকে।
  • email ফিল্ডের জন্য একটি regex ভ্যালিডেটর ব্যবহার করা হয়েছে, যা ইমেইল ফরম্যাট চেক করবে।

5. Annotation-Based Validation

Struts 2 তে আপনি annotations ব্যবহার করে ভ্যালিডেশন কনফিগারেশন করতে পারেন। এটি struts-validation.xml ফাইলের পরিবর্তে কোডের মাধ্যমে ভ্যালিডেশন পরিচালনা করার একটি সহজ উপায়।

উদাহরণ:

import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
import com.opensymphony.xwork2.validator.annotations.EmailValidator;

public class UserAction extends ActionSupport {
    private String name;
    private String email;

    @RequiredFieldValidator(message = "Name is required.")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @RequiredFieldValidator(message = "Email is required.")
    @EmailValidator(message = "Invalid email format.")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String execute() {
        return SUCCESS;
    }
}

ব্যাখ্যা:

  • @RequiredFieldValidator ব্যবহার করে আমরা name এবং email ফিল্ডে ভ্যালিডেশন নির্ধারণ করেছি।
  • @EmailValidator ব্যবহার করে ইমেইল ফরম্যাট চেক করা হয়েছে।

সারাংশ

Struts 2 এর Validation Framework খুবই সহজ এবং শক্তিশালী, যা আপনাকে ইউজারের ইনপুট যাচাই করতে সহায়ক হয়। আপনি Action Class এর মাধ্যমে ভ্যালিডেশন মেথড তৈরি করতে পারেন অথবা XML Configuration বা Annotations ব্যবহার করে ভ্যালিডেশন নির্ধারণ করতে পারেন। এই ফ্রেমওয়ার্কটি ডেটা এক্সপেক্টেশন এবং নিরাপত্তা নিশ্চিত করতে খুবই উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...