Form data processing হল ওয়েব অ্যাপ্লিকেশনগুলির একটি সাধারণ কার্যকলাপ যেখানে ইউজার ওয়েব ফর্মের মাধ্যমে ইনপুট ডেটা প্রদান করে এবং সার্ভলেট সেই ডেটা প্রক্রিয়া করে। সার্ভলেটস হ্যান্ডেল করতে সক্ষম যে কোনও ফর্ম ডেটা, যেমন GET বা POST রিকোয়েস্টের মাধ্যমে পাঠানো ডেটা, এবং এটি HTML form elements থেকে রিসিভ করতে পারে (যেমন টেক্সট ফিল্ড, চেকবক্স, রেডিও বাটন, ড্রপডাউন ইত্যাদি)।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে একটি ওয়েব ফর্ম তৈরি করা যায় এবং সার্ভলেট ব্যবহার করে সেই ফর্ম ডেটা প্রক্রিয়া করা যায়।
1. HTML Form তৈরি করা
প্রথমে, একটি HTML Form তৈরি করতে হবে যেখানে ইউজার তার ইনপুট প্রদান করবে। ফর্মটি method="POST" ব্যবহার করবে যাতে ইনপুট ডেটা সার্ভলেটে POST রিকোয়েস্টের মাধ্যমে পাঠানো হয়।
HTML Form Example (form.html)
<!DOCTYPE html>
<html>
<head>
<title>User Information Form</title>
</head>
<body>
<h2>User Information Form</h2>
<form action="processForm" method="POST">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required><br><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br><br>
<label for="gender">Gender:</label>
<input type="radio" id="male" name="gender" value="Male" required> Male
<input type="radio" id="female" name="gender" value="Female" required> Female<br><br>
<label for="hobbies">Hobbies:</label><br>
<input type="checkbox" name="hobbies" value="Reading"> Reading<br>
<input type="checkbox" name="hobbies" value="Sports"> Sports<br>
<input type="checkbox" name="hobbies" value="Traveling"> Traveling<br><br>
<label for="country">Country:</label>
<select name="country" id="country">
<option value="USA">USA</option>
<option value="India">India</option>
<option value="UK">UK</option>
</select><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
Explanation:
- এই ফর্মে ইউজার name, email, gender, hobbies, এবং country সম্পর্কিত ডেটা ইনপুট করবে।
- ফর্মটি POST পদ্ধতি ব্যবহার করবে এবং processForm URL-এ রিকোয়েস্ট পাঠাবে, যা সার্ভলেটে পরিচালিত হবে।
2. Create a Servlet to Process Form Data
এখন, একটি Servlet তৈরি করতে হবে যা ফর্ম ডেটা গ্রহণ করবে এবং প্রক্রিয়া করবে। সার্ভলেটটি doPost() মেথড ব্যবহার করবে, কারণ ফর্মটি POST পদ্ধতি ব্যবহার করে ডেটা পাঠায়।
Servlet Example (ProcessFormServlet.java)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ProcessFormServlet extends HttpServlet {
// Handle POST requests
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Set content type for the response
response.setContentType("text/html");
// Get the PrintWriter object to write the response
PrintWriter out = response.getWriter();
// Get form data from request
String name = request.getParameter("name");
String email = request.getParameter("email");
String gender = request.getParameter("gender");
String[] hobbies = request.getParameterValues("hobbies");
String country = request.getParameter("country");
// Generate the response
out.println("<html><body>");
out.println("<h2>User Information Received</h2>");
out.println("<p><strong>Name:</strong> " + name + "</p>");
out.println("<p><strong>Email:</strong> " + email + "</p>");
out.println("<p><strong>Gender:</strong> " + gender + "</p>");
out.println("<p><strong>Hobbies:</strong>");
if (hobbies != null) {
for (String hobby : hobbies) {
out.println(" " + hobby + " ");
}
} else {
out.println("No hobbies selected.");
}
out.println("</p>");
out.println("<p><strong>Country:</strong> " + country + "</p>");
out.println("</body></html>");
}
}
Explanation:
- request.getParameter(): এটি একক ইনপুট ফিল্ডের মান (যেমন name, email, gender, ইত্যাদি) প্রাপ্ত করতে ব্যবহৃত হয়।
- request.getParameterValues(): এটি একাধিক মান গ্রহণ করতে ব্যবহৃত হয়, যেমন checkbox আইটেমগুলির জন্য।
- response.setContentType("text/html"): এই কোডটি সার্ভলেটের আউটপুট HTML ফরম্যাটে পাঠাতে সেট করে।
3. Configure the Servlet in web.xml
এখন সার্ভলেটের জন্য কনফিগারেশন করা হবে web.xml ফাইলে। এই ফাইলে ProcessFormServlet সার্ভলেটটির ম্যাপিং করা হবে যাতে ফর্মটি যখন POST রিকোয়েস্ট পাঠাবে, তখন সার্ভলেটটি সেই রিকোয়েস্ট গ্রহণ করতে পারে।
web.xml Configuration
<web-app>
<servlet>
<servlet-name>ProcessFormServlet</servlet-name>
<servlet-class>ProcessFormServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProcessFormServlet</servlet-name>
<url-pattern>/processForm</url-pattern>
</servlet-mapping>
</web-app>
Explanation:
- : সার্ভলেটের নাম।
- : সার্ভলেট ক্লাসের পুরো পাথ (যেমন ProcessFormServlet ক্লাস)।
- : URL প্যাটার্নের মাধ্যমে ফর্মের রিকোয়েস্টটি সার্ভলেটে পাঠানো হবে। এখানে /processForm ব্যবহার করা হয়েছে।
4. Run the Application
এখন সার্ভলেটটি একটি Servlet Container (যেমন Apache Tomcat) তে রান করার জন্য প্রস্তুত। ফর্মটি POST পদ্ধতি ব্যবহার করবে এবং সার্ভলেটের /processForm URL-এ ডেটা পাঠাবে।
Steps:
- সার্ভলেট কনটেইনার (যেমন Tomcat) চালু করুন।
- form.html ফাইলটি ব্রাউজারে খুলুন।
- ফর্মটি পূর্ণ করে Submit বাটনে ক্লিক করুন।
- সার্ভলেট ফর্ম ডেটা গ্রহণ করে, ProcessFormServlet রেসপন্সে ডেটা প্রিন্ট করবে।
Conclusion
এই উদাহরণে, আমরা দেখলাম কিভাবে Servlet ব্যবহার করে HTML Form থেকে ডেটা প্রক্রিয়া করা যায়। Servlets ব্যবহার করে ফর্ম ডেটা GET বা POST পদ্ধতি ব্যবহার করে পাঠানো হয় এবং সার্ভলেট সেই ডেটা প্রক্রিয়া করে এবং ইউজারকে রেসপন্স পাঠায়।
Servlets ডাইনামিক ওয়েব কনটেন্ট এবং ডেটা প্রক্রিয়াকরণে খুবই কার্যকর এবং Java EE অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে ব্যবহৃত হয়।
Read more