Struts 2 এর Tiles Framework Integration

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

390

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

Tiles Framework সাধারণত একাধিক পৃষ্ঠা বা কম্পোনেন্টে একই কাঠামো বা লেআউট ব্যবহার করার জন্য ব্যবহৃত হয়, যার ফলে কোড পুনরায় ব্যবহার এবং রক্ষণাবেক্ষণ সহজ হয়ে যায়।


Struts 2 এর Tiles Framework Integration এর সুবিধা:

  1. Reusable Layouts: একাধিক পৃষ্ঠার জন্য একই লেআউট (header, footer, sidebar ইত্যাদি) পুনঃব্যবহার করা যায়।
  2. Modular Design: ভিউ লেয়ারটি বিভিন্ন টুকরো বা টাইলস দিয়ে তৈরি করা হয়, যার ফলে কাস্টমাইজেশন সহজ হয়।
  3. Separation of Concerns: UI উপাদানগুলি আলাদা করা হয় এবং ব্যবসায়িক লজিক থেকে পৃথক রাখা হয়।

Struts 2 এর Tiles Framework Integration এর জন্য ধাপ:

Struts 2 এর Tiles Framework ইন্টিগ্রেশন করতে নিচের ধাপগুলো অনুসরণ করতে হবে:


১. Maven Dependencies (pom.xml)

Tiles Framework ব্যবহার করার জন্য, প্রথমে Struts 2 এবং Tiles সম্পর্কিত প্রয়োজনীয় Maven ডিপেনডেন্সি আপনার pom.xml ফাইলে যোগ করতে হবে।

<dependencies>
    <!-- Struts 2 Core Dependency -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.22</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
    </dependency>

    <!-- Tiles 3 Dependency -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.8</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
    </dependency>

    <!-- Struts 2 Tiles Integration Dependency -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-struts2</artifactId>
        <version>3.0.8</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
    </dependency>
</dependencies>

২. Struts 2 Configuration (struts.xml)

Struts 2 এর struts.xml ফাইলের মধ্যে TilesFilter যুক্ত করুন, যাতে Tiles Framework সক্রিয় হয় এবং তার কনফিগারেশন করা হয়।

<package name="default" extends="struts-default">
    <!-- Enable Tiles Filter -->
    <filter>
        <filter-name>tiles</filter-name>
        <filter-class>org.apache.tiles.web.startup.TilesFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>tiles</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Actions and Result Pages -->
    <action name="home" class="com.example.HomeAction" method="execute">
        <result name="success">/WEB-INF/jsp/home.jsp</result>
    </action>
</package>

এখানে, TilesFilter ফিল্টারটি tiles এর সাথে ইন্টিগ্রেটেড এবং struts2 ফিল্টারের পরে প্রক্রিয়া করবে।


৩. Tiles Configuration (tiles-defs.xml)

Tiles 2 কনফিগারেশনের জন্য একটি tiles-defs.xml ফাইল তৈরি করুন যেখানে আপনি লেআউট এবং টাইলসের ডেফিনেশন করবেন।

tiles-defs.xml Example:

<tiles-definitions>
    <!-- Define the default layout template -->
    <definition name="baseLayout" template="/WEB-INF/tiles/layouts/baseLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/tiles/partials/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/tiles/partials/footer.jsp"/>
        <put-attribute name="body" value=""/>
    </definition>

    <!-- Define a page layout -->
    <definition name="homePage" extends="baseLayout">
        <put-attribute name="body" value="/WEB-INF/jsp/home.jsp"/>
    </definition>
</tiles-definitions>

ব্যাখ্যা:

  • এখানে একটি baseLayout টেমপ্লেট তৈরি করা হয়েছে যা header, footer, এবং body টাইলস সহ একটি সাধারণ লেআউট প্রদান করে।
  • এরপর homePage নামে একটি টাইলস ডেফিনিশন তৈরি করা হয়েছে যা baseLayout থেকে এক্সটেন্ড করে body টাইলকে home.jsp এর সাথে ম্যাপ করে।

৪. Tiles JSP (Tiles Layout and Tiles View)

Base Layout (baseLayout.jsp)

<!DOCTYPE html>
<html>
<head>
    <title>My Application</title>
</head>
<body>
    <div id="header">
        <tiles:insertAttribute name="header"/>
    </div>

    <div id="content">
        <tiles:insertAttribute name="body"/>
    </div>

    <div id="footer">
        <tiles:insertAttribute name="footer"/>
    </div>
</body>
</html>

ব্যাখ্যা:

  • baseLayout.jsp একটি সাধারণ HTML কাঠামো তৈরি করে যেখানে header, body, এবং footer টাইলস ইনসার্ট করা হয়েছে।

Header Partial (header.jsp)

<h1>Welcome to My Application</h1>

Footer Partial (footer.jsp)

<p>© 2024 My Application. All rights reserved.</p>

৫. Action Class (HomeAction)

Struts 2 Action Class এর মধ্যে আপনি Tiles View ব্যবহার করে ডেটা সরবরাহ করতে পারেন।

import com.opensymphony.xwork2.ActionSupport;

public class HomeAction extends ActionSupport {
    public String execute() {
        return SUCCESS;
    }
}

ব্যাখ্যা:

  • HomeAction ক্লাসটি execute() মেথডে একটি সফল ফলাফল প্রদান করে এবং tiles-defs.xml কনফিগারেশনে সংজ্ঞায়িত homePage টাইলের মাধ্যমে home.jsp পৃষ্ঠা লোড হয়।

৬. Run the Application

আপনি Struts 2 প্রোজেক্টটি চালানোর জন্য একটি ওয়েব সার্ভার (যেমন Tomcat) ব্যবহার করতে পারেন। প্রোজেক্টটি চালানোর পর, যখন আপনি /home.action URL এ যান, তখন baseLayout.jsp টেমপ্লেটটি লোড হবে এবং header, body, এবং footer টাইলস সংশ্লিষ্ট ফাইলগুলির মাধ্যমে রেন্ডার হবে।


সারাংশ

Struts 2 Tiles Framework ব্যবহার করে আপনি reusable layouts এবং modular design তৈরি করতে পারেন, যেখানে বিভিন্ন পৃষ্ঠা বা কম্পোনেন্টগুলো পুনঃব্যবহারযোগ্য টুকরো বা টাইলসে বিভক্ত থাকে। এর মাধ্যমে অ্যাপ্লিকেশনের UI কম্পোনেন্টগুলিকে আলাদা রাখা হয়, এবং একই কাঠামো বারবার ব্যবহার করার মাধ্যমে অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও সহজ হয়। Tiles Framework Struts 2 তে খুব সহজেই ইন্টিগ্রেট করা যায়, এবং এটি JSP এবং Action এর মধ্যে টেমপ্লেট ও কম্পোনেন্ট শেয়ার করার একটি শক্তিশালী পদ্ধতি প্রদান করে।

Content added By

Tiles Framework একটি শাখা Apache Struts 2-এর জন্য তৈরি করা একটি মডিউল, যা UI (User Interface) টেমপ্লেটিং এর কাজ সহজ করে। এটি ওয়েব অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের কাঠামো এবং লেআউট কনফিগারেশনে একটি কার্যকরী এবং পুনঃব্যবহারযোগ্য সমাধান প্রদান করে। Tiles Framework মূলত একটি ডাইনামিক ওয়েব পেজ তৈরির জন্য ব্যবহৃত হয়, যেখানে বিভিন্ন উপাদান (অর্থাৎ, টুকরো বা অংশ) একত্রিত হয়ে একটি পূর্ণ পৃষ্ঠা তৈরি করে। এটি বিভিন্ন ধরনের UI টুকরা এবং মডিউল ম্যানেজ করতে সাহায্য করে, যা অ্যাপ্লিকেশনটির সামগ্রিক ইউজার ইন্টারফেস স্টাইল এবং কাঠামোকে উন্নত করে।

1. Tiles Framework কী?

Tiles Framework হল একটি লেআউট ব্যবস্থাপনা ফ্রেমওয়ার্ক যা Struts 2 বা অন্যান্য Java web frameworks এর সঙ্গে কাজ করে। এটি page composition (পেজের বিভিন্ন অংশ একত্রিত করা) সহজ করে, যাতে আপনি একাধিক অংশকে একত্রিত করে এক পেজ তৈরি করতে পারেন, যেমন হেডার, ফুটার, সাইডবার, কন্টেন্ট ইত্যাদি। এটি আপনার অ্যাপ্লিকেশনের UI কোডকে পুনঃব্যবহারযোগ্য এবং কনটেক্সট রিচ করে তোলে।

Tiles Framework দ্বারা আপনি বিভিন্ন টেমপ্লেট তৈরি করতে পারেন, যেগুলি অনেকগুলো পেজে একাধিকবার ব্যবহার করা যাবে, ফলে কোড রিপিটিশন কমবে এবং ডেভেলপমেন্ট প্রক্রিয়া দ্রুত হবে।

2. Tiles Framework এর সুবিধা

  1. Code Reusability:
    • Tiles ফ্রেমওয়ার্কের মাধ্যমে আপনি ইউজার ইন্টারফেসের অংশগুলিকে পুনঃব্যবহারযোগ্য টেমপ্লেটে বিভক্ত করতে পারেন। এতে কোডের পুনঃব্যবহারযোগ্যতা বাড়ে, এবং একাধিক পৃষ্ঠায় একই উপাদান ব্যবহার করা সহজ হয় (যেমন, সাইডবার, হেডার, ফুটার)।
  2. Separation of Concerns (SoC):
    • Tiles আপনার UI এবং লজিক্যাল অংশগুলির মধ্যে স্পষ্ট পার্থক্য তৈরি করতে সহায়তা করে, ফলে ডিজাইন এবং ব্যবসায়িক লজিক আলাদা হয় এবং কোড মেইনটেনেন্স সহজ হয়।
  3. Dynamic Page Composition:
    • Tiles ফ্রেমওয়ার্ক আপনাকে ডাইনামিক পেজের অংশ তৈরি করতে সহায়তা করে। এর মাধ্যমে আপনি একাধিক অংশ (চাঙ্ক) তৈরি করতে পারেন এবং সেগুলি সঠিকভাবে একত্রিত করে একটি পূর্ণ পেজ তৈরি করতে পারেন।
  4. Centralized Layout Management:
    • Tiles ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনটির UI এর লেআউট এবং কাঠামো এক জায়গায় কনফিগার করতে পারেন, যা আপনাকে পেজের টেমপ্লেট পরিবর্তন করতে সহায়তা করে।
  5. Easy Integration:
    • Tiles Struts 2 বা অন্যান্য Java frameworks এর সঙ্গে সহজেই ইন্টিগ্রেট করা যায় এবং এটি আপনাকে একটি ক্লিন এবং এফফিসিয়েন্ট ইউআই তৈরি করতে সাহায্য করে।

3. Tiles Framework কেন প্রয়োজন?

  1. UI Composition Simplification:
    • যদি আপনি চান যে আপনার ওয়েব অ্যাপ্লিকেশনটির ইউজার ইন্টারফেস কন্টেন্টের বিভিন্ন অংশ আলাদা আলাদা টেমপ্লেট হিসেবে ব্যবহৃত হোক, তাহলে Tiles ফ্রেমওয়ার্ক এর মাধ্যমে এই কাজটি সহজ হয়। আপনি একাধিক ছোট টুকরা (যেমন, হেডার, ফুটার, কন্টেন্ট) তৈরি করতে পারবেন এবং সেগুলোকে একটি বড় পেজে যুক্ত করতে পারবেন।
  2. Consistency in UI Design:
    • Tiles ফ্রেমওয়ার্ক আপনাকে কনসিস্টেন্ট ইউআই ডিজাইন তৈরি করতে সাহায্য করে। একবার একটি টেমপ্লেট তৈরি করার পর, আপনি একই ডিজাইন এবং লেআউট অন্যান্য পৃষ্ঠায় ব্যবহার করতে পারবেন, ফলে অ্যাপ্লিকেশনের ডিজাইন একটি নির্দিষ্ট শৈলীতে থাকবে।
  3. Centralized Control:
    • Tiles এর মাধ্যমে UI টেমপ্লেটগুলির কন্ট্রোল কেন্দ্রীভূত করা যায়। এতে এক জায়গায় লেআউট পরিবর্তন করলে তা সমস্ত পৃষ্ঠায় প্রভাবিত হবে, যা অ্যাপ্লিকেশন মেইনটেনেন্সে সহায়তা করে।
  4. Ease of Modification:
    • যখন ইউজার ইন্টারফেসে কোনো পরিবর্তন আনা হয় (যেমন, ফুটারের ডিজাইন পরিবর্তন), Tiles ফ্রেমওয়ার্ক ব্যবহার করলে কেবল একটি টেমপ্লেটে পরিবর্তন আনলেই সেই পরিবর্তন পুরো অ্যাপ্লিকেশনে প্রতিফলিত হবে, যা সময় বাঁচায়।

4. Tiles Framework এর মূল উপাদান

Tiles Framework এর মধ্যে কয়েকটি গুরুত্বপূর্ণ উপাদান রয়েছে:

  • Tiles Definition:
    • এটি একটি কনফিগারেশন ফাইল, যেখানে আপনি পেজের টেমপ্লেট এবং তার অংশগুলি (header, footer, sidebar, content) কনফিগার করতে পারেন।
  • Tiles Container:
    • Tiles Container ব্যবহার করে আপনি টেমপ্লেটের অংশগুলি একত্রিত করে পুরো পেজ তৈরি করতে পারেন।
  • Tiles Tag Library:
    • Tiles ফ্রেমওয়ার্ক আপনাকে JSP পৃষ্ঠায় টাইলস ট্যাগ ব্যবহার করার সুযোগ দেয়, যার মাধ্যমে আপনি টেমপ্লেটের অংশগুলি (header, footer, content) ইন্টারপোলেট করতে পারেন।

5. Tiles Framework ব্যবহার করার উদাহরণ

১. Tiles কনফিগারেশন ফাইল (tiles-defs.xml)

<tiles-definitions>
    <definition name="basic-layout" template="/WEB-INF/layouts/defaultLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/views/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"/>
        <put-attribute name="body" value="/WEB-INF/views/home.jsp"/>
    </definition>
</tiles-definitions>
  • এখানে, basic-layout টেমপ্লেটের মধ্যে তিনটি অংশ নির্ধারণ করা হয়েছে: header, footer, এবং body
  • defaultLayout.jsp হল প্রধান টেমপ্লেট ফাইল যা header, footer, এবং body অংশগুলোকে অন্তর্ভুক্ত করবে।

২. Tiles Tag Library ব্যবহার (home.jsp)

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<tiles:insert definition="basic-layout">
    <tiles:put name="body" value="/WEB-INF/views/homeContent.jsp"/>
</tiles:insert>
  • এখানে, tiles:insert ট্যাগটি basic-layout টেমপ্লেটটি অন্তর্ভুক্ত করবে এবং এর মধ্যে homeContent.jsp কনটেন্ট হিসেবে সন্নিবেশিত হবে।

৩. JSP টেমপ্লেট (defaultLayout.jsp)

<html>
<head>
    <title>Struts 2 Tiles Example</title>
</head>
<body>
    <div>
        <tiles:insertAttribute name="header"/>
    </div>

    <div>
        <tiles:insertAttribute name="body"/>
    </div>

    <div>
        <tiles:insertAttribute name="footer"/>
    </div>
</body>
</html>
  • এখানে, header, body, এবং footer টেমপ্লেট অংশগুলি tiles:insertAttribute ট্যাগ দিয়ে defaultLayout.jsp পৃষ্ঠায় অন্তর্ভুক্ত করা হয়েছে।

6. Tiles Framework এর সুবিধা

  1. UI কোড পুনঃব্যবহারযোগ্যতা:
    • Tiles ফ্রেমওয়ার্ক কোড পুনঃব্যবহারযোগ্য করে তোলে, যেমন হেডার, ফুটার, এবং সাইডবার ইত্যাদি কাস্টম টেমপ্লেট ব্যবহার করে।
  2. ডিজাইন পার্টিশন:
    • এটি বিভিন্ন UI উপাদানগুলোকে আলাদা করে ডিজাইন ভাগ করতে সহায়ক, যেমন হেডার, ফুটার, এবং কন্টেন্ট অংশ।
  3. ক্লিন এবং মেইনটেনেবল কোড:
    • UI কোড সহজে মেইনটেন করা যায়, কারণ একাধিক পৃষ্ঠায় একই টেমপ্লেট ব্যবহার করা হয়।

সারাংশ

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

Content added By

Apache Tiles একটি টেমপ্লেট ইঞ্জিন যা Java-based ওয়েব অ্যাপ্লিকেশনগুলিতে UI (User Interface) অংশের পুনঃব্যবহারযোগ্য অংশ তৈরি করতে ব্যবহৃত হয়। এটি একটি শকটিভ UI তৈরি করার জন্য টেমপ্লেটের মাধ্যমে ডাইনামিকভাবে HTML পেজ রেন্ডার করার কাজ করে। Struts 2 এবং Tiles Integration ব্যবহার করে আপনি একটি কাস্টমাইজড এবং পুনঃব্যবহারযোগ্য লেআউট তৈরি করতে পারেন, যা কোড পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ সহজতর এবং অ্যাপ্লিকেশনটির সঠিক কাঠামো নিশ্চিত করতে সহায়ক।

Struts 2 এবং Tiles Integration এর মাধ্যমে View Layer এর ভিন্ন ভিন্ন অংশ (Header, Footer, Menu, Body) আলাদা আলাদা টেমপ্লেটে ভাগ করা সম্ভব, যাতে UI-এর একটি অংশ পরিবর্তন করলে পুরো অ্যাপ্লিকেশনটির ভিউ ঠিক থাকে।


Struts 2 এবং Tiles Integration এর প্রয়োজনীয়তা

  • Code Reusability: UI এর কম্পোনেন্টগুলিকে (যেমন Header, Footer, Sidebar) পুনঃব্যবহার করা যায়।
  • Easy to Maintain: টেমপ্লেট পরিবর্তন করলে পুরো অ্যাপ্লিকেশন স্বয়ংক্রিয়ভাবে আপডেট হয়।
  • Separation of Concerns: UI এবং লজিক একে অপর থেকে আলাদা থাকে, যা উন্নত রক্ষণাবেক্ষণ নিশ্চিত করে।

Struts 2 এবং Tiles Integration এর ধাপসমূহ

Struts 2 এবং Tiles এর একত্রে কাজ করার জন্য কয়েকটি ধাপ অনুসরণ করতে হবে:

  1. Tiles ফ্রেমওয়ার্কের অন্তর্ভুক্তি: Struts 2 এবং Tiles ইন্টিগ্রেট করতে tiles-plugin এবং tiles-api এর প্রয়োজন হয়। এগুলি Maven অথবা JAR ফাইল হিসেবে অ্যাপ্লিকেশন এড করা হয়।
  2. struts.xml কনফিগারেশন: Tiles ব্যবহার করতে হলে Struts 2 অ্যাপ্লিকেশনের struts.xml ফাইল কনফিগার করতে হবে।
  3. tiles-definition.xml কনফিগারেশন: Tiles টেমপ্লেট এবং লেআউট ডিফাইন করার জন্য tiles-definition.xml ফাইল কনফিগার করতে হয়।
  4. JSP পেজে Tiles ট্যাগ ব্যবহার: Struts 2 অ্যাকশনের আউটপুট ফলস্বরূপের মধ্যে Tiles টেমপ্লেট ব্যবহার করতে হয়।

