Struts 2 ফ্রেমওয়ার্কে, রিডাইরেকশন এবং স্ট্রিম রেজাল্ট টাইপগুলি অ্যাপ্লিকেশনটির ব্যবহারকারী অভিজ্ঞতা এবং কাজের প্রবাহ উন্নত করতে ব্যবহৃত হয়। যখন আপনি একটি অ্যাকশন সম্পন্ন করেন এবং নতুন একটি পেজ বা URL তে রিডাইরেক্ট করতে চান, বা কোনো ফাইল বা ডেটা স্ট্রিম করতে চান, তখন এই ফিচারগুলো খুবই কার্যকর।
এই অধ্যায়ে আমরা Redirect, RedirectAction, এবং Stream Result Types এর ব্যবহার ব্যাখ্যা করব।
১. Redirect
Redirect হল একটি HTTP রিডাইরেক্ট প্রক্রিয়া, যা ক্লায়েন্টকে অন্য একটি URL তে নিয়ে যায়। Struts 2 তে, আপনি অ্যাকশন থেকে একটি রিডাইরেক্ট রেজাল্ট রিটার্ন করতে পারেন, যা ব্যবহারকারীকে একটি নতুন URL তে রিডাইরেক্ট করবে। রিডাইরেক্ট সাধারণত একটি অ্যাকশন সম্পূর্ণ করার পর নতুন পেজ বা রিসোর্সে গাইড করতে ব্যবহৃত হয়।
উদাহরণ: Redirect ব্যবহার করা
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class RedirectAction extends ActionSupport {
@Override
public String execute() {
// রিডাইরেক্ট রিটার্ন করা
return REDIRECT + "successPage.jsp";
}
}
কোড ব্যাখ্যা:
- REDIRECT স্ট্রিংটি Struts 2 এ ব্যবহৃত একটি কনস্ট্যান্ট যা রিডাইরেক্ট রেজাল্ট নির্দেশ করে।
- "successPage.jsp" পেজের দিকে রিডাইরেক্ট করার জন্য রিটার্ন করা হয়েছে।
struts.xml কনফিগারেশন
<struts>
<package name="default" extends="struts-default">
<action name="redirect" class="com.example.RedirectAction">
<result name="redirect">redirect:successPage.jsp</result>
</action>
</package>
</struts>
এখানে, redirect অ্যাকশনটি successPage.jsp পেজে রিডাইরেক্ট করবে।
২. RedirectAction
RedirectAction Struts 2-এর একটি ফিচার যা একটি অ্যাকশন ক্লাসে নির্দেশিকা দেয় যাতে অ্যাকশন সম্পন্ন হলে এটি ক্লায়েন্টকে অন্য URL তে রিডাইরেক্ট করতে পারে। এটি struts.xml ফাইলের মধ্যে নির্দিষ্ট করা হয়, যা কনফিগারেশন সহজ করে দেয়।
RedirectAction ব্যবহার করলে অ্যাকশন প্রসেস সম্পন্ন হওয়ার পর একটি URL তে সরাসরি রিডাইরেক্ট করা হয়। এটি খুবই সুবিধাজনক যখন আপনি ইন্টারনাল অ্যাকশনের পরিবর্তে এক্সটার্নাল URL তে রিডাইরেক্ট করতে চান।
উদাহরণ: RedirectAction ব্যবহার করা
<struts>
<package name="default" extends="struts-default">
<action name="submitForm" class="com.example.FormAction">
<result type="redirect">/successPage.jsp</result>
</action>
</package>
</struts>
এখানে, redirect টাইপের ব্যবহার করা হয়েছে যাতে অ্যাকশন successPage.jsp পেজে রিডাইরেক্ট করতে পারে।
Action ক্লাস উদাহরণ
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class FormAction extends ActionSupport {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String execute() {
// Form processing logic
if (userName != null && !userName.isEmpty()) {
return SUCCESS;
}
return INPUT;
}
}
এখানে, FormAction ক্লাসে userName ইনপুট ফিল্ডের জন্য ডেটা প্রক্রিয়া করা হয়েছে এবং SUCCESS রিটার্ন হলে ক্লায়েন্ট successPage.jsp পেজে রিডাইরেক্ট হবে।
৩. Stream Result Types
Stream Result Types Struts 2 এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে ফাইল বা ডেটা স্ট্রিম করতে সহায়তা করে, যেমন ডাউনলোডযোগ্য ফাইল বা ডেটা সঞ্চালন। সাধারণত stream রেজাল্ট ব্যবহার করা হয় যখন আপনাকে একটি ফাইল বা ডেটা রিটার্ন করতে হয় এবং এটি HTTP রেসপন্স হিসেবে ক্লায়েন্টে পাঠাতে হয়।
Struts 2 এ Stream Result সাধারণত ব্যবহার করা হয় ফাইল ডাউনলোডের জন্য, যেমন PDF, Excel, বা CSV ফাইল ডাউনলোড করার জন্য।
উদাহরণ: Stream Result ব্যবহার করা
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import java.io.FileInputStream;
import java.io.InputStream;
public class DownloadAction extends ActionSupport {
private String fileName;
private InputStream fileInputStream;
public InputStream getFileInputStream() {
return fileInputStream;
}
public String getFileName() {
return fileName;
}
@Override
public String execute() {
fileName = "example.pdf";
try {
// ফাইলের ইনপুট স্ট্রিম সেট করা
fileInputStream = new FileInputStream("path/to/example.pdf");
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
কোড ব্যাখ্যা:
- fileInputStream-এ ডাউনলোডের জন্য একটি ফাইলের ইনপুট স্ট্রিম রাখা হয়েছে।
- getFileInputStream() মেথডটি স্ট্রিম রিটার্ন করে যা stream রেজাল্টের মাধ্যমে ক্লায়েন্টে পাঠানো হয়।
struts.xml কনফিগারেশন
<struts>
<package name="default" extends="struts-default">
<action name="downloadFile" class="com.example.DownloadAction">
<result name="success" type="stream">
<param name="contentType">application/pdf</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
</package>
</struts>
কোড ব্যাখ্যা:
- type="stream": এটি নির্দেশ করে যে stream result টাইপ ব্যবহার করা হচ্ছে।
- contentType: ক্লায়েন্টকে পাঠানো ফাইলের MIME টাইপ।
- inputName: স্ট্রিম অবজেক্টের নাম।
- contentDisposition: ফাইল ডাউনলোডের জন্য একটি ফাইল নাম সেট করা হয়েছে।
উপসংহার
Redirect, RedirectAction, এবং Stream Result Types Struts 2 ফ্রেমওয়ার্কে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি আপনাকে অ্যাকশন প্রসেসিংয়ের পর পেজ রিডাইরেকশন বা ফাইল ডাউনলোড সহ নানা কাজ করতে সহায়তা করে। Redirect এবং RedirectAction ব্যবহারের মাধ্যমে আপনি URL রিডাইরেক্ট করতে পারেন, এবং Stream Result Types ব্যবহার করে আপনি ফাইল বা ডেটা ক্লায়েন্টে স্ট্রিম করতে পারেন। Struts 2-এ এই বৈশিষ্ট্যগুলো ব্যবহার করে আপনি আরো কার্যকরী এবং ডাইনামিক অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more