Servlet ব্যবহার করে ডাটাবেস ইন্টিগ্রেশন একটি গুরুত্বপূর্ণ কাজ, যা ওয়েব অ্যাপ্লিকেশন তৈরি করার সময় ডাটাবেস থেকে ডেটা ফেচ (fetch), সংরক্ষণ (insert), আপডেট (update), বা ডিলিট (delete) করার সুযোগ দেয়। Servlet-এর মাধ্যমে JDBC (Java Database Connectivity) ব্যবহার করে ডাটাবেস ইন্টিগ্রেশন সহজেই করা যায়।
Servlet এবং ডাটাবেস ইন্টিগ্রেশনের ধাপসমূহ
- ডাটাবেস ড্রাইভার লোড করা:
ডাটাবেসের জন্য উপযুক্ত JDBC ড্রাইভার ব্যবহার করা। - ডাটাবেস কানেকশন তৈরি করা:
ডাটাবেস সার্ভারের সঙ্গে কানেকশন স্থাপন করা। - SQL স্টেটমেন্ট তৈরি এবং এক্সিকিউট করা:
ডাটাবেসে প্রয়োজনীয় SQL কমান্ড চালানো। - ডেটা প্রোসেস করা:
ডাটাবেস থেকে প্রাপ্ত ডেটা প্রোসেস করা বা ক্লায়েন্টে পাঠানো। - কানেকশন বন্ধ করা:
ডাটাবেস কানেকশন ক্লোজ করা।
উদাহরণ: Servlet এবং MySQL Integration
ডাটাবেস তৈরি করা
ডাটাবেস: userdb
টেবিল: users
CREATE DATABASE userdb;
USE userdb;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
Maven ডিপেনডেন্সি (MySQL Driver)
pom.xml:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
Servlet ক্লাস: ডাটাবেস থেকে ডেটা ফেচ করা
Servlet: UserServlet
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// ডাটাবেস কানেকশন স্ট্রিং
String jdbcURL = "jdbc:mysql://localhost:3306/userdb";
String dbUser = "root";
String dbPassword = "password";
Connection connection = null;
Statement statement = null;
try {
// JDBC ড্রাইভার লোড করা
Class.forName("com.mysql.cj.jdbc.Driver");
// ডাটাবেস কানেকশন তৈরি করা
connection = DriverManager.getConnection(jdbcURL, dbUser, dbPassword);
// SQL স্টেটমেন্ট তৈরি করা
statement = connection.createStatement();
String sql = "SELECT * FROM users";
// ডেটা ফেচ করা
ResultSet resultSet = statement.executeQuery(sql);
// HTML আউটপুট
out.println("<html><body>");
out.println("<h1>User List</h1>");
out.println("<table border='1'><tr><th>ID</th><th>Name</th><th>Email</th></tr>");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String email = resultSet.getString("email");
out.println("<tr><td>" + id + "</td><td>" + name + "</td><td>" + email + "</td></tr>");
}
out.println("</table>");
out.println("</body></html>");
} catch (Exception e) {
e.printStackTrace(out);
} finally {
try {
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace(out);
}
}
}
}
Servlet কনফিগারেশন
web.xml:
<web-app>
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/users</url-pattern>
</servlet-mapping>
</web-app>
ব্রাউজারে আউটপুট
URL: http://localhost:8080/your-app-name/users
আউটপুট (HTML):
<h1>User List</h1>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>
<tr>
<td>1</td>
<td>John Doe</td>
<td>john@example.com</td>
</tr>
<tr>
<td>2</td>
<td>Jane Smith</td>
<td>jane@example.com</td>
</tr>
</table>
Servlet দিয়ে ডাটাবেসে ডেটা ইনসার্ট করা
HTML Form
<!DOCTYPE html>
<html>
<head>
<title>Add User</title>
</head>
<body>
<h1>Add New User</h1>
<form action="addUser" method="POST">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email"><br><br>
<button type="submit">Add User</button>
</form>
</body>
</html>
Servlet: ডেটা ইনসার্ট করা
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AddUserServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String email = request.getParameter("email");
String jdbcURL = "jdbc:mysql://localhost:3306/userdb";
String dbUser = "root";
String dbPassword = "password";
Connection connection = null;
PreparedStatement statement = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(jdbcURL, dbUser, dbPassword);
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
statement = connection.prepareStatement(sql);
statement.setString(1, name);
statement.setString(2, email);
int rows = statement.executeUpdate();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
if (rows > 0) {
out.println("<h1>User added successfully!</h1>");
} else {
out.println("<h1>Failed to add user.</h1>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
Servlet কনফিগারেশন
web.xml:
<servlet>
<servlet-name>AddUserServlet</servlet-name>
<servlet-class>AddUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddUserServlet</servlet-name>
<url-pattern>/addUser</url-pattern>
</servlet-mapping>
সুবিধাসমূহ
- ডাটাবেস সংযোগ সহজতর:
Servlet-এর মাধ্যমে ডাটাবেসে সহজেই সংযোগ করা যায়। - ডায়নামিক ডেটা পরিচালনা:
ডাটাবেস থেকে ডেটা ফেচ এবং প্রোসেস করা সহজ। - ব্যবসায়িক লজিকের ইন্টিগ্রেশন:
ডাটাবেসের সাথে ব্যবসায়িক লজিক সংযুক্ত করা যায়।
Servlet এবং JDBC ব্যবহার করে ডাটাবেস ইন্টিগ্রেশন একটি কার্যকর পদ্ধতি, যা ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়ক। এটি ডেটা ফেচ, ইনসার্ট, আপডেট, এবং ডিলিট করার জন্য সহজ এবং কার্যকর সমাধান প্রদান করে।
Read more