Struts 2 এর Action

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

395

Action কী?

Action হলো Struts 2 ফ্রেমওয়ার্কের একটি মৌলিক উপাদান, যা Controller হিসেবে কাজ করে। Action ক্লাস ব্যবহারকারী অনুরোধ (HTTP request) গ্রহণ করে, সেগুলো প্রসেস করে এবং একটি উপযুক্ত ফলাফল (result) ফেরত দেয়। Action ক্লাসগুলো মডেল এবং ভিউ (Model-View) এর মধ্যে একটি সংযোগকারী হিসেবে কাজ করে, যা Model-এ ডেটা প্রক্রিয়া করে এবং View-এ উপস্থাপন করে।

Struts 2 ফ্রেমওয়ার্কে Action এর প্রধান কাজ হল HTTP রিকোয়েস্ট গ্রহণ করা, প্রয়োজনে ডেটাবেস বা অন্যান্য ব্যাকএন্ড লজিকের সাথে যোগাযোগ করা, এবং পরবর্তী ফলাফল প্রদর্শন করার জন্য উপযুক্ত পৃষ্ঠায় রিডিরেক্ট করা।


Struts 2 এর Action এর গঠন

Struts 2-এ Action-এর কাজগুলো সাধারণত তিনটি ভাগে বিভক্ত করা হয়:

  1. Action Class: Action ক্লাসটি ব্যবহারকারীর অনুরোধ গ্রহণ করে এবং সেগুলো প্রসেস করে। এটি একটি Java ক্লাস যেটি সাধারণত ActionSupport ক্লাসকে এক্সটেন্ড করে তৈরি করা হয়।
  2. Action Method: Action Class-এর মধ্যে বিভিন্ন মেথড থাকে, যা বিভিন্ন রিকোয়েস্ট হ্যান্ডেল করে। এগুলোর মধ্যে সবচেয়ে সাধারণ মেথড হলো execute(), যা Action ক্লাসের মেইন মেথড।
  3. Result Types: Action মেথডের ফলস্বরূপ সাধারণত একটি String রিটার্ন হয়, যা Struts 2 কনফিগারেশন ফাইলে ডিফাইন করা বিভিন্ন রেজাল্ট টাইপ (JSP পৃষ্ঠার নাম বা রিডিরেকশন URL) এর সাথে সম্পর্কিত থাকে।

Action ক্লাস তৈরি করা

Struts 2-এ একটি Action ক্লাস তৈরি করতে, সাধারণত ActionSupport ক্লাসটি এক্সটেন্ড করা হয়, যা বিভিন্ন ইউটিলিটি মেথড এবং বৈশিষ্ট্য (যেমন, ভ্যালিডেশন, ইন্টারসেপ্টর) সরবরাহ করে।

উদাহরণ:

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {
    
    private String name;

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

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

    // Action method (execute) that will be called by Struts 2
    public String execute() {
        if (name == null || name.isEmpty()) {
            return ERROR;  // Return ERROR if name is not provided
        }
        return SUCCESS;  // Return SUCCESS if name is provided
    }
}

কোডের ব্যাখ্যা

  1. ActionSupport: HelloAction ক্লাসটি ActionSupport ক্লাস থেকে এক্সটেন্ড করা হয়েছে, যা Struts 2-এ সাধারণ Action ক্লাসের জন্য একটি বেস ক্লাস।
  2. execute() মেথড: এটি একটি স্ট্যান্ডার্ড Action মেথড যা রিকোয়েস্ট প্রসেস করার জন্য ব্যবহার হয়। এটি রিটার্ন করে SUCCESS বা ERROR স্ট্যাটাস, যা কনফিগারেশন ফাইলের (struts.xml) মাধ্যমে মেলে।
  3. Getter and Setter: Action ক্লাসে যেকোনো প্রপার্টি ব্যবহার করার জন্য তাদের getter এবং setter মেথড তৈরি করা প্রয়োজন। এখানে name প্রপার্টির জন্য Getter এবং Setter মেথড তৈরি করা হয়েছে।

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