১. Tiles ফ্রেমওয়ার্ক অন্তর্ভুক্তি

Struts 2 এবং Tiles একত্রে কাজ করতে হলে, আপনার tiles-plugin এবং tiles-api নির্ভরশীলতা pom.xml (যদি Maven ব্যবহার করেন) এ অন্তর্ভুক্ত করতে হবে।

Maven Dependencies (pom.xml):

<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-api</artifactId>
    <version>3.0.8</version>
</dependency>

<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-servlet</artifactId>
    <version>3.0.8</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-tiles-plugin</artifactId>
    <version>2.5.22</version>
</dependency>

এটি Struts 2 এবং Tiles-এর প্রয়োজনীয় JAR ফাইল অন্তর্ভুক্ত করবে।


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

Tiles ফিচার ব্যবহারের জন্য struts.xml ফাইলে কিছু কনফিগারেশন প্রয়োজন। Struts 2 এর tiles plugin ব্যবহার করার জন্য struts2-tiles-plugin কনফিগার করতে হবে।

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Struts//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

    <package name="default" extends="struts-default,tiles-default">
        <action name="home" class="com.example.action.HomeAction" method="execute">
            <result name="success" type="tiles">/home</result>
        </action>
    </package>

</struts>

ব্যাখ্যা:

  • struts-default, tiles-default: এটি Struts 2 এর ডিফল্ট কনফিগারেশন এবং Tiles এর ডিফল্ট কনফিগারেশন একসাথে ব্যবহার করতে সহায়ক।
  • action: অ্যাকশনের মাধ্যমে যখন রিকোয়েস্ট আসবে, তখন টাইলস টেমপ্লেট অনুযায়ী রিডিরেক্ট করা হবে।

৩. tiles-definition.xml কনফিগারেশন

tiles-definition.xml ফাইলটিতে আপনি কীভাবে Tiles টেমপ্লেট এবং লেআউট সংজ্ঞায়িত করবেন তা উল্লেখ করা হয়। এখানে আপনি Header, Footer, Sidebar ইত্যাদি অংশগুলো নির্ধারণ করতে পারেন।

tiles-definition.xml উদাহরণ:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Struts//DTD Tiles Configuration 2.0//EN" "http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>

    <!-- Main layout definition -->
    <definition name="baseLayout" template="/WEB-INF/layouts/mainLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/views/header.jsp"/>
        <put-attribute name="body" value="/WEB-INF/views/body.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"/>
    </definition>

    <!-- Specific page layout -->
    <definition name="home" extends="baseLayout">
        <put-attribute name="body" value="/WEB-INF/views/home.jsp"/>
    </definition>

</tiles-definitions>

ব্যাখ্যা:

  • baseLayout: এটি একটি টেমপ্লেট যা সাধারণভাবে Header, Body, এবং Footer এর জন্য জায়গা নির্ধারণ করে।
  • home: এটি baseLayout এর একটি এক্সটেনশন, যেখানে body অংশে home.jsp পৃষ্ঠা ইনক্লুড করা হয়।

৪. JSP পেজে Tiles ট্যাগ ব্যবহার

Tiles টেমপ্লেটের মধ্যে JSP পেজগুলো উপযুক্তভাবে রেন্ডার করতে হয়। এখানে টাইলস ট্যাগ ব্যবহার করে Header, Footer, Body অংশগুলো অন্তর্ভুক্ত করা হবে।

JSP (home.jsp) উদাহরণ:

<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <tiles:insertAttribute name="header"/>
    
    <h1>Welcome to the Home Page</h1>

    <tiles:insertAttribute name="body"/>
    
    <tiles:insertAttribute name="footer"/>
</body>
</html>

ব্যাখ্যা:

  • tiles:insertAttribute: এটি নির্দিষ্ট attribute (যেমন header, body, footer) রেন্ডার করে। এখানে home.jsp টেমপ্লেটের মধ্যে header, body, এবং footer অংশগুলো মাপানো হয়।

সারাংশ

Struts 2 এবং Tiles Integration ব্যবহার করে আমরা UI (User Interface) টেমপ্লেট তৈরি এবং পুনঃব্যবহারযোগ্য অংশ তৈরি করতে পারি। এটি অ্যাপ্লিকেশনটির view layer কে আরও মডুলার এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। Tiles ব্যবহার করলে ইউজারের জন্য সাধারণ লেআউট (যেমন Header, Footer, Sidebar) তৈরি করা সহজ হয়, এবং অ্যাপ্লিকেশনের কোডও পুনঃব্যবহারযোগ্য হয়। Struts 2 এবং Tiles এর সংমিশ্রণ একটি কার্যকরী, স্কেলেবল এবং ভাল মানের অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে।

Content added By

Struts 2 তে Tiles কী?

