Sử dụng Session
Khi một request được gửi đến server qua giao thức HTTP, server sẽ không thể lưu giữ các thông tin của client, vì thế người ta nghĩ ra nhiều phương pháp khác để hạn chế khuyết điểm này, Session là một trong số đó.Demo Session
Develop user story "Login" with mock data instead of database.Tạo một project với 2 servlet tên ServLogin và Dashboard. Dùng LinkedList để làm một "database đơn giản" :)
Code ở index.html
<html>
<head>
<title>Session Test</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h1>Hello, Guest!</h1>
<a href="ServLogin">Login to view this page.</a>
</body>
</html>
Code ở ServLogin
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
String user = request.getParameter("username");
HttpSession session = request.getSession();
if (user != null) {
session.setAttribute("username", user);
}
String username = (String) session.getAttribute("username");
if (username == null) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ServLogin</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Login</h1>");
out.println("<form action=\"ServLogin\">");
out.println("Username: <input name=\"username\">");
out.println("<input type=\"submit\" value=\"Login\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} else
if (!listUsername.contains(username)) {
session.setAttribute("username", null);
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Login failed</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Login failed</h1>");
out.println("<div>The username could not be found, try again.</div>");
out.println("<form action=\"ServLogin\">");
out.println("Username: <input name=\"username\">");
out.println("<input type=\"submit\" value=\"Login\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}
else {
RequestDispatcher rd = request.getRequestDispatcher("Dashboard");
rd.forward(request, response);
}
}
}
protected List<String> listUsername;
@Override
public void init() throws ServletException {
listUsername = new LinkedList<>();
listUsername.add("ducntgc00464");
}
Code ở Dashboard
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Dashboard</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, " + username + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
Hoàn thành
1. Giao diện trang index, click vào "Login to view this page." sẽ chuyển đến ServLogin, nếu đã từng đăng nhập thành công bạn sẽ không cần đăng nhập mà vẫn xem được trang.
2. Giao diện trang ServLogin khi chưa từng đăng nhập hoặc đã từng đăng nhập nhưng chưa thành công.
3. Giao diện trang ServLogin khi đăng nhập sai.
4. Khi đăng nhập thành công (foward đến Dashboard).
Download Source Code: http://www.mediafire.com/download/m2rlhfd4g73coyg/SessionTest.rar
0 nhận xét:
Đăng nhận xét
Bỏ capcha cho thầy tiện comment :P