struts.xml ফাইলটিতে Action ক্লাস এবং তার রেজাল্ট কনফিগার করা হয়। Struts 2 ফ্রেমওয়ার্ক এই ফাইলটি ব্যবহার করে অ্যাকশন ক্লাসকে মেপিং করে এবং নির্দিষ্ট রেজাল্ট (যেমন, JSP পৃষ্ঠা বা রিডিরেকশন) সংজ্ঞায়িত করে।

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

<struts>
    <package name="default" extends="struts-default">
        <action name="hello" class="com.example.HelloAction">
            <result name="success">/hello.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

কোডের ব্যাখ্যা

  1. action name: hello নামক অ্যাকশনটি HelloAction ক্লাসের সাথে মেপিং করা হয়েছে। অর্থাৎ, যখন /hello রিকোয়েস্ট আসবে, তখন HelloAction ক্লাসের execute() মেথডটি কল হবে।
  2. result: এখানে দুইটি রেজাল্ট ডিফাইন করা হয়েছে:
    • SUCCESS: যদি Action ক্লাসটি সফলভাবে রান হয়, তবে /hello.jsp পৃষ্ঠায় রিডিরেক্ট করা হবে।
    • ERROR: যদি কোনো সমস্যা হয় (যেমন, নাম ফিল্ড ফাঁকা থাকে), তবে /error.jsp পৃষ্ঠায় রিডিরেক্ট করা হবে।

Struts 2 Action এর Life Cycle

Struts 2 এর Action এর জীবনচক্র সাধারণত নিম্নরূপ:

  1. Request: ব্যবহারকারী HTTP রিকোয়েস্ট পাঠায়।
  2. Dispatcher: Dispatcher Servlet (ActionServlet) রিকোয়েস্ট গ্রহণ করে এবং যথাযথ অ্যাকশন ক্লাসে রিডিরেক্ট করে।
  3. Action Execution: Action ক্লাসের execute() মেথড কল করা হয়। এই মেথডে প্রয়োজনীয় ডেটা প্রসেস করা হয় এবং রেজাল্ট ফেরত দেওয়া হয়।
  4. Result: অ্যাকশন মেথডটি একটি রেজাল্ট স্ট্রিং রিটার্ন করে, যেমন SUCCESS বা ERROR, যা কনফিগারেশন ফাইলের সাথে মেলে।
  5. View (JSP): রেজাল্ট অনুযায়ী একটি ভিউ (JSP) পৃষ্ঠায় রিডিরেক্ট করা হয়।

Struts 2 Action এর ব্যবহার

  1. ডেটা ভ্যালিডেশন: Action ক্লাসে ইনপুট ডেটা ভ্যালিডেশন করা যায়। Struts 2 ডেটা ভ্যালিডেশনের জন্য Validators এবং Interceptor ব্যবহারের সুযোগ দেয়।
  2. ডেটাবেস ইন্টিগ্রেশন: Action ক্লাসে ডেটাবেস অপারেশন যেমন ইনসার্ট, আপডেট, ডিলিট ইত্যাদি করা যেতে পারে।
  3. ডায়নামিক রিটার্ন স্ট্রিং: execute() মেথডে কিছু লজিক অনুযায়ী ডায়নামিক রিটার্ন স্ট্রিং প্রদান করা যেতে পারে, যেমন SUCCESS, ERROR, INPUT ইত্যাদি।

সারাংশ

Struts 2 Action হলো MVC আর্কিটেকচারের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর HTTP রিকোয়েস্ট গ্রহণ করে, তা প্রসেস করে এবং উপযুক্ত ফলাফল রিটার্ন করে। এটি ActionSupport ক্লাসের মাধ্যমে সহজে কনফিগার করা যায় এবং বিভিন্ন রেজাল্ট (JSP পৃষ্ঠার নাম বা রিডিরেকশন) প্রদান করতে সহায়তা করে। Struts 2 অ্যাপ্লিকেশন তৈরির জন্য Action ক্লাস একটি শক্তিশালী এবং নমনীয় উপাদান।


Content added By

