Chào mừng đến với site của Bee! Chúc các bạn có những giây phút thực sự vui vẻ!!!

Thứ Bảy, 25 tháng 5, 2013

Viêt form đăng nhập bằng Servlet

- Servlet Java là 1 trong những công nghệ lập trình web chạy ở phía server. Thường ta viết 1 Servlet Java để xử lý nghiệp vụ cho 1 form nhập liệu trong trang web nào đó. Trong trường hợp này Servlet cần ít nhất 2 tác vụ cơ bản là doGet() và doPost() để xử lý yêu cầu từ form gửi về theo method GET hay method POST (nên dùng method gửi thông tin POST cho an toàn). Đoạn code định nghĩa servlet dangnhap1 của bạn nhìn chung là đúng, nhưng vì nó còn các lỗi sau nên chưa chạy được đúng yêu cầu:
- Chưa có 2 tác vụ doGet() và doPost().
- Kiểm tra field “adminname” nhưng lại truy xuất file “username”.
Chúng tôi đã hiệu chỉnh các lỗi trên và kiểm tra lại thì Servlet đã chạy tốt. Cụ thể đoạn code miêu tả servlet TestPassServlet của chúng tôi như sau:


package checkpassword;
//nhập cảng các package và class cần dùng
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
import java.io.*;
//định nghĩa Servlet theo yêu cầu
public class TestPassServlet extends HttpServlet {
//định nghĩa hàm constructor
public TestPassServlet() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//định nghĩa hằng cần dùng
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
//định nghĩa tác vụ khởi động thuộc tính
public void init(ServletConfig config) throws ServletException {
super.init(config);
try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }
catch(Exception e) { System.out.println("Error in conecting to Database:"+e); }
}
//định nghĩa tác vụ xử lý HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession(true);
try {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Connection cn=DriverManager.getConnection("jdbc:odbc:MyDatabase");
Statement st=cn.createStatement();
//xác định username do người dùng nhập
String username="";
if(request.getParameter("username")!=null)
username=request.getParameter("username");
//xác định password do người dùng nhập
String password="";
if(request.getParameter("password")!=null)
password=request.getParameter("password");
//xây dựng lệnh SQL kiểm tra
String sql="Select * from Admin where username='"+ username +"' and password='" + password + "'";
//Kiểm tra database
ResultSet rs=st.executeQuery(sql);
//Nếu không có record chứa thông tin phù hợp ==> báo lỗi
if(!rs.next()) {
out.println("");
out.println("dang nhap chua hop le");
out.println("");
} else { //nếu hợp lệ, báo OK
out.println("");
out.println("Xin chuc mung, ban da dang nhap dung.");
out.println("");
}
} catch(Exception e){ System.out.println(e); }
}
//định nghĩa tác vụ xử lý HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//thực hiện y như tác vụ doGet()
doGet(request, response);
}
//tác vụ dọn dẹp các tài nguyên của Servlet
public void destroy() {
}
private void jbInit() throws Exception {
}
}


- Dịch Servlet thành file khả thi *.class.
- Tạo trang web giao diện chứa form nhập liệu, form này chứa 2 textbox với tên chính xác là username và password (để tương thích với Servlet xử lý), thuộc tính action của form sẽ được thiết lập để miêu tả file Servlet xử lý.
- Chạy web browser, thử truy xuất trang web giao diện, nhập username và password để kiểm tra xem Servlet có thực hiện kiểm tra đúng với thông tin trong database không.
Lưu ý đoạn code Java do chúng tôi viết ở trên truy xuất database thông qua tên DSN MyDatabase nên hoàn toàn độc lập với vị trí file database và công nghệ quản lý file database, tuy nhiên file database này cần có table tên là “Admin” chứa danh sách các thông tin người dùng, mỗi người dùng được chứa trong 1 record có ít nhất 2 field: username, password.

Theo pcworld

Không có nhận xét nào: