Struts 2 একটি MVC (Model-View-Controller) ফ্রেমওয়ার্ক যা বিভিন্ন Result Types সরবরাহ করে। Result হল অ্যাকশন ক্লাসের output যা JSP, Velocity, Freemarker, বা XML ফাইলের মধ্যে ব্যবহারকারীর প্রাসঙ্গিক তথ্য দেখায়। Result Type-এর মাধ্যমে আমরা জানাতে পারি যে, অ্যাকশন ক্লাসটি কোন ধরনের ভিউ (UI) পৃষ্ঠায় রেসপন্স করবে।
Struts 2 বেশ কিছু ভিন্ন Result Type সমর্থন করে, যেমন:
- JSP (
/WEB-INF/jsp/filename.jsp) - Redirect (
redirect://url) - Freemarker (
/WEB-INF/freemarker/filename.ftl) - Velocity (
/WEB-INF/velocity/filename.vm) - Dispatcher (যে কোনো অন্য URL)
- JSON (JSON Response)
এখানে, আমরা Struts 2 এর বিভিন্ন Result Type কনফিগারেশন সহ উদাহরণ দেখব।
১. JSP Result Type
JSP Result Type একটি সাধারণ এবং জনপ্রিয় Result Type যা JSP ফাইলের মাধ্যমে ভিউ বা UI তৈরি করতে ব্যবহৃত হয়। এটি সবচেয়ে বেশি ব্যবহৃত হয় যখন আপনি JSP ব্যবহার করে একটি HTML পৃষ্ঠায় ডেটা রেন্ডার করতে চান।
উদাহরণ: JSP Result Type
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String message;
public String execute() {
message = "Hello, Struts 2!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
- struts.xml Configuration:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="hello" class="com.example.HelloWorldAction">
<result>/WEB-INF/jsp/hello.jsp</result>
</action>
</package>
</struts>
- JSP Page (hello.jsp):
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2>Message: <s:property value="message" /></h2>
</body>
</html>
ব্যাখ্যা:
- Action Class:
HelloWorldActionক্লাসে একটিmessageফিল্ড সেট করা হয়েছে এবংSUCCESSরিটার্ন করা হয়েছে। - struts.xml:
hello.jspফাইলটি রিটার্ন করার জন্য কনফিগার করা হয়েছে। - hello.jsp: এটি ব্যবহারকারীর কাছে বার্তা প্রদর্শন করবে, যেখানে
messageপ্রপার্টি প্রদর্শিত হবে।
২. Redirect Result Type
Redirect Result Type ব্যবহারকারীকে একটি নতুন URL বা পৃষ্ঠায় রিডিরেক্ট করতে ব্যবহৃত হয়। এটি HTTP Redirect ব্যবহার করে এবং সাধারণত POST-Redirect-GET (PRG) প্যাটার্নে ব্যবহৃত হয়।
উদাহরণ: Redirect Result Type
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
public class RedirectAction extends ActionSupport {
private String name;
public String execute() {
name = "John Doe";
return REDIRECT; // Redirect to another action or URL
}
public String getName() {
return name;
}
}
- struts.xml Configuration:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="redirectAction" class="com.example.RedirectAction">
<result name="redirect">redirect:/redirectedPage.jsp</result>
</action>
</package>
</struts>
ব্যাখ্যা:
- Action Class:
RedirectActionক্লাসটি রিডিরেক্ট কনফিগার করে।REDIRECTরিটার্ন করলে সেটিstruts.xmlকনফিগারেশনে নির্দেশিত URL বা পৃষ্ঠায় রিডিরেক্ট করবে।
৩. JSON Result Type
Struts 2 JSON রেসপন্সের মাধ্যমে ক্লায়েন্টকে ডেটা পাঠানোর জন্য JSON রেজাল্ট টাইপ সমর্থন করে। এটি বিশেষভাবে API বা অ্যাজাক্স কলের জন্য উপকারী।
উদাহরণ: JSON Result Type
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class JsonAction extends ActionSupport {
private String username;
public String execute() {
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
- struts.xml Configuration:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="jsonAction" class="com.example.JsonAction">
<result type="json">
<param name="root">username</param>
</result>
</action>
</package>
</struts>
ব্যাখ্যা:
- Action Class:
JsonActionক্লাসেusernameপ্রপার্টি ডিফাইন করা হয়েছে। - struts.xml: JSON রেজাল্ট টাইপ কনফিগার করা হয়েছে, যা username রিটার্ন করবে।
৪. Freemarker Result Type
Struts 2 Freemarker টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক কনটেন্ট রেন্ডার করতে সহায়ক। এটি টেমপ্লেট ফাইল থেকে ডেটা প্রদর্শন করতে ব্যবহৃত হয়।
উদাহরণ: Freemarker Result Type
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
public class FreemarkerAction extends ActionSupport {
private String username;
public String execute() {
username = "John Doe";
return SUCCESS;
}
public String getUsername() {
return username;
}
}
- struts.xml Configuration:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="freemarkerAction" class="com.example.FreemarkerAction">
<result type="freemarker">/WEB-INF/freemarker/welcome.ftl</result>
</action>
</package>
</struts>
- Freemarker Template (welcome.ftl):
<html>
<body>
<h2>Welcome, ${username}!</h2>
</body>
</html>
ব্যাখ্যা:
- Action Class:
FreemarkerActionক্লাসেusernameসেট করা হয়েছে। - struts.xml:
freemarkerরেজাল্ট টাইপ দিয়ে Freemarker টেমপ্লেট রেন্ডার করা হয়েছে। - welcome.ftl: এটি Freemarker টেমপ্লেট, যা
usernameদেখায়।
৫. Velocity Result Type
Struts 2 Velocity টেমপ্লেট ইঞ্জিন ব্যবহার করে ডাইনামিক কনটেন্ট তৈরি করতে সমর্থন করে।
উদাহরণ: Velocity Result Type
- Action Class:
import com.opensymphony.xwork2.ActionSupport;
public class VelocityAction extends ActionSupport {
private String username;
public String execute() {
username = "John Doe";
return SUCCESS;
}
public String getUsername() {
return username;
}
}
- struts.xml Configuration:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="velocityAction" class="com.example.VelocityAction">
<result type="velocity">/WEB-INF/velocity/welcome.vm</result>
</action>
</package>
</struts>
- Velocity Template (welcome.vm):
<html>
<body>
<h2>Welcome, $username!</h2>
</body>
</html>
ব্যাখ্যা:
- Action Class:
VelocityActionক্লাসেusernameপ্রপার্টি সেট করা হয়েছে। - struts.xml: velocity রেজাল্ট টাইপ কনফিগার করা হয়েছে।
- welcome.vm: এটি Velocity টেমপ্লেট যা
usernameদেখায়।
সারাংশ
Struts 2 একটি খুব শক্তিশালী ফ্রেমওয়ার্ক এবং এতে বিভিন্ন Result Types সমর্থিত যা ডেভেলপারদের জন্য বিভিন্ন ভিউ (UI) টেমপ্লেটের মাধ্যমে ডেটা রেন্ডার করার ক্ষমতা প্রদান করে। JSP, Redirect, JSON, Freemarker, এবং Velocity Result Types Struts 2 অ্যাপ্লিকেশনে অনেক কার্যকরী ভিউ তৈরির জন্য ব্যবহৃত হয়। আপনাকে যা প্রয়োজন, সেক্ষেত্রে উপযুক্ত Result Type কনফিগার করার মাধ্যমে আপনি একটি কার্যকরী ও স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more