Action ক্লাসটি Struts 2 ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ অংশ এবং এটি MVC (Model-View-Controller) আর্কিটেকচারের Controller এর ভূমিকা পালন করে। Action হল একটি জাভা ক্লাস যা ইউজারের রিকুয়েস্ট (যেমন, ফর্ম সাবমিশন বা URL থেকে পাওয়া রিকুয়েস্ট) প্রক্রিয়া করে, বিজনেস লজিক সম্পাদন করে এবং উপযুক্ত ভিউ (যেমন, JSP বা অন্য কোনো পেজ) প্রদর্শন করার জন্য একটি রেসপন্স রিটার্ন করে।

Struts 2 Action ক্লাসটি ইউজারের ইনপুট প্রক্রিয়া এবং বিজনেস লজিকের জন্য দায়ী, এবং এটি সাধারণত ActionSupport বা Action ক্লাস থেকে এক্সটেন্ড করা হয়।


Action ক্লাসের ভূমিকা

  1. ইউজারের ইনপুট গ্রহণ:
    • Action ক্লাস ইউজারের কাছ থেকে ইনপুট গ্রহণ করে (যেমন ফর্ম ডেটা) এবং এটি প্রসেস করে।
    • Struts 2 ফ্রেমওয়ার্ক OGNL (Object-Graph Navigation Language) ব্যবহার করে ফর্ম ডেটা স্বয়ংক্রিয়ভাবে Action ক্লাসের প্রপার্টিতে ম্যাপ করে।
  2. বিজনেস লজিক সম্পাদন:
    • Action ক্লাসে ব্যবহারকারীর ইনপুট ডেটার উপর বিভিন্ন প্রক্রিয়া যেমন ডেটা ভ্যালিডেশন, লজিক্যাল ক্যালকুলেশন, এবং ডেটাবেজ এক্সেস করা হয়।
  3. রেসপন্স রিটার্ন করা:
    • Action ক্লাস সফলভাবে কাজ করলে এটি success, error, বা অন্য যে কোন রিটার্ন ভ্যালু প্রদান করতে পারে যা Struts 2 কনফিগারেশন ফাইলে (struts.xml) সেট করা থাকে।
    • রিটার্ন ভ্যালু অ্যাকশন বা রেসাল্ট পেজে গাইড করে, যেমন সফল হলে একটি JSP পেজ রিটার্ন করা হতে পারে।
  4. রাউটিং:
    • Struts 2-এ, Action ক্লাসগুলি struts.xml কনফিগারেশন ফাইলে ম্যাপ করা হয়। এই ফাইলটি অ্যাকশন নাম এবং প্রক্রিয়া কোন অ্যাকশন ক্লাস দ্বারা পরিচালিত হবে তা নির্ধারণ করে।

Action ক্লাস তৈরি করা

Action ক্লাস তৈরি করতে, সাধারণত Action বা ActionSupport ক্লাস থেকে এক্সটেন্ড করা হয়। ActionSupport কনভেনিয়েন্স মেথড যেমন getText(), addActionError(), addActionMessage() ইত্যাদি প্রদান করে যা আপনাকে Action ক্লাস লেখতে সহজ করে তোলে।

উদাহরণ: Action ক্লাস

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport {
    private String name;
    private String message;

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

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

    public String getMessage() {
        return message;
    }

    // execute() method that will be called
    @Override
    public String execute() throws Exception {
        // ব্যবসায়িক লজিক বা প্রক্রিয়া
        if (name == null || name.isEmpty()) {
            addActionError("Name is required");
            return ERROR;  // If there's an error, return ERROR
        }
        message = "Hello, " + name;
        return SUCCESS;  // If successful, return SUCCESS
    }
}

কোড ব্যাখ্যা:

  • এই Action ক্লাসটি ব্যবহারকারীর কাছ থেকে name ইনপুট গ্রহণ করে এবং যদি name প্রেরণ করা না থাকে তবে একটি error বার্তা প্রদান করবে।
  • যদি name দেওয়া হয়, তবে এটি একটি "Hello, name" বার্তা তৈরি করবে এবং SUCCESS রিটার্ন করবে।
  • execute() মেথডটি ক্লাসের প্রধান মেথড যা অ্যাকশনের মূল কার্যক্রম সম্পাদন করে।

Struts 2 এ Action এর কনফিগারেশন

