Struts 2 একটি শক্তিশালী ফ্রেমওয়ার্ক যা MVC (Model-View-Controller) আর্কিটেকচারে কাজ করে এবং এর মধ্যে Exception Handling বা Exception Mapping প্রক্রিয়া খুবই গুরুত্বপূর্ণ। Exception mapping এর মাধ্যমে আপনি অ্যাপ্লিকেশনটি চলাকালীন কোনো ধরনের exception ঘটলে সেটি কিভাবে হ্যান্ডেল করবেন তা নির্ধারণ করতে পারেন। Struts 2 এ Exception Mapping এর মাধ্যমে আপনি নির্দিষ্ট exception এর জন্য নির্দিষ্ট রেজাল্ট বা পেজ ডিসপ্লে করতে পারেন।
Exception Mapping কি?
Exception Mapping একটি প্রক্রিয়া যার মাধ্যমে নির্দিষ্ট exception ধরা পড়ে এবং সেই exception অনুযায়ী একটি নির্দিষ্ট রেজাল্ট বা ফোল্ডার/পেজ প্রদর্শিত হয়। এটি অ্যাপ্লিকেশন কোডের মধ্যে exception-handling লজিককে আলাদা করে, যা সফটওয়্যারের রক্ষণাবেক্ষণ সহজ করে।
Struts 2 তে Exception Mapping কনফিগার করার জন্য struts.xml কনফিগারেশন ফাইলে <exception-mapping> ট্যাগ ব্যবহার করা হয়। এটি কনফিগারেশন ফাইলের মধ্যে exception এর ধরণ এবং সেই exception হলে কি রেসপন্স দেখাতে হবে তা নির্ধারণ করতে সাহায্য করে।
Struts 2 Exception Mapping কনফিগারেশন
Struts 2 তে Exception Mapping এর জন্য struts.xml ফাইল ব্যবহার করা হয়। এখানে আমরা একটি সাধারণ উদাহরণ দেখব, যেখানে নির্দিষ্ট exception এর জন্য ভিন্ন রেজাল্ট বা পেজ কনফিগার করা হবে।
উদাহরণ:
ধরা যাক, আমাদের অ্যাপ্লিকেশনটিতে দুটি exception হ্যান্ডেল করতে হবে:
- NullPointerException - যদি এই exception ঘটে, তাহলে আমরা একটি error পেজ দেখাব।
- ArithmeticException - যদি এই exception ঘটে, তাহলে একটি অন্য রেজাল্ট পেজ দেখানো হবে।
১. Action Class (GreetingAction.java)
import com.opensymphony.xwork2.ActionSupport;
public class GreetingAction extends ActionSupport {
private int age;
public String execute() throws Exception {
if (age == 0) {
throw new NullPointerException("Age cannot be zero!");
}
if (age == 100) {
throw new ArithmeticException("Age cannot be 100!");
}
return SUCCESS;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে, GreetingAction ক্লাসে আমরা দুটি exception ধরি:
- NullPointerException: যদি age এর মান ০ হয়, তবে একটি NullPointerException ফেলা হয়।
- ArithmeticException: যদি age এর মান ১০০ হয়, তবে একটি ArithmeticException ফেলা হয়।
২. Struts Configuration (struts.xml)
<struts>
<package name="default" extends="struts-default">
<!-- Action Configuration -->
<action name="greetUser" class="com.example.GreetingAction" method="execute">
<result>/greeting.jsp</result>
</action>
<!-- Exception Mapping -->
<exception-mapping exception="java.lang.NullPointerException" result="nullPointerError"/>
<exception-mapping exception="java.lang.ArithmeticException" result="arithmeticError"/>
</package>
</struts>
exception-mapping ট্যাগে আমরা দুটি exception এবং তাদের জন্য নির্দিষ্ট রেজাল্ট কনফিগার করেছি:
- NullPointerException: যদি এই exception ঘটে, তবে
nullPointerErrorরেজাল্ট ট্যাগটি কার্যকর হবে। - ArithmeticException: যদি এই exception ঘটে, তবে
arithmeticErrorরেজাল্ট ট্যাগটি কার্যকর হবে।
৩. Result Configuration
এখন, struts.xml ফাইলে নির্দিষ্ট রেজাল্টের জন্য HTML পেজ কনফিগার করা হবে, যা error message প্রদর্শন করবে।
<struts>
<package name="default" extends="struts-default">
<!-- Exception Results -->
<result name="nullPointerError">/nullPointerError.jsp</result>
<result name="arithmeticError">/arithmeticError.jsp</result>
</package>
</struts>
এই configuration এ:
- nullPointerError.jsp: যদি NullPointerException ঘটে, তাহলে এই JSP পেজ দেখানো হবে।
- arithmeticError.jsp: যদি ArithmeticException ঘটে, তাহলে এই JSP পেজ দেখানো হবে।
৪. Exception Pages (JSP Files)
nullPointerError.jsp
<html>
<body>
<h2>Error: NullPointerException</h2>
<p>Age cannot be zero!</p>
</body>
</html>
arithmeticError.jsp
<html>
<body>
<h2>Error: ArithmeticException</h2>
<p>Age cannot be 100!</p>
</body>
</html>
এই দুটি JSP পৃষ্ঠায় ভিন্ন ভিন্ন exception এর জন্য বার্তা প্রদর্শন করা হবে।
Exception Mapping এর সুবিধা
- Centralized Error Handling: Exception mapping এর মাধ্যমে আপনি এক জায়গায় সমস্ত exception হ্যান্ডলিং কনফিগার করতে পারেন, যা অ্যাপ্লিকেশন কোডের মধ্যে exception handling এর প্রচুর বিক্ষিপ্ত কোড কমিয়ে দেয়।
- Custom Error Pages: আপনি আপনার অ্যাপ্লিকেশনটির জন্য কাস্টম error পেজ তৈরি করতে পারেন, যা ব্যবহারকারীদের সুন্দরভাবে ত্রুটির বার্তা দেখাবে।
- Better User Experience: Exception mapping ব্যবহার করে আপনি ব্যবহারকারীদের সুন্দরভাবে ত্রুটি সম্পর্কে জানান দিতে পারেন এবং তাদের জন্য একটি উপযুক্ত রেসপন্স তৈরি করতে পারেন।
- Cleaner Code: Exception mapping ব্যবহার করলে আপনার অ্যাকশন ক্লাসে exception হ্যান্ডলিং কোড কমাতে সাহায্য করবে এবং কোডকে আরও পরিষ্কার এবং সহজ রাখবে।
সারাংশ
Struts 2 তে Exception Mapping ব্যবহার করে আপনি নির্দিষ্ট exception ঘটলে কিভাবে অ্যাপ্লিকেশন রেসপন্স করবে তা কনফিগার করতে পারেন। exception-mapping ট্যাগ ব্যবহার করে Struts 2 অ্যাপ্লিকেশনগুলোতে Exception Handling খুব সহজ হয়। আপনি বিভিন্ন exception-এর জন্য কাস্টম error পেজ তৈরি করতে পারেন, যা ব্যবহারকারীদের জন্য একটি ভালো অভিজ্ঞতা প্রদান করে।
Read more