Servlet
Servlet là một lớp Java chạy trên máy chủ ứng dụng (Servlet Container như Tomcat), được sử dụng để:
- Nhận và xử lý các yêu cầu HTTP từ client (trình duyệt).
- Truy xuất hoặc xử lý dữ liệu (ví dụ: từ cơ sở dữ liệu).
- Tạo ra phản hồi HTML hoặc các định dạng khác gửi về client.
Servlet được cấu hình qua web.xml hoặc dùng annotation @WebServlet.
🔎 Ví dụ xử lý GET trong Servlet
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.*;
public class HelloServlet extends HttpServlet {
/**
* Phương thức xử lý yêu cầu GET và trả về lời chào.
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// Lấy tham số "name" từ URL query string
String name = request.getParameter("name");
// Thiết lập kiểu nội dung phản hồi là HTML
response.setContentType("text/html");
// Lấy đối tượng PrintWriter để ghi dữ liệu phản hồi
PrintWriter out = response.getWriter();
out.println("<h1>Hello, " + name + "!</h1>");
}
}
📎 Ví dụ URL:
http://localhost:9999/hello?name=Hiep
⚙️ Ví dụ xử lý POST trong Servlet
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.*;
public class LoginServlet extends HttpServlet {
/**
* Phương thức xử lý yêu cầu POST từ form đăng nhập.
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// Lấy username và password từ form gửi lên
String username = request.getParameter("username");
String password = request.getParameter("password");
// Kiểm tra thông tin đăng nhập
if (authenticate(username, password)) {
// Nếu đúng, tạo session và chuyển hướng đến trang welcome
HttpSession session = request.getSession(); // tạo hoặc lấy session hiện tại
session.setAttribute("user", username); // lưu tên người dùng vào session
response.sendRedirect("welcome"); // chuyển hướng đến Servlet welcome
} else {
// Nếu sai, đặt thông báo lỗi vào request
request.setAttribute("errorMessage", "Sai username hoặc password!");
// Chuyển tiếp request về lại trang login.jsp để hiển thị thông báo
RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
dispatcher.forward(request, response);
}
}
/**
* Phương thức kiểm tra thông tin đăng nhập (giả lập).
*/
private boolean authenticate(String username, String password) {
// Kiểm tra username và password có trùng khớp không (mô phỏng kiểm tra với DB)
return "admin".equals(username) && "123456".equals(password);
}
}
📎 Mẫu form HTML gửi bằng POST:
<form action="login" method="post">
<label>Username:</label> <input type="text" name="username"><br>
<label>Password:</label> <input type="password" name="password"><br>
<input type="submit" value="Log in">
</form>
<!-- Hiển thị thông báo lỗi nếu có -->
<p style="color:red;">
${errorMessage}
</p>