Struts 2-এ Action ক্লাসের কনফিগারেশন struts.xml ফাইলে করা হয়, যেখানে অ্যাকশন, তার ক্লাস, এবং রিটার্ন ভ্যালুগুলোর ম্যাপিং থাকে।

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

<struts>
    <package name="default" extends="struts-default">
        <action name="hello" class="com.example.HelloWorldAction" method="execute">
            <result name="success">/WEB-INF/content/success.jsp</result>
            <result name="error">/WEB-INF/content/error.jsp</result>
        </action>
    </package>
</struts>

কোড ব্যাখ্যা:

  • name="hello": এটি URL প্যাটার্ন নির্দেশ করে, যেমন http://localhost:8080/hello.
  • class="com.example.HelloWorldAction": এটি অ্যাকশন ক্লাসের পূর্ণ পাথ।
  • method="execute": এটি নির্দেশ করে যে execute() মেথডটি অ্যাকশন প্রসেসিং শুরু করবে।
  • SUCCESS বা ERROR রিটার্ন হলে সংশ্লিষ্ট JSP পেজে রিডাইরেক্ট হবে।

Action এর বিভিন্ন রিটার্ন ভ্যালু

Struts 2-এ, Action ক্লাস থেকে রিটার্ন হওয়া বিভিন্ন স্ট্রিং ভ্যালু struts.xml-এ ডিফাইন করা রেসাল্টের সাথে সম্পর্কিত থাকে। কয়েকটি সাধারণ রিটার্ন ভ্যালু হলো:

  • SUCCESS: সাধারণত অ্যাকশন সফল হলে রিটার্ন হয় এবং SUCCESS নামের রেসাল্ট পেজে রিডাইরেক্ট করা হয়।
  • ERROR: যদি কোনও সমস্যা থাকে (যেমন, ইনপুট ভ্যালিডেশন), তবে ERROR রিটার্ন হয় এবং এর সাথে সংশ্লিষ্ট পেজে রিডাইরেক্ট করা হয়।
  • INPUT: যদি ইউজার ইনপুট সঠিক না হয়, তাহলে INPUT রিটার্ন করা হয় এবং ইনপুট ফর্ম আবার প্রদর্শিত হয়।

Action এর বৈশিষ্ট্য

  1. বিজনেস লজিক প্রক্রিয়াকরণ: Action ক্লাস ব্যবহারকারীর ইনপুট গ্রহণ করে এবং ব্যবসায়িক লজিক প্রক্রিয়া করে, যেমন ডেটাবেস এক্সেস বা ফর্ম ভ্যালিডেশন।
  2. ডেটা প্রবাহ: Action ক্লাসের মাধ্যমে ডেটা ভিউ (JSP) তে প্রেরণ করা হয়।
  3. Error Handling: Action ক্লাসে অ্যাকশন পর্যায়ে ত্রুটি পরিচালনা করা হয় এবং এর মাধ্যমে ত্রুটির বার্তা error পেজে পাঠানো হয়।
  4. রিটার্ন স্ট্রিং: Action ক্লাস থেকে রিটার্ন হওয়া স্ট্রিংগুলি কনফিগার করা রেসাল্ট পেজে রিডাইরেক্ট করে।

উপসংহার

Struts 2 ফ্রেমওয়ার্কে Action ক্লাস একটি অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে। এটি ইউজারের ইনপুট গ্রহণ, ব্যবসায়িক লজিক প্রক্রিয়া এবং উপযুক্ত ভিউ বা রেসাল্ট পেজে রিডাইরেক্ট করার কাজ করে। Action ক্লাসের মাধ্যমে বিভিন্ন লজিক্যাল এক্সিকিউশন পরিচালনা করা যায় এবং struts.xml কনফিগারেশন ফাইলে এর সাথে সম্পর্কিত রেসাল্ট সেট করা হয়। Struts 2 অ্যাপ্লিকেশনে Action ক্লাস একটি শক্তিশালী কন্ট্রোলার হিসেবে কাজ করে যা ডেটা প্রবাহ এবং ইউজারের ইন্টারঅ্যাকশন সঠিকভাবে পরিচালনা করে।