Tiles হলো একটি টেমপ্লেট ম্যানেজমেন্ট সিস্টেম যা Struts 2-এ ব্যবহারকারী ইন্টারফেস (UI) ডিজাইন এবং কনফিগারেশনের জন্য ব্যবহৃত হয়। Tiles এর মাধ্যমে আপনি layouts এবং reusable components তৈরি করতে পারেন, যা অ্যাপ্লিকেশনে একাধিক জায়গায় পুনঃব্যবহার করা সম্ভব। এটি UI উপাদানগুলোর মধ্যে পুনঃব্যবহারযোগ্য অংশ (যেমন হেডার, ফুটার, সাইডবার ইত্যাদি) তৈরি করার জন্য উপযোগী।

Tiles ফ্রেমওয়ার্কে Tiles Definition কনফিগারেশন ফাইল ব্যবহৃত হয়, যা নির্ধারণ করে UI উপাদানগুলোর লেআউট এবং অন্যান্য অংশ কীভাবে একসাথে সংযুক্ত হবে।


Tiles Configuration ফাইল কী?

Tiles Configuration ফাইল (সাধারণত tiles.xml) Struts 2 অ্যাপ্লিকেশনটিতে Tiles Definition সংজ্ঞায়িত করে। এই ফাইলটি ব্যবহার করে আমরা Tiles Definitions তৈরি করতে পারি, যা UI লেআউটগুলোর বিভিন্ন অংশকে একত্রিত করে। একটি Tiles Definition একটি লেআউট টেমপ্লেট হিসেবে কাজ করে এবং এর মধ্যে বিভিন্ন tiles (যেমন, header, footer, content) যোগ করা যায়।

Tiles Configuration ফাইল তৈরি করা

Struts 2 অ্যাপ্লিকেশনে Tiles ব্যবহার করতে হলে প্রথমে একটি tiles.xml কনফিগারেশন ফাইল তৈরি করতে হয়, যেখানে Tiles Definitions এবং অন্যান্য কনফিগারেশন সন্নিবেশ করা হয়।

উদাহরণ: tiles.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

    <!-- Default layout definition -->
    <definition name="defaultLayout" template="/WEB-INF/layouts/defaultLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/views/partials/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/views/partials/footer.jsp"/>
        <put-attribute name="body" value="body"/>
    </definition>

    <!-- Another layout definition -->
    <definition name="anotherLayout" template="/WEB-INF/layouts/anotherLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/views/partials/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/views/partials/footer.jsp"/>
        <put-attribute name="body" value="body"/>
    </definition>

</tiles-definitions>

ব্যাখ্যা:

  1. definition: এটি একটি টেমপ্লেট (layout) ডিফাইন করে, যা template অ্যাট্রিবিউটের মাধ্যমে একটি JSP পৃষ্ঠার রেফারেন্স প্রদান করে। উদাহরণস্বরূপ, defaultLayout.jsp একটি টেমপ্লেট পৃষ্ঠা।
  2. put-attribute: এটি একটি অ্যাট্রিবিউটের মান নির্ধারণ করে, যা header, footer এবং body নামক অংশগুলি কনফিগার করে। এগুলি বিভিন্ন JSP পৃষ্ঠার অংশ হতে পারে, যেমন হেডার, ফুটার এবং কনটেন্ট।
  3. template: এটি যে JSP পৃষ্ঠাটি টেমপ্লেট হিসেবে কাজ করবে তা নির্দেশ করে।

Struts 2 এর মধ্যে Tiles ইন্টিগ্রেশন

Struts 2 অ্যাপ্লিকেশনে Tiles ব্যবহার করতে হলে, tiles-plugin লাইব্রেরি প্রজেক্টে যুক্ত করতে হয় এবং struts.xml ফাইলের মাধ্যমে Tiles কনফিগার করতে হয়।

১. tiles-plugin jar যুক্ত করা

প্রথমে tiles-plugin JAR ফাইলটি lib ফোল্ডারে যুক্ত করতে হবে অথবা Maven ব্যবহার করলে pom.xml ফাইলে এটি অন্তর্ভুক্ত করতে হবে।

<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-core</artifactId>
    <version>3.0.8</version>
</dependency>

<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-struts2</artifactId>
    <version>3.0.8</version>
</dependency>

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

Struts 2 অ্যাপ্লিকেশনে Tiles ব্যবহারের জন্য, struts.xml ফাইলে Tiles কনফিগারেশন যোগ করা প্রয়োজন।

<struts>
    <package name="default" extends="struts-default,tiles-default">
        <!-- Define actions here -->
    </package>
</struts>

Tiles Layout Management ব্যবহার করা

Tiles কনফিগারেশন ফাইল (tiles.xml) ব্যবহার করে লেআউট তৈরি করা হয়, যা template এবং put-attribute দিয়ে বিভিন্ন অংশ (header, footer, body) সংযুক্ত করে।

উদাহরণ: DefaultLayout.jsp

<!DOCTYPE html>
<html>
<head>
    <title>Default Layout</title>
</head>
<body>
    <div id="header">
        <tiles:insertAttribute name="header" />
    </div>
    <div id="content">
        <tiles:insertAttribute name="body" />
    </div>
    <div id="footer">
        <tiles:insertAttribute name="footer" />
    </div>
