- 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ùngimport javax.servlet.*;import javax.servlet.http.*;import java.util.*;import java.sql.*;import java.io.*;//định nghĩa Servlet theo yêu cầupublic class TestPassServlet extends HttpServlet {//định nghĩa hàm constructorpublic TestPassServlet() {try {jbInit();} catch (Exception ex) {ex.printStackTrace();}}//định nghĩa hằng cần dùngprivate static final String CONTENT_TYPE = "text/html; charset=UTF-8";//định nghĩa tác vụ khởi động thuộc tínhpublic 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 requestpublic 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ậpString username="";if(request.getParameter("username")!=null)username=request.getParameter("username");//xác định password do người dùng nhậpString password="";if(request.getParameter("password")!=null)password=request.getParameter("password");//xây dựng lệnh SQL kiểm traString sql="Select * from Admin where username='"+ username +"' and password='" + password + "'";//Kiểm tra databaseResultSet rs=st.executeQuery(sql);//Nếu không có record chứa thông tin phù hợp ==> báo lỗiif(!rs.next()) {out.println("");out.println("dang nhap chua hop le");out.println("");} else { //nếu hợp lệ, báo OKout.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 requestpublic 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 Servletpublic void destroy() {}private void jbInit() throws Exception {}}- 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:
Đăng nhận xét