Content added By

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 এর বৈশিষ্ট্য:

  1. execute() মেথড:
    • Action ইন্টারফেসের মধ্যে execute() মেথডটি একটি স্ট্যান্ডার্ড মেথড, যা এক্সিকিউট হওয়ার পর একটি স্ট্রিং রিটার্ন করে। এই রিটার্ন করা স্ট্রিংটি success বা error হতে পারে, যা নির্ধারণ করে কোন রেসাল্ট (উদাহরণস্বরূপ, JSP পৃষ্ঠা) দেখানো হবে।
  2. স্টেটিক নয়:
    • execute() মেথডটি স্টেটিক নয়, তাই এটি একটি অবজেক্ট মেথড হিসেবে কাজ করে এবং action class এর ইনস্ট্যান্স তৈরি করার পরেই এটি কল করা হয়।
  3. 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 ইন্টারফেসকে ইমপ্লিমেন্ট করে এবং এতে কিছু অতিরিক্ত সুবিধা রয়েছে, যেমন:

  1. Basic validation: Struts 2-এর validation ফিচার ব্যবহারের জন্য ActionSupport বেশ কার্যকরী।
  2. Internationalization (i18n): ActionSupport ক্লাসটি আন্তর্জাতিকীকরণ সমর্থন করে, যার মাধ্যমে বিভিন্ন ভাষায় বার্তা প্রদর্শন করা সম্ভব।
  3. Predefined result codes: ActionSupport এর মধ্যে কিছু স্ট্যান্ডার্ড রিটার্ন কোড থাকে (যেমন, SUCCESS, ERROR) যা আপনি Action ক্লাসে ব্যবহার করতে পারেন।

ActionSupport ব্যবহার করলে আপনাকে Action ইন্টারফেসের execute() মেথডের পরিবর্তে অন্য কোনো মেথড ব্যবহার করতে হয় না। আপনি সরাসরি SUCCESS বা ERROR কনস্ট্যান্ট ব্যবহার করে নির্দিষ্ট রেসাল্ট কন্ট্রোল করতে পারেন।

ActionSupport এর বৈশিষ্ট্য:

  1. Automatic Validation: ActionSupport-এ ফিল্ড ভ্যালিডেশন সহজে করা যায়।
  2. Localization: ActionSupport আন্তর্জাতিকীকরণ সমর্থন করে, যার মাধ্যমে একাধিক ভাষার ফিচার ব্যবহার করা যায়।
  3. 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 InterfaceActionSupport
InheritanceDirectly implements Action interface.Extends ActionSupport (which implements Action).
Convenience MethodsNo predefined methods.Has utility methods like addActionError(), addActionMessage().
ValidationManual validation required.Automatic validation support.
InternationalizationManual setup required.Built-in support for internationalization.
Predefined Result CodesNo predefined result codes.Provides SUCCESS, ERROR, LOGIN result codes.

সারাংশ

Action Interface এবং ActionSupport হল Struts 2 এর দুটি গুরুত্বপূর্ণ কম্পোনেন্ট, যা অ্যাকশন প্রক্রিয়া পরিচালনা করে। Action Interface ব্যবহারের মাধ্যমে Action ক্লাসের কার্যক্রম বাস্তবায়ন করা হয়, তবে ActionSupport আরও সুবিধা প্রদান করে, যেমন স্বয়ংক্রিয় ভ্যালিডেশন, আন্তর্জাতিকীকরণ, এবং স্ট্যান্ডার্ড রিটার্ন কোড। সাধারণত, ActionSupport ক্লাস ব্যবহারের মাধ্যমে কোড লেখা সহজ এবং দ্রুত হয়। Action ইন্টারফেসটি আরও কাস্টম এবং নির্দিষ্ট অ্যাকশন লজিক প্রয়োগের জন্য ব্যবহৃত হয়।

Content added By