</body>
</html>

ব্যাখ্যা:

  1. tiles:insertAttribute: এই ট্যাগটি tiles.xml ফাইল থেকে নির্দিষ্ট অ্যাট্রিবিউটের মান ইনসার্ট করে। উদাহরণস্বরূপ, এখানে header, body, এবং footer অ্যাট্রিবিউটগুলি tiles.xml থেকে ইন্সার্ট করা হবে।

Layout Management

Tiles ফ্রেমওয়ার্ক ব্যবহার করে আপনি অ্যাপ্লিকেশনের বিভিন্ন অংশকে একত্রিত এবং ম্যানেজ করতে পারেন। এটি অ্যাপ্লিকেশনের UI-কে বেশি রিস্পন্সিভ এবং কাস্টমাইজেবল করে তোলে। উদাহরণস্বরূপ:

  1. Header: সমস্ত পৃষ্ঠায় একই হেডার ব্যবহার করা যায়, যেমন একটি ন্যাভিগেশন বার বা টাইটেল।
  2. Footer: একই ফুটার সব পৃষ্ঠায় যোগ করা যায়, যেমন কপিরাইট বা ফুটা লিংক।
  3. Body: বিভিন্ন পৃষ্ঠার জন্য ডায়নামিক কন্টেন্ট তৈরি করা যায়।

Tiles ফ্রেমওয়ার্ক Layout Management প্রক্রিয়াটি সহজ করে, যা বিভিন্ন অংশের পুনঃব্যবহারযোগ্যতা এবং কোডের মেইনটেন্যান্স সহজ করে তোলে।


সারাংশ

Struts 2 অ্যাপ্লিকেশনে Tiles ব্যবহারের মাধ্যমে আপনি সহজেই layout management করতে পারেন। tiles.xml ফাইলের মাধ্যমে টেমপ্লেট এবং অংশগুলির কনফিগারেশন করা হয়, যা UI উপাদানগুলোর মধ্যে পুনঃব্যবহারযোগ্যতা এবং সঠিক লেআউট তৈরি করতে সহায়তা করে। Struts 2 ফ্রেমওয়ার্কের সাথে Tiles একত্রিত করে অ্যাপ্লিকেশনটির ডিজাইন এবং কনফিগারেশন অনেক সহজ এবং পরিষ্কার হয়ে ওঠে।


Content added By

Struts 2Tiles Integration একটি শক্তিশালী ফিচার যা আপনাকে বিভিন্ন ভিউ টেমপ্লেট ব্যবহার করে আপনার ওয়েব অ্যাপ্লিকেশনটি মডুলার এবং রিইউজেবল করতে সহায়তা করে। Tiles একটি টেমপ্লেট সিস্টেম যা আপনাকে ওয়েব পেজগুলোকে বিভিন্ন টুকরো (like header, footer, sidebar, body) হিসেবে ভাগ করতে দেয় এবং সেগুলোকে একত্রে জুড়ে একটি পূর্ণ পেজ তৈরি করতে সহায়তা করে।

Struts 2 এর সাথে Tiles ইন্টিগ্রেশন খুব সহজ। এটি বিভিন্ন অংশে ভিউ টেমপ্লেট ব্যবহার করার সুযোগ দেয়, যেমন: header, footer, sidebar, এবং অন্যান্য অংশ যা আপনার অ্যাপ্লিকেশনটির প্রতিটি পৃষ্ঠায় পুনঃব্যবহারযোগ্য।


Struts 2 Tiles Integration এর সুবিধা

  1. Reusability: একই header, footer এবং অন্যান্য অংশ বিভিন্ন পৃষ্ঠায় ব্যবহার করা যায়।
  2. Maintainability: কোড আরও পরিষ্কার এবং সহজে মেইনটেইনযোগ্য।
  3. Modularity: পৃষ্ঠাগুলোর বিভিন্ন অংশ আলাদাভাবে তৈরি এবং মডিউলার করে রাখা যায়।
  4. Flexibility: ভিউ টেমপ্লেট একত্রে রেন্ডার করা যায়।

Struts 2 এ Tiles ইন্টিগ্রেশন কনফিগার করা

Struts 2 এর সাথে Tiles ইন্টিগ্রেট করার জন্য কিছু নির্দিষ্ট স্টেপ অনুসরণ করতে হয়:

  1. Tiles Dependency Setup (Maven)
  2. TilesConfigurer Setup
  3. Tiles Definition Files
  4. Struts 2 Action Configuration
  5. Tiles Template Configuration

১. Tiles Dependency Setup

Tiles ইন্টিগ্রেশন করার জন্য Tiles API এবং Struts 2 Tiles Plugin এর ডিপেনডেন্সি আপনার pom.xml ফাইলে যুক্ত করতে হবে।

pom.xml (Maven Dependency)

<dependencies>
    <!-- Struts 2 Tiles Plugin -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-tiles-plugin</artifactId>
        <version>2.5.22</version> <!-- আপনার Struts 2 এর ভার্সন অনুসারে সংস্করণ নির্বাচন করুন -->
    </dependency>

    <!-- Tiles API -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>3.0.8</version> <!-- Tiles API এর সংস্করণ -->
    </dependency>

    <!-- Tiles Core -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.8</version> <!-- Tiles Core এর সংস্করণ -->
    </dependency>
</dependencies>

২. TilesConfigurer Setup

Tiles কনফিগার করার জন্য tiles.xml ফাইল তৈরি করতে হবে যেখানে টেমপ্লেট এবং ডিফিনেশন সেটআপ করা হবে। এছাড়া, TilesConfigurer এবং TilesView কনফিগারেশন স্টেপও করতে হবে।

tiles.xml ফাইল

<tiles-definitions>
    <definition name="baseLayout" template="/WEB-INF/layouts/defaultLayout.jsp">
        <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"/>
        <put-attribute name="body" value=""/>
    </definition>

    <definition name="homePage" extends="baseLayout">
        <put-attribute name="body" value="/WEB-INF/content/home.jsp"/>
    </definition>

    <definition name="contactPage" extends="baseLayout">
        <put-attribute name="body" value="/WEB-INF/content/contact.jsp"/>
    </definition>
</tiles-definitions>

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

  • baseLayout টেমপ্লেটের মধ্যে একটি সাধারণ লেআউট নির্ধারণ করা হয়েছে, যেখানে header, footer, এবং body পৃষ্ঠা অংশগুলোকে ডিফাইন করা হয়েছে।
  • homePage এবং contactPage এর মতো আলাদা পৃষ্ঠা ডিফিনেশন করা হয়েছে যেগুলিতে baseLayout টেমপ্লেট ব্যবহার হয়েছে এবং তাদের নিজস্ব body কনটেন্ট আছে।

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

<struts>
    <package name="default" extends="struts-default, tiles-default">
        <action name="home" class="com.example.HomeAction" method="execute">
            <result name="success" type="tiles">homePage</result>
        </action>
        
        <action name="contact" class="com.example.ContactAction" method="execute">
            <result name="success" type="tiles">contactPage</result>
        </action>
    </package>
</struts>

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

  • এখানে home এবং contact অ্যাকশন কনফিগার করা হয়েছে, যেখানে tiles রেজাল্ট টাইপ ব্যবহার করা হয়েছে। এর মাধ্যমে, অ্যাকশন সফল হলে এগুলি Tiles টেমপ্লেটের মাধ্যমে রেন্ডার হবে।

৩. Tiles Template (Layouts and JSP)

এখন, আমাদের header.jsp, footer.jsp, এবং defaultLayout.jsp টেমপ্লেট তৈরি করতে হবে।

defaultLayout.jsp (টেমপ্লেট লেআউট)

<!DOCTYPE html>
<html>
<head>
    <title>My Struts 2 Application</title>
</head>
<body>
    <div id="header">
        <tiles:insertAttribute name="header"/>
    </div>

    <div id="body">
        <tiles:insertAttribute name="body"/>
    </div>

    <div id="footer">
        <tiles:insertAttribute name="footer"/>
    </div>
</body>
</html>

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

  • এখানে tiles:insertAttribute ট্যাগ ব্যবহার করা হয়েছে যা Tiles টেমপ্লেটের নির্দিষ্ট অংশকে ইনসার্ট করে (যেমন header, body, footer)।

header.jsp এবং footer.jsp

<!-- header.jsp -->
<h1>Welcome to My Application</h1>
<!-- footer.jsp -->
<p>© 2024 My Company</p>

home.jsp এবং contact.jsp

<!-- home.jsp -->
<h2>Home Page</h2>
<p>This is the home page content.</p>
<!-- contact.jsp -->
<h2>Contact Us</h2>
<p>Here is how you can contact us.</p>

৪. TilesConfigurer Setup in web.xml

আপনার web.xml ফাইলে Tiles-কে কনফিগার করতে হবে।

<web-app>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

    <!-- TilesConfigurer Setup -->
    <filter>
        <filter-name>tiles</filter-name>
        <filter-class>org.apache.tiles.web.startup.TilesFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>tiles</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

উপসংহার

Struts 2 এর সাথে Tiles Integration আপনাকে একটি মডুলার, রিইউজেবল এবং সহজে পরিচালনাযোগ্য ভিউ টেমপ্লেট সিস্টেম তৈরি করতে সাহায্য করে। এটি আপনাকে header, footer, sidebar এবং অন্যান্য উপাদানগুলোকে একটি কেন্দ্রীয় টেমপ্লেটে ইনক্লুড করার সুবিধা দেয়। struts.xml, tiles.xml, এবং web.xml ফাইল কনফিগারেশন-এর মাধ্যমে আপনি খুব সহজেই Tiles ইন্টিগ্রেশন সেটআপ করতে পারেন এবং আপনার অ্যাপ্লিকেশনটিকে আরও মডুলার ও কার্যকরী বানাতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...