Struts 2 হল একটি জনপ্রিয় জাভা ওয়েব ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। JSP (JavaServer Pages) হল একটি প্রযুক্তি যা Java ব্যবহার করে ডাইনামিক ওয়েব পেজ তৈরি করতে ব্যবহৃত হয়। Struts 2 এবং JSP একে অপরের সাথে খুব সহজে ইন্টিগ্রেট করা যায়, যেখানে Struts 2 অ্যাকশন কন্ট্রোলারের কাজ করে এবং JSP ইউজার ইন্টারফেস (UI) প্রদান করে। এই সংমিশ্রণের মাধ্যমে, আপনি শক্তিশালী এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।
Struts 2 এবং JSP ইন্টিগ্রেশন: বেসিক কাঠামো
Struts 2 তে Action ক্লাস থেকে JSP ভিউতে ডেটা পাঠানোর জন্য একটি Result ব্যবহার করা হয়। অ্যাকশন ক্লাস ActionSupport বা Action ইন্টারফেস এক্সটেন্ড করে তৈরি করা হয় এবং এই ক্লাস থেকে ডেটা সংগ্রহ করা হয়, যা পরে JSP ফাইলের মাধ্যমে রেন্ডার করা হয়।
Struts 2 এবং JSP ইন্টিগ্রেশন এর প্রক্রিয়া
১. Action ক্লাস তৈরি করা
Struts 2 তে, একটি Action ক্লাস তৈরি করা হয় যা ব্যবসায়িক লজিক পরিচালনা করে। এটি একটি সাধারণ Java ক্লাস হতে পারে যা ActionSupport ক্লাস এক্সটেন্ড করে।
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 and JSP!";
return SUCCESS; // এটি JSP রেজাল্ট রেন্ডার করার জন্য ব্যবহৃত হবে
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
ব্যাখ্যা:
- HelloAction ক্লাসটি একটি String প্রোপার্টি
messageধারণ করে। - execute() মেথডে একটি সাধারণ মেসেজ সেট করা হয়েছে, যা পরে JSP পৃষ্ঠায় প্রদর্শিত হবে।
- SUCCESS রিটার্ন করলে এটি struts.xml কনফিগারেশন অনুযায়ী সংশ্লিষ্ট JSP পৃষ্ঠায় রিডিরেক্ট করবে।
২. struts.xml কনফিগারেশন
Struts 2 কনফিগারেশনে action এবং তার সাথে সংশ্লিষ্ট JSP রেজাল্ট সেট করা হয়।
struts.xml:
<struts>
<package name="default" namespace="/" extends="struts-default">
<!-- Action কনফিগারেশন -->
<action name="hello" class="com.example.HelloAction">
<result>/hello.jsp</result>
</action>
</package>
</struts>
ব্যাখ্যা:
name="hello": এটি URL প্যাটার্ন যা /hello অ্যাক্সেস করার মাধ্যমে এই অ্যাকশন ক্লাসটি কল হবে।class="com.example.HelloAction": এটি অ্যাকশন ক্লাসের ফুল পাথ যা HelloAction ক্লাসে পয়েন্ট করছে।<result>/hello.jsp</result>: অ্যাকশন ক্লাসেরSUCCESSরিটার্ন হলে, hello.jsp পৃষ্ঠাটি রেন্ডার হবে।
৩. JSP পৃষ্ঠা তৈরি করা
JSP পৃষ্ঠায় Struts 2 ট্যাগ লাইব্রেরি ব্যবহার করে Action ক্লাস থেকে ডেটা প্রদর্শন করা যায়।
hello.jsp:
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2><s:property value="message" /></h2>
</body>
</html>
ব্যাখ্যা:
- <%@ taglib uri="/struts-tags" prefix="s" %>: এই লাইনে Struts 2 ট্যাগ লাইব্রেরি ব্যবহার করা হয়েছে।
- <s:property value="message" />: এটি অ্যাকশন ক্লাসের
messageপ্রপার্টির মান প্রদর্শন করবে।
Complete Workflow: Struts 2 এবং JSP ইন্টিগ্রেশন
- Request: ইউজার
/helloURLটি অ্যাক্সেস করে। - Action: Struts 2 HelloAction অ্যাকশন ক্লাসটি কল করে এবং
messageপ্রোপার্টি সেট করে। - Result:
SUCCESSরিটার্ন হলে, এটি hello.jsp পৃষ্ঠায় রিডিরেক্ট করে। - JSP:
messageপ্রোপার্টির মান hello.jsp তে প্রদর্শিত হয়।
Multiple Results (JSP Page Redirect)
Struts 2 তে আপনি অ্যাকশন ক্লাস থেকে বিভিন্ন Result ব্যবহার করতে পারেন। যদি আপনাকে বিভিন্ন JSP পৃষ্ঠায় রিডিরেক্ট করতে হয়, তবে আপনি success, error ইত্যাদি রেজাল্ট নাম ব্যবহার করতে পারেন।
struts.xml (Multiple Result):
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="com.example.LoginAction">
<result name="success">/home.jsp</result>
<result name="loginError">/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"; // Error page
}
// Getter and Setter
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;
}
}
home.jsp (Success Page):
<html>
<body>
<h2>Welcome, <s:property value="username" /></h2>
</body>
</html>
login.jsp (Error Page):
<html>
<body>
<h2>Invalid Login! Please try again.</h2>
</body>
</html>
Conclusion
Struts 2 এবং JSP ইন্টিগ্রেশন খুবই শক্তিশালী, কারণ এটি MVC আর্কিটেকচার অনুসরণ করে এবং Action ক্লাসের মাধ্যমে JSP পৃষ্ঠায় ডেটা পাঠানো সম্ভব করে। এর মাধ্যমে আপনি শক্তিশালী, স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে ব্যবসায়িক লজিক এবং ইউজার ইন্টারফেস আলাদা থাকে এবং সহজে মডিফাই করা যায়।
Struts 2 একটি শক্তিশালী ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক যা Model-View-Controller (MVC) আর্কিটেকচার অনুসরণ করে। Struts 2 সাধারণত JSP (Java Server Pages) এর সাথে একত্রে ব্যবহৃত হয়, যা ব্যবহারকারীর ইন্টারফেসের (UI) জন্য ব্যবহৃত হয়। JSP এর মাধ্যমে আমরা ডায়নামিক ওয়েব পেজ তৈরি করতে পারি, যেখানে Struts 2 অ্যাকশন লজিক এবং মডেল ডেটা ব্যবহার করা হয়।
Struts 2 এবং JSP এর মধ্যে ইন্টিগ্রেশন সহজ এবং শক্তিশালী। Struts 2 অ্যাকশন ক্লাসের সাথে JSP পেজ কনফিগার করা হয়, যেখানে অ্যাকশন ক্লাস থেকে ডেটা অ্যাক্সেস এবং ফলাফল প্রদর্শন করা হয়।
Struts 2 এবং JSP এর মধ্যে Integration
Struts 2 এর মাধ্যমে JSP পেজে অ্যাকশন ক্লাসের ডেটা পাঠানো এবং রেসপন্স করা খুবই সহজ। Struts 2 এর কনফিগারেশন ফাইল (যেমন struts.xml) এর মাধ্যমে আপনি অ্যাকশন এবং রেজাল্ট কনফিগার করতে পারেন এবং JSP পেজে সেই রেজাল্ট প্রক্রিয়াকৃত ডেটা প্রদর্শন করতে পারেন।
1. Action Class তৈরি করা
Struts 2 এর Action Class অ্যাকশনের লজিক এবং ডেটা প্রক্রিয়াকরণ করে। অ্যাকশন ক্লাসের মাধ্যমে ডেটা থেকে প্রাপ্ত ফলাফল JSP পেজে পাঠানো হয়।
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String name;
// Getter and Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// Execute Method
public String execute() {
if (name != null) {
return SUCCESS;
}
return ERROR;
}
}
এখানে, HelloWorldAction একটি অ্যাকশন ক্লাস যা ব্যবহারকারীর নাম গ্রহণ করে এবং সেই অনুযায়ী একটি ফলাফল (SUCCESS বা ERROR) রিটার্ন করে।
2. struts.xml ফাইলে অ্যাকশন কনফিগার করা
struts.xml ফাইলটি Struts 2 এর কনফিগারেশন ফাইল, যেখানে অ্যাকশন ক্লাস এবং রেজাল্ট কনফিগার করা হয়। এখানে অ্যাকশন এবং রেজাল্ট এর সাথে JSP পেজ সংযুক্ত করা হয়।
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="helloWorld" class="com.example.HelloWorldAction">
<result name="success">/WEB-INF/content/success.jsp</result>
<result name="error">/WEB-INF/content/error.jsp</result>
</action>
</package>
</struts>
এখানে, helloWorld অ্যাকশনটি HelloWorldAction ক্লাসের সাথে যুক্ত এবং তার ফলাফল অনুযায়ী success.jsp বা error.jsp রিডিরেক্ট করবে।
3. JSP পেজে ডেটা প্রদর্শন করা
JSP পেজে অ্যাকশন ক্লাসের থেকে প্রাপ্ত ডেটা প্রদর্শন করতে Struts 2 Tag Libraries ব্যবহার করা হয়। উদাহরণস্বরূপ, <s:property> ট্যাগ ব্যবহার করে অ্যাকশন ক্লাসের name প্রপার্টি JSP পেজে প্রদর্শন করা যায়।
success.jsp
<html>
<body>
<h1>Welcome, <s:property value="name" /></h1>
</body>
</html>
এখানে, <s:property> ট্যাগ ব্যবহার করে name প্রপার্টিটি HelloWorldAction ক্লাস থেকে সংগ্রহ করা হচ্ছে এবং এটি success.jsp পেজে দেখানো হচ্ছে।
error.jsp
<html>
<body>
<h1>Error: Name is missing!</h1>
</body>
</html>
এটি একটি সাধারণ error.jsp পেজ যেখানে ব্যবহারকারী যদি কোনও নাম প্রদান না করেন, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
4. JSP পেজে ব্যবহারকারী ইনপুট নেওয়া
JSP পেজে ব্যবহারকারীর ইনপুট গ্রহণ করার জন্য <s:textfield> ট্যাগ ব্যবহার করা যেতে পারে।
<html>
<body>
<s:form action="helloWorld" method="post">
<s:textfield label="Enter your name" name="name" />
<s:submit value="Submit" />
</s:form>
</body>
</html>
এখানে, <s:textfield> ট্যাগ ব্যবহার করা হয়েছে যাতে ব্যবহারকারী তাদের নাম ইনপুট করতে পারে। <s:form> ট্যাগ ব্যবহার করে ফর্মটি সাবমিট করা হচ্ছে যা helloWorld অ্যাকশনের সাথে সংযুক্ত।
Struts 2 এর JSP এর সাথে বিশেষ ফিচারসমূহ
1. Struts 2 Tag Libraries
Struts 2 ট্যাগ লাইব্রেরি JSP পেজে ব্যবহার করা হয়, যা বিভিন্ন সুবিধা প্রদান করে। কিছু সাধারণ ট্যাগ:
- <s:form>: ফর্ম তৈরি করতে ব্যবহৃত হয়।
- <s:textfield>: টেক্সট ফিল্ড তৈরি করতে ব্যবহৃত হয়।
- <s:submit>: সাবমিট বাটন তৈরি করতে ব্যবহৃত হয়।
- <s:property>: অ্যাকশন ক্লাসের প্রপার্টি JSP পেজে প্রদর্শন করতে ব্যবহৃত হয়।
- <s:select>: ড্রপডাউন তালিকা তৈরি করতে ব্যবহৃত হয়।
2. Data Binding
Struts 2 Data Binding ফিচার সমর্থন করে, যার মাধ্যমে অ্যাকশন ক্লাসের প্রপার্টি এবং JSP পেজের ফর্ম ফিল্ডগুলো সহজে ম্যাপ করা যায়। যেমন, <s:textfield> ট্যাগের মাধ্যমে ডেটা অ্যাকশন ক্লাসের প্রপার্টির সাথে বাইন্ডিং করা হয়।
3. Validation Integration
Struts 2 এর সাথে JSP ব্যবহার করে, ফর্ম ইনপুট ভ্যালিডেশন খুবই সহজে করা যায়। ValidationInterceptor ইন্টারসেপ্টরের মাধ্যমে আপনি ব্যবহারকারীর ইনপুট ভ্যালিডেশন করতে পারেন।
উপসংহার
Struts 2 এবং JSP Integration এর মাধ্যমে আপনি সহজেই ডায়নামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে Struts 2 অ্যাকশন ক্লাস ডেটা প্রক্রিয়া করে এবং JSP পেজে সেই ডেটা প্রদর্শন করে। Struts 2 ট্যাগ লাইব্রেরি এবং ডেটা বাইন্ডিং ফিচারের মাধ্যমে JSP পেজে ব্যবহারকারী ইন্টারফেস তৈরির কাজ আরও সহজ হয়ে যায়। Struts 2 এবং JSP এর সংমিশ্রণ ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও শক্তিশালী এবং স্কেলেবল করে তোলে।
Struts 2 একটি শক্তিশালী Java ওয়েব ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে। এখানে Model ডাটা এবং লজিকের প্রতিনিধিত্ব করে, View হল ইউজারের ইন্টারফেস, এবং Controller অ্যাকশন এবং প্রোসেসিংয়ের মাধ্যমে রিকোয়েস্ট হ্যান্ডল করে। View হিসাবে সাধারণত JSP (Java Server Pages) ব্যবহৃত হয়, যা ইউজার ইন্টারফেস তৈরি করতে ব্যবহৃত হয়।
Struts 2 এ View তৈরি করতে JSP ব্যবহৃত হয় এবং এখানে আপনাকে Struts 2 tags (যেমন <s:form>, <s:textfield>, <s:submit>) ব্যবহার করতে হবে, যা Struts 2 ফ্রেমওয়ার্কের সাথে ইন্টিগ্রেটেড।
JSP এ View তৈরি করার প্রক্রিয়া
Struts 2-এ JSP ব্যবহার করে View তৈরি করতে হলে আপনাকে নিচের ধাপগুলি অনুসরণ করতে হবে:
- Action Class তৈরি করা: অ্যাকশন ক্লাসে লজিক নির্ধারণ করুন।
- struts.xml কনফিগারেশন: অ্যাকশন ক্লাস এবং রেজাল্ট পেজের জন্য কনফিগারেশন করুন।
- JSP ফাইল তৈরি করা: ইউজার ইন্টারফেস তৈরি করতে JSP ব্যবহার করুন এবং Struts 2 ট্যাগ ব্যবহার করুন।
উদাহরণ: Struts 2 এ JSP ব্যবহার করে View তৈরি করা
ধরা যাক, একটি সিম্পল অ্যাপ্লিকেশন তৈরি করা হচ্ছে, যা ব্যবহারকারীর নাম গ্রহণ করবে এবং স্বাগতম বার্তা প্রদর্শন করবে।
1. Action Class (HelloWorldAction.java)
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
private String name;
// Getter and Setter for name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// Execute method
public String execute() {
if (name == null || name.isEmpty()) {
return ERROR; // If name is empty, show error page
}
return SUCCESS; // If name is provided, show success page
}
}
এখানে HelloWorldAction ক্লাসটি একটি name প্রপার্টি গ্রহণ করে এবং যদি নাম পাওয়া যায়, তাহলে SUCCESS রিটার্ন করে। যদি নাম খালি থাকে, তবে ERROR রিটার্ন হবে।
2. struts.xml (Action Mapping)
<struts>
<package name="default" extends="struts-default">
<action name="hello" class="com.example.HelloWorldAction">
<result name="success">/hello.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
এখানে, struts.xml ফাইলে আমরা hello নামে একটি অ্যাকশন মেপিং করেছি, যা HelloWorldAction ক্লাসের সাথে সম্পর্কিত। সফল হলে hello.jsp এবং ত্রুটির ক্ষেত্রে error.jsp রিটার্ন করবে।
3. JSP ফাইল (hello.jsp)
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h2>Welcome, <s:property value="name" /></h2>
<p>Your name is: <s:property value="name" /></p>
</body>
</html>
এখানে, <s:property> ট্যাগ ব্যবহার করা হয়েছে যাতে name প্রপার্টির মান JSP পৃষ্ঠায় প্রদর্শিত হয়।
4. JSP ফাইল (error.jsp)
<html>
<head>
<title>Error</title>
</head>
<body>
<h2>Error: Name is required!</h2>
</body>
</html>
এটি একটি সরল error.jsp ফাইল যা ব্যবহারকারী নাম প্রদান না করলে দেখানো হবে।
Struts 2 ট্যাগ লাইব্রেরি
Struts 2 JSP ট্যাগ লাইব্রেরি ব্যবহার করে আপনি খুব সহজে ফর্ম, ইনপুট, সাবমিট এবং অন্যান্য ইউজার ইন্টারফেস উপাদান তৈরি করতে পারেন। এখানে কিছু জনপ্রিয় Struts 2 ট্যাগ দেওয়া হল:
- <s:form>: ফর্ম তৈরি করার জন্য ব্যবহৃত হয়।
- <s:textfield>: একটি টেক্সট ফিল্ড তৈরি করে।
- <s:submit>: ফর্ম সাবমিট করার জন্য ব্যবহৃত হয়।
- <s:property>: অ্যাকশন ক্লাস থেকে প্রপার্টি প্রদর্শন করার জন্য ব্যবহৃত হয়।
- <s:select>: ড্রপডাউন লিস্ট তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ: ফর্ম এবং ইনপুট ফিল্ড
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Enter Your Name</title>
</head>
<body>
<h2>Enter your name:</h2>
<s:form action="hello">
<s:textfield name="name" label="Name" />
<s:submit value="Submit" />
</s:form>
</body>
</html>
এখানে, একটি ফর্ম তৈরি করা হয়েছে যেখানে ব্যবহারকারী তার নাম ইনপুট করবে এবং পরে এটি hello অ্যাকশনের মাধ্যমে প্রসেস হবে।
Struts 2 এবং AJAX সমর্থন
Struts 2 AJAX সমর্থন করে, যা অ্যাসিনক্রোনাসভাবে ইউজারের ইনপুট প্রক্রিয়া করতে এবং রেসপন্স প্রদান করতে সাহায্য করে। আপনি AJAX ফিচারগুলি ব্যবহার করে একটি অত্যন্ত ইন্টারঅ্যাকটিভ অ্যাপ্লিকেশন তৈরি করতে পারেন।
উদাহরণ: AJAX ফিচার ব্যবহার
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>AJAX Example</title>
</head>
<body>
<h2>Enter your name:</h2>
<s:form action="hello">
<s:textfield name="name" label="Name" id="nameField"/>
<s:submit value="Submit" id="submitButton" onclick="submitForm()"/>
</s:form>
<div id="result"></div>
<script>
function submitForm() {
var name = document.getElementById("nameField").value;
document.getElementById("result").innerHTML = "Hello, " + name + "!";
}
</script>
</body>
</html>
এখানে, submitForm() ফাংশনটি AJAX এর মতো কাজ করে এবং রেজাল্ট প্যানেলে নাম প্রদর্শন করে, কিন্তু পেজ রিফ্রেশ না করে।
সারাংশ
Struts 2 একটি শক্তিশালী MVC ফ্রেমওয়ার্ক যা JSP ব্যবহার করে View তৈরি করতে সহায়তা করে। Struts 2 ট্যাগ লাইব্রেরি (যেমন <s:form>, <s:textfield>, <s:submit>) ব্যবহার করে আপনি সহজে ডাইনামিক ওয়েব ফর্ম এবং ইউজার ইন্টারফেস উপাদান তৈরি করতে পারেন। JSP এ View তৈরি করা Struts 2 অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য একটি প্রক্রিয়া, যা অ্যাকশন ক্লাসের সাথে ইন্টিগ্রেটেড হয়ে ডাটা পাঠাতে এবং রিসিভ করতে সহায়তা করে। Struts 2 তে AJAX সমর্থন, ইনপুট ভ্যালিডেশন এবং ইন্টারঅ্যাকটিভ ইউজার ইন্টারফেস তৈরি করতে সহজেই ব্যবহৃত হতে পারে।
Struts 2 Tags এবং JSP কি?
Struts 2 Tags হল JSP (JavaServer Pages)-এ ব্যবহৃত একটি ট্যাগ লাইব্রেরি যা আপনাকে ডাইনামিক ওয়েব পেজ তৈরি করার জন্য সহায়তা করে। এই ট্যাগগুলি Struts 2 ফ্রেমওয়ার্কের অংশ, যা Action, Validation, Form Handling, এবং Data-binding সহ বিভিন্ন কার্যক্রম সহজে করতে সাহায্য করে। Struts 2 tags আপনাকে Model-View-Controller (MVC) আর্কিটেকচারের মধ্যে View (UI) অংশে ডেটা সন্নিবেশ এবং উপস্থাপনা সহজ করে তোলে।
JSP (JavaServer Pages) হল একটি টেকনোলজি যা ডাইনামিক ওয়েব পেজ তৈরি করতে ব্যবহৃত হয়, যেখানে HTML, CSS এবং Java কোড একত্রে ব্যবহৃত হয়। Struts 2 tags হল বিশেষ ধরনের JSP ট্যাগ যা Action এবং Form Bean এর সাথে ডেটা ইন্টিগ্রেশন করতে সক্ষম।
Struts 2 Tags এর প্রধান বৈশিষ্ট্য
Struts 2 Tags হল JSP ট্যাগ লাইব্রেরি যা আপনাকে Struts 2 অ্যাপ্লিকেশন তৈরি করার সময় সহজে ফর্ম ডেটা, অ্যাকশন রেসপন্স এবং ভ্যালিডেশন প্রক্রিয়া পরিচালনা করতে সাহায্য করে। কিছু গুরুত্বপূর্ণ Struts 2 Tags হল:
- s:form: ফর্ম তৈরি করতে ব্যবহৃত হয়, যা Action ক্লাসের সাথে ডেটা পাঠানোর জন্য ব্যবহার হয়।
- s:textfield: ইনপুট ফিল্ড তৈরি করতে ব্যবহৃত হয়।
- s:textarea: টেক্সট এরিয়া তৈরি করতে ব্যবহৃত হয়।
- s:submit: ফর্ম সাবমিট করার জন্য ব্যবহৃত হয়।
- s:select: ড্রপডাউন মেনু তৈরি করতে ব্যবহৃত হয়।
- s:checkbox: চেকবক্স তৈরি করতে ব্যবহৃত হয়।
- s:radio: রেডিও বাটন তৈরি করতে ব্যবহৃত হয়।
- s:label: ফর্মের জন্য লেবেল তৈরি করতে ব্যবহৃত হয়।
এগুলি Struts 2-এর মূল ট্যাগ যা ডাইনামিক ওয়েব ফর্ম এবং ইউজার ইনপুট এর জন্য ব্যবহৃত হয়।
JSP এর মাধ্যমে Struts 2 Tags ব্যবহার
Struts 2 Tags ব্যবহার করার জন্য আপনার প্রথমে struts-tags.tld (Tag Library Descriptor) ফাইলটি JSP পেজে ইমপোর্ট করতে হবে। সাধারণত এটি Struts 2 ফ্রেমওয়ার্কের ট্যাগ লাইব্রেরি ফাইল।
JSP ফাইলের মধ্যে ট্যাগ লাইব্রেরি ইমপোর্ট করা:
<%@ taglib prefix="s" uri="/struts-tags" %>
এটি আপনার JSP পেজে Struts 2 এর সমস্ত ট্যাগ ব্যবহার করার জন্য প্রস্তুত করবে। এর পর আপনি বিভিন্ন Struts 2 tags ব্যবহার করে ডাইনামিক ফর্ম এবং উপাদান তৈরি করতে পারেন।
উদাহরণ: একটি সিম্পল ফর্ম তৈরি করা
ধরা যাক, আমরা একটি ইউজার ফর্ম তৈরি করতে চাই যেখানে ব্যবহারকারী তার নাম এবং ইমেইল ইনপুট করবে, এবং একটি সাবমিট বাটন থাকবে। নিচের উদাহরণ দেখুন:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts 2 Form Example</title>
</head>
<body>
<h2>User Information Form</h2>
<s:form action="submitForm" method="post">
<s:textfield name="user.name" label="Name" />
<s:textfield name="user.email" label="Email" />
<s:submit value="Submit" />
</s:form>
</body>
</html>
এখানে:
- s:form: এটি একটি ফর্ম তৈরি করে যা submitForm অ্যাকশনটি কল করবে।
- s:textfield: এটি দুটি ইনপুট ফিল্ড তৈরি করে (Name এবং Email) এবং user.name ও user.email এর মান Action Bean থেকে বাইন্ড হবে।
- s:submit: এটি একটি সাবমিট বাটন তৈরি করে, যেটি ফর্মটি সাবমিট করবে।
Action ক্লাস (Action Bean)
এখন আপনাকে একটি Action ক্লাস তৈরি করতে হবে যা এই ফর্মের ইনপুট গ্রহণ করবে।
public class UserAction extends ActionSupport {
private String name;
private String email;
public String execute() {
// ফর্ম ডেটা প্রক্রিয়া করা
System.out.println("Name: " + name);
System.out.println("Email: " + email);
return SUCCESS;
}
// 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;
}
}
এখানে, UserAction ক্লাসে name এবং email প্রপার্টি ডিফাইন করা হয়েছে, যেগুলি ফর্মের ইনপুট থেকে পাঠানো হবে। execute() মেথডে এই ডেটা প্রসেস করা হয়।
struts.xml কনফিগারেশন
এখন আপনাকে struts.xml কনফিগারেশন ফাইলে এই অ্যাকশনটি কনফিগার করতে হবে।
<struts>
<package name="default" extends="struts-default">
<action name="submitForm" class="com.example.UserAction">
<result>/success.jsp</result>
</action>
</package>
</struts>
এখানে, submitForm অ্যাকশনটি UserAction ক্লাসের execute() মেথডকে কল করবে এবং সফল হলে success.jsp পেজে রিডাইরেক্ট করবে।
Struts 2 Tags-এর উপকারিতা
- ডাটা বাইন্ডিং সহজতর: Struts 2 tags ব্যবহার করে ফর্মের ইনপুটগুলিকে Action ক্লাসের প্রপার্টির সাথে সহজে বাইন্ড করা যায়।
- ভ্যালিডেশন সহজ: Struts 2 ট্যাগের মাধ্যমে ফর্ম ভ্যালিডেশন এবং ইনপুট চেকিং সহজে করা যায়।
- কোড রিডেবিলিটি: Struts 2 tags ব্যবহার করলে JSP পেজের কোড পরিষ্কার এবং রিডেবল হয়, কারণ এতে Java কোডের পরিমাণ কম থাকে।
- ইন্টারেক্টিভ ফর্ম তৈরি: AJAX এবং অন্যান্য ডাইনামিক উপাদান ব্যবহার করে স্টাইলিশ এবং ইন্টারেক্টিভ ফর্ম তৈরি করা যায়।
- Custom Tags Support: Struts 2 আপনাকে কাস্টম ট্যাগ তৈরি করার সুবিধা দেয়, যাতে আপনি বিশেষ ধরনের ইউজার ইন্টারফেস তৈরি করতে পারেন।
সারাংশ
Struts 2 Tags হল একটি শক্তিশালী ট্যাগ লাইব্রেরি যা JSP পেজে ডাইনামিক কনটেন্ট এবং ফর্ম প্রক্রিয়া সহজতর করে তোলে। s:form, s:textfield, s:submit, এবং অন্যান্য Struts 2 ট্যাগগুলি আপনাকে Model-View-Controller (MVC) আর্কিটেকচারের মধ্যে ডেটা বাইন্ডিং, ইনপুট প্রোসেসিং এবং ফলাফল প্রক্রিয়াকরণ করতে সহায়তা করে। JSP পেজের মধ্যে এই ট্যাগগুলি ব্যবহার করলে কোড ক্লিন, পরিষ্কার এবং রিডেবল হয়, এবং ডেভেলপমেন্ট দ্রুত হয়।
Struts 2 একটি শক্তিশালী Java-based web framework, যা Model-View-Controller (MVC) আর্কিটেকচার অনুসরণ করে। JSP (JavaServer Pages) হল Java ভিত্তিক একটি টেমপ্লেটিং ইঞ্জিন যা ডাইনামিক ওয়েব পেজ তৈরি করতে ব্যবহৃত হয়। Struts 2 এবং JSP একসাথে ব্যবহৃত হলে, আপনি JSP কে View হিসেবে এবং Struts 2 কে Controller এবং Model হিসেবে ব্যবহার করতে পারেন। এতে, ডেভেলপাররা অ্যাপ্লিকেশনের ইউজার ইন্টারফেস তৈরি করতে পারেন এবং সার্ভার সাইড লজিক সহজে পরিচালনা করতে পারেন।
Struts 2 এবং JSP এর ইন্টিগ্রেশন একটি অত্যন্ত সহজ প্রক্রিয়া। Struts 2 অ্যাকশন ক্লাসের মাধ্যমে ডেটা প্রক্রিয়া করা হয় এবং সেই ডেটা JSP পেজে উপস্থাপন করা হয়।
Struts 2 এবং JSP Integration এর উদাহরণ
নিচে একটি সাধারণ উদাহরণ দেওয়া হলো, যেখানে Struts 2 ফ্রেমওয়ার্ক এবং JSP পেজ একত্রে কাজ করছে।
1. struts.xml (Configuration File)
প্রথমে struts.xml ফাইলে একটি অ্যাকশন কনফিগার করা হয় এবং এটি hello.jsp পেজের সাথে যুক্ত করা হয়।
<?xml version="1.0" encoding="UTF-8"?>
<struts>
<package name="default" extends="struts-default">
<!-- অ্যাকশন কনফিগারেশন -->
<action name="hello" class="com.example.HelloAction">
<result>/WEB-INF/content/hello.jsp</result>
</action>
</package>
</struts>
- এখানে, অ্যাকশন নাম
helloএবং এর ক্লাসcom.example.HelloAction। এই অ্যাকশনটি সফলভাবে সম্পন্ন হলেhello.jspপেজে রিডিরেক্ট করবে।
2. HelloAction.java (Action Class)
এখন, অ্যাকশন ক্লাসে ডেটা প্রক্রিয়া করা হবে এবং সেটি JSP পেজে পাঠানো হবে।
package com.example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
private String message;
public String execute() {
// মেসেজ সেট করা
message = "Hello, Struts 2 and JSP Integration!";
return SUCCESS;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
- এখানে
HelloActionক্লাসটিActionSupportথেকে এক্সটেন্ড করা হয়েছে। execute()মেথডে একটি সিম্পল মেসেজ সেট করা হচ্ছে, যেটি পরবর্তী ধাপেJSPপেজে পাঠানো হবে।
3. hello.jsp (JSP Page)
এখন, আমরা hello.jsp পেজে সেই ডেটা প্রদর্শন করব যা অ্যাকশন ক্লাস থেকে পাঠানো হয়েছে।
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Struts 2 and JSP Example</title></head>
<body>
<h1><s:property value="message"/></h1>
</body>
</html>
- এখানে,
s:propertyট্যাগ ব্যবহার করা হয়েছে যা Struts 2 ট্যাগ লাইব্রেরি থেকে আসে। এটিmessageপ্রপার্টির মান (যা অ্যাকশন ক্লাস থেকে এসেছিল) প্রদর্শন করবে।
কীভাবে এটি কাজ করে?
- struts.xml কনফিগারেশন:
struts.xmlফাইলে অ্যাকশন কনফিগার করা হয়েছে। অ্যাকশনটিhelloনামে শনাক্ত হবে এবং এটিHelloActionক্লাসেরexecute()মেথডকে কল করবে।- যদি
execute()মেথড সফলভাবে সম্পন্ন হয়, তাহলেhello.jspপেজে রিডিরেক্ট হবে।
- HelloAction ক্লাস:
HelloActionক্লাসেরexecute()মেথডে একটি মেসেজ সেট করা হয়েছে। এই মেসেজটি পরবর্তী পর্যায়ে JSP পেজে দেখানো হবে।
- hello.jsp পেজ:
hello.jspপেজেs:propertyট্যাগের মাধ্যমেmessageপ্রপার্টির মান শো করা হচ্ছে।
Struts 2 এবং JSP এর শক্তি
- Model-View-Controller (MVC): Struts 2 এবং JSP একসাথে MVC আর্কিটেকচারের মাধ্যমে ডেটা, ভিউ এবং কন্ট্রোলারকে আলাদা করে। এটি অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি সহজ করে।
- Struts 2 ট্যাগ লাইব্রেরি: Struts 2 এ একটি শক্তিশালী ট্যাগ লাইব্রেরি রয়েছে যা JSP পেজে ডেটা প্রদর্শন এবং ইন্টারঅ্যাকশনকে সহজ করে। ট্যাগগুলি যেমন
<s:form>,<s:textField>,<s:submit>ইত্যাদি ব্যবহার করে ইউজার ইন্টারফেস তৈরি করা হয়। - ফ্লেক্সিবল রাউটিং:
struts.xmlফাইলের মাধ্যমে Struts 2 অ্যাকশন এবং রেজাল্ট রাউটিং খুবই ফ্লেক্সিবল এবং কনফিগারেবল। - ডেটা ব্যন্ডিং: Struts 2 এ ডেটা ব্যন্ডিং খুব সহজ, যেখানে অ্যাকশন ক্লাসের প্রপার্টি অটোমেটিক্যালি JSP পেজে প্রদর্শিত হয়।
সারাংশ
Struts 2 এবং JSP এর ইন্টিগ্রেশন একটি অত্যন্ত শক্তিশালী পদ্ধতি যা Model-View-Controller (MVC) আর্কিটেকচার অনুসরণ করে। Struts 2 অ্যাকশন ক্লাসে ব্যবসায়িক লজিক প্রক্রিয়া করে এবং সেই ডেটা JSP পেজে প্রদর্শন করে, যা ইউজার ইন্টারফেস হিসেবে কাজ করে। এই পদ্ধতিতে অ্যাকশন কনফিগারেশন, ডেটা প্রক্রিয়াকরণ এবং UI উপাদান প্রদর্শন খুবই সুনির্দিষ্টভাবে আলাদা হয়ে থাকে, যা রক্ষণাবেক্ষণ ও স্কেলেবিলিটিকে সহজ করে তোলে।
Read more