Struts 2-এ Custom Action ক্লাস তৈরি করা খুবই সহজ এবং এটি অ্যাকশন লজিক বা ব্যবসায়িক লজিককে পরিচালনা করতে ব্যবহৃত হয়। Action ক্লাসটি ActionSupport ক্লাস থেকে এক্সটেন্ড করে তৈরি করা হয়, যা বিভিন্ন ধরনের বিল্ট-ইন ফিচার সরবরাহ করে। এই ক্লাসটি রিকোয়েস্ট হ্যান্ডলিং এবং ফর্ম ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়।

এখানে, আমরা Custom Action ক্লাস তৈরি করার প্রক্রিয়া এবং এর ব্যবহার দেখব।


Custom Action ক্লাস তৈরি করার ধাপ

  1. Action ক্লাস তৈরি করুন: এই ক্লাসটি সাধারণত ActionSupport অথবা Action ইন্টারফেস এক্সটেন্ড করে তৈরি করা হয়। এখানে আপনার লজিক থাকবে যা ইউজারের ইনপুট প্রক্রিয়া করবে।
  2. প্রোপার্টি ডিফাইন করুন: ইউজারের ইনপুট ডেটা (যেমন, ফর্ম ডেটা) স্টোর করার জন্য ক্লাসে প্রোপার্টি তৈরি করা হয়।
  3. মেথড তৈরি করুন: ক্লাসে একটি execute() মেথড থাকতে পারে যা Action ক্লাসের জন্য ডিফল্ট। এই মেথডে ব্যবসায়িক লজিক (business logic) সম্পাদিত হয় এবং এটি ফলাফল হিসেবে SUCCESS অথবা ERROR রিটার্ন করে।
  4. struts.xml কনফিগারেশন: struts.xml ফাইলে এই Custom Action ক্লাসটি কনফিগার করতে হবে।

উদাহরণ: Custom Action ক্লাস তৈরি

Step 1: Action ক্লাস তৈরি

LoginAction.java (Custom Action Class)

package com.example.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

    private String username;
    private String password;

    // Execute method
    @Override
    public String execute() {
        if ("admin".equals(username) && "password123".equals(password)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }

    // Getter and Setter for username and password
    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;
    }
}

এখানে:

  • LoginAction ক্লাসটি ActionSupport থেকে এক্সটেন্ড করা হয়েছে।
  • execute() মেথডটি ইউজারের ইনপুট ভ্যালিডেট করছে। যদি ব্যবহারকারী সঠিক ইউজারনেম এবং পাসওয়ার্ড প্রদান করেন, তবে এটি SUCCESS রিটার্ন করবে, নতুবা ERROR রিটার্ন করবে।
  • username এবং password প্রোপার্টি ফর্ম ডেটা গ্রহণ করার জন্য তৈরি করা হয়েছে।

Step 2: Struts 2 কনফিগারেশন ফাইল (struts.xml)

struts.xml ফাইলটি অ্যাকশন ক্লাস এবং তার ফলাফল কনফিগার করার জন্য ব্যবহৃত হয়।

<struts>
    <package name="default" extends="struts-default">
        
        <!-- Action configuration -->
        <action name="login" class="com.example.action.LoginAction">
            <result name="success">/home.jsp</result>
            <result name="error">/login.jsp</result>
        </action>

    </package>
</struts>

এখানে:

  • action name="login": login নামক রিকোয়েস্ট হ্যান্ডেল করার জন্য LoginAction ক্লাসটি মেপ করা হয়েছে।
  • class="com.example.action.LoginAction": এটি LoginAction ক্লাসের প্যাকেজ এবং ক্লাসের নাম।
  • result: সফল বা ব্যর্থ হলে ইউজারকে home.jsp অথবা login.jsp পৃষ্ঠায় রিডাইরেক্ট করা হবে।

Step 3: JSP ফাইল (UI ফাইল)

login.jsp (ফর্ম ইনপুট পেজ)

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head><title>Login Form</title></head>
<body>
    <h2>Login</h2>
    <s:form action="login" method="post">
        <s:textfield name="username" label="Username"/>
        <s:password name="password" label="Password"/>
        <s:submit value="Login"/>
    </s:form>
</body>
</html>

এখানে:

  • s:form এবং অন্যান্য struts-tags ব্যবহার করা হয়েছে ফর্ম তৈরি করতে, যেখানে ব্যবহারকারী তার ইউজারনেম এবং পাসওয়ার্ড প্রদান করতে পারবেন।
  • action="login" অ্যাকশন নামটি struts.xml এর action কনফিগারেশন অনুযায়ী প্রেরিত হবে।

Step 4: সফল রেজাল্ট এবং ত্রুটি (home.jsp)

home.jsp (সফল লগইন পেজ)

<html>
<head><title>Home Page</title></head>
<body>
    <h2>Welcome, you are logged in!</h2>
</body>
</html>

login.jsp (ত্রুটির পেজ)

<html>
<head><title>Login Failed</title></head>
<body>
    <h2>Invalid username or password. Please try again.</h2>
</body>
</html>

এখানে:

  • home.jsp পৃষ্ঠাটি সফল লগইন হলে দেখানো হবে।
  • login.jsp পৃষ্ঠাটি যদি লগইন ব্যর্থ হয় তবে দেখানো হবে, যাতে ব্যবহারকারীকে পুনরায় চেষ্টা করার জন্য বলা হবে।

সারাংশ

Struts 2-এ Custom Action ক্লাস তৈরি করা খুবই সহজ এবং তা মূলত ব্যবসায়িক লজিক বা অ্যাকশন লজিক প্রোসেস করার জন্য ব্যবহৃত হয়। আপনি ActionSupport অথবা Action ইন্টারফেস এক্সটেন্ড করে অ্যাকশন ক্লাস তৈরি করতে পারেন এবং struts.xml ফাইলে সেই অ্যাকশন ক্লাসের কনফিগারেশন করতে পারেন। এই প্রক্রিয়ায় আপনি ইউজারের ইনপুট, ভ্যালিডেশন, এবং প্রাসঙ্গিক রেজাল্ট পেজে রিডাইরেক্ট করার কার্যকলাপ পরিচালনা করতে পারেন।

Content added By

Struts 2 একটি MVC (Model-View-Controller) ফ্রেমওয়ার্ক, যেখানে Action ক্লাসটি Controller এর ভূমিকা পালন করে। struts.xml ফাইলটি Struts 2 অ্যাপ্লিকেশন কনফিগারেশন ফাইল হিসেবে ব্যবহৃত হয়, যা অ্যাকশন, রেজাল্ট এবং ইন্টারসেপ্টর কনফিগার করার জন্য ব্যবহৃত হয়।

Action কনফিগারেশন

Struts 2 এর Action কনফিগারেশন মূলত struts.xml ফাইলে করা হয়। এখানে আমরা নির্ধারণ করি কোন অ্যাকশন ক্লাসটি কোন রিকোয়েস্ট প্রক্রিয়া করবে এবং কোন রেজাল্ট (ভিউ) দেখানো হবে। Action ক্লাস এবং তার সংশ্লিষ্ট ভিউ (JSP বা অন্য কিছু) কনফিগার করার জন্য struts.xml ফাইলটি ব্যবহৃত হয়।

Struts 2 Action কনফিগারেশন এর মূল উপাদান

  1. Action Mapping:
    প্রতিটি URL প্যাটার্নের জন্য একটি নির্দিষ্ট অ্যাকশন ক্লাসের সাথে মাপিং তৈরি করা হয়।
  2. Result:
    এটি প্রতিটি অ্যাকশন ক্লাসের জন্য একটি ভিউ রেজাল্ট (যেমন, JSP পৃষ্ঠা) কনফিগার করে, যা ইউজারকে দেখানো হয়।
  3. Package:
    Struts 2 এর কনফিগারেশন প্যাকেজের মাধ্যমে অ্যাকশন ক্লাসগুলি গোষ্ঠীবদ্ধ করা যায়।

Struts 2 এর struts.xml কনফিগারেশন উদাহরণ

১. Basic Action কনফিগারেশন

এই উদাহরণে, একটি HelloAction অ্যাকশন ক্লাস তৈরি করা হয়েছে যা একটি সিম্পল মেসেজ রিটার্ন করবে।

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

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <!-- Action কনফিগারেশন -->
        <action name="hello" class="com.example.HelloAction">
            <result>/hello.jsp</result>  <!-- Result যা action সম্পন্ন হলে দেখানো হবে -->
        </action>
    </package>
</struts>

HelloAction.java (Action ক্লাস):

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {
    private String message;

    public String execute() {
        message = "Hello, Struts 2!";
        return SUCCESS;  // Action Result
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

hello.jsp (Result):

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
    <body>
        <h2><s:property value="message" /></h2>
    </body>
</html>

ব্যাখ্যা:

  • struts.xml ফাইলের মধ্যে, আমরা একটি অ্যাকশন নামকরণ করেছি hello। যখন ইউজার /hello URL অ্যাক্সেস করবে, তখন এটি HelloAction ক্লাসের execute() মেথড কল করবে এবং এর রিটার্ন ভ্যালু SUCCESS হলে, hello.jsp ভিউ রেন্ডার হবে।
  • execute() মেথডে একটি সিম্পল মেসেজ তৈরি করা হয়েছে, যা hello.jsp তে প্রদর্শিত হবে।

২. Action Parameters এবং Result Customization

Struts 2 এর action ট্যাগে আপনি কাস্টম parameters এবং results কনফিগার করতে পারেন। এতে অ্যাকশন ক্লাসের আর্গুমেন্ট ভ্যালু এবং ফলাফল আরো কাস্টমাইজড হতে পারে।

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

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="greet" class="com.example.GreetAction">
            <result name="success">/greet.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

GreetAction.java (Action ক্লাস):

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class GreetAction extends ActionSupport {
    private String name;

    public String execute() {
        if (name == null || name.trim().isEmpty()) {
            return ERROR;
        }
        return SUCCESS;
    }

    public String getName() {
        return name;
    }

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

greet.jsp (Success Result):

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

error.jsp (Error Result):

<html>
    <body>
        <h2>Invalid Input. Please provide a name.</h2>
    </body>
</html>

ব্যাখ্যা:

  • এখানে, GreetAction ক্লাসটি name প্যারামিটার গ্রহণ করে। যদি name প্যারামিটার খালি বা null হয়, তবে ERROR রেজাল্ট রিটার্ন হবে এবং error.jsp ভিউ প্রদর্শিত হবে।
  • অন্যথায়, SUCCESS রেজাল্ট রিটার্ন হলে greet.jsp তে ব্যবহারকারীর নাম দেখানো হবে।

৩. Multiple Results এবং Redirect

Struts 2 তে আপনি multiple results ব্যবহার করতে পারেন, যা বিভিন্ন ফলাফল অনুযায়ী বিভিন্ন ভিউ শো করতে সাহায্য করে। এছাড়া, আপনি redirect এবং forward ব্যবহার করে রিকোয়েস্ট রিডাইরেক্ট করতে পারেন।

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

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.example.LoginAction">
            <result name="success">/home.jsp</result>
            <result name="loginError" type="redirect">/login.jsp</result>
        </action>
    </package>
</struts>

LoginAction.java (Action ক্লাস):

package com.example;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    private String username;
    private String password;

    public String execute() {
        if ("admin".equals(username) && "password".equals(password)) {
            return SUCCESS;
        }
        return "loginError";
    }

    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;
    }
}

ব্যাখ্যা:

  • এখানে, LoginAction ক্লাসটি ইউজারের username এবং password ভ্যালু যাচাই করে। যদি সঠিক হয়, তবে SUCCESS রিটার্ন করবে এবং home.jsp দেখানো হবে।
  • অন্যথায়, loginError রিটার্ন করলে রিডাইরেক্ট হয়ে login.jsp পেজে চলে যাবে।

সারাংশ

Struts 2 এর Action কনফিগারেশন struts.xml ফাইলে করা হয়। এখানে আপনি অ্যাকশন নাম, ক্লাস, রেজাল্ট (ভিউ) এবং কাস্টম প্যারামিটার কনফিগার করতে পারেন। Struts 2 তে সহজে একাধিক রেজাল্ট এবং ভিউ কাস্টমাইজ করা সম্ভব, এবং আপনি redirect, forward, error, success ইত্যাদি ফলাফল ব্যবহার করে অ্যাকশন প্রক্রিয়া পরিচালনা করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...