Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 60 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
60
Dung lượng
2,87 MB
Nội dung
1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC o7planning MENU 7% Vòi xịt sân vườn thông minh Magic Hose 43% 139,000 MUA NGAY Máy đánh trứng Fujipan FJ6690HM (Trắng) 17% 165,000 MUA NGAY Máy đuổi côn trùng Pest Reject LP03 98,525 MUA NGAY Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 1 Giới thiệu 2 Các nguyên tắc kinh điển khi lập trình Servlet + JSP 3 Demo ứng dụng web sẽ làm 4 Chuẩn bị database 5 Tạo WebApp Project 6 Cấu hình môi trường chạy (Runtime Environment) 7 Chạy ứng dụng lần đầu tiên 8 Download và khai báo thư viện JDBC 9 Download và khai báo thư viện JSTL 10 Các class javabeans mô phỏng bảng trong DB 11 Các class tiện ích kết nối Database 12 Các class tiện ích & thao tác dữ liệu 13 Tạo Filter kết nối database 14 Filter đọc Cookie tự động login 15 Filter mã hóa ký tự 16 Các trang tái sử dụng 17 Chức năng trang chủ 18 Chức năng login LoginServlet 19 Trang danh sách sản phẩm 20 Chức năng thêm sản phẩm 21 Chức năng sửa thông tin sản phẩm 22 Chức năng xóa sản phẩm http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 1/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 5 0 0 1 Giới thiệu Tài liệu được viết dựa trên: Eclipse 4.5 MARS (ok for Eclipse 4.4 LUNA) Tomcat 8.x Document History: 12122014: JSP + Servlet + Filter + JSTL 06082015: JSP + Servlet + Filter + JSTL + JDBC Trong tài liệu này tôi sẽ hướng dẫn từng bước cách tạo một ứng dụng web đơn giản kết hợp Servlet + JSP + Filter + JSP EL + JDBC. Hãy đảm bảo rằng bạn đã nắm vững Servlet, JSP và Filter và JDBC trước khi bắt đầu. Nếu không, bạn có thể tham khảo tại: Servlet: http://o7planning.org/web/fe/default/vi/document/12760/huongdanlaptrinhjavaservletchonguoi moibatdau Filter: http://o7planning.org/web/fe/default/vi/document/753859/huongdansudungjavaservletfilter http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 2/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC JSP: http://o7planning.org/web/fe/default/vi/document/20397/huongdanlaptrinhjavajspchonguoimoi batdau JDBC http://o7planning.org/web/fe/default/vi/document/12562/huongdansudungjdbcketnoicosodulieu 2 Các nguyên tắc kinh điển khi lập trình Servlet + JSP Đây là các nguyên tắc mà bạn nên nhớ để có thể xây dựng một ứng dụng Web sử dụng Servlet + JSP thỏa mãn tiêu chí: code đơn giản dễ hiểu và dễ dàng bảo trì Các nguyên tắc: 1. Đừng bao giờ cho phép người dùng truy cập trực tiếp vào trang JSP của bạn 2. Chỉ coi JSP là cái để hiển thị giao diện 3. Servlet đóng vai trò là người điều khiển luồng đi của ứng dụng và sử lý logic chương trình 4. Mở kết nối JDBC và quản lý giao dịch trong Filter (Không bắt buộc) Theo nguyên tắc 1: Không bao giờ cho phép người dùng truy cập trực tiếp vào trang JSP của bạn, điều đó có nghĩa là mọi request của người dùng thường là: Một nguồn dữ liệu tĩnh (image, css, js, ) Hoặc một servlet Như vậy bạn phải cất giấu các file JSP của bạn tại một nơi nào đó mà người dùng không thể truy cập vào Chẳng hạn đặt trong thư mục WEBINF hoặc thư mục con của nó. Trong ví dụ này tôi sẽ để các file jsp tại thư mục WEBINF/views http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 3/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Khi request của người dùng tới một Servlet, nó sẽ sử lý yêu cầu của người dùng, chẳng hạn Insert, update và truy vấn dữ liệu, cuối cùng là forward tới trang JSP để hiển thị dữ liệu. Như vậy mỗi servlet có 0 hoặc nhiều trang JSP tương ứng (Thường chỉ cần 1) Nguyên tắc 2: Chỉ coi JSP là nơi hiển thị dữ liệu, điều đó có nghĩa là bạn không nên xử lý logic ứng dụng trên JSP, chẳng hạn như update, insert, delete, , và không điều hướng trên trang JSP 3 Demo ứng dụng web sẽ làm Bạn có thể xem trước Demo ứng dụng Web sẽ làm: 4 Chuẩn bị database Trong tài liệu này tôi hướng dẫn bạn làm việc với một trong 3 cơ sở dữ liệu Oracle, MySQL hoặc SQL Server Bạn cần chạy các script để tạo một số bảng và dữ liệu cần thiết cho ví dụ này ORACLE: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ‐‐ Create table create table USER_ACCOUNT ( USER_NAME VARCHAR2(30) not null, GENDER VARCHAR2(1) not null, PASSWORD VARCHAR2(30) not null, primary key (USER_NAME) ); ‐‐ Create table create table PRODUCT ( CODE VARCHAR2(20) not null, NAME VARCHAR2(128) not null, PRICE FLOAT not null, primary key (CODE) ) ; ‐‐ Insert data: ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ insert into user_account (USER_NAME, GENDER, PASSWORD) values ('tom', 'M', 'tom001'); insert into user_account (USER_NAME, GENDER, PASSWORD) values ('jerry', 'M', 'jerry001'); insert into product (CODE, NAME, PRICE) values ('P001', 'Java Core', 100); insert into product (CODE, NAME, PRICE) 31 values ('P002', 'C# Core', 90); http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 4/60 1/14/2016 31 32 33 34 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC values ('P002', 'C# Core', 90); ‐‐ Commit Commit; MYSQL: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ‐‐ Create table create table USER_ACCOUNT ( USER_NAME VARCHAR(30) not null, GENDER VARCHAR(1) not null, PASSWORD VARCHAR(30) not null, primary key (USER_NAME) ); ‐‐ Create table create table PRODUCT ( CODE VARCHAR(20) not null, NAME VARCHAR(128) not null, PRICE FLOAT not null, primary key (CODE) ) ; ‐‐ Insert data: ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ insert into user_account (USER_NAME, GENDER, PASSWORD) values ('tom', 'M', 'tom001'); insert into user_account (USER_NAME, GENDER, PASSWORD) values ('jerry', 'M', 'jerry001'); insert into product (CODE, NAME, PRICE) values ('P001', 'Java Core', 100); insert into product (CODE, NAME, PRICE) values ('P002', 'C# Core', 90); ? SQL SERVER: 10 11 12 13 14 15 16 17 18 19 20 ‐‐ Create table create table USER_ACCOUNT ( USER_NAME VARCHAR(30) not null, GENDER VARCHAR(1) not null, PASSWORD VARCHAR(30) not null, primary key (USER_NAME) ); ‐‐ Create table create table PRODUCT ( CODE VARCHAR(20) not null, NAME VARCHAR(128) not null, PRICE FLOAT not null, primary key (CODE) ) ; ‐‐ Insert data: ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ 21 insert into user_account (USER_NAME, GENDER, PASSWORD) http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 5/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 21 22 23 24 25 26 27 28 29 30 31 insert into user_account (USER_NAME, GENDER, PASSWORD) values ('tom', 'M', 'tom001'); insert into user_account (USER_NAME, GENDER, PASSWORD) values ('jerry', 'M', 'jerry001'); insert into product (CODE, NAME, PRICE) values ('P001', 'Java Core', 100); insert into product (CODE, NAME, PRICE) values ('P002', 'C# Core', 90); 5 Tạo WebApp Project Trên Eclipse chọn: File/New/Other http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 6/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 7/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Project đã được tạo ra http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 8/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Thêm file index.html index.html 10 11 12 13 14 15 16 17 18 19 Simple Web Application Simple Login Web Application using JSP/Servlet Home Login Product List ? 6 Cấu hình môi trường chạy (Runtime Environment) http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 9/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Ứng dụng cần chạy trên một WebServer, chẳng hạn Tomcat Server, bạn có thể tham khảo tài liệu hướng dẫn download và khai báo Server Tomcat vào Eclipse tại: http://o7planning.org/web/fe/default/vi/document/19569/khaibaoservertomcattreneclipse Nhấn phải chuột vào project SimpleWebApp chọn Properties http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 10/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ? package org.o7planning.simplewebapp.servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = { "/createProduct" }) public class CreateProductServlet extends HttpServlet { private static final long serialVersionUID = 1L; public CreateProductServlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getServletContext() .getRequestDispatcher("/WEB‐INF/views/createProductView.jsp"); dispatcher.forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } DoCreateProduct.java package org.o7planning.simplewebapp.servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 14 import org.o7planning.simplewebapp.beans.Product; 15 import org.o7planning.simplewebapp.utils.DBUtils; 16 import org.o7planning.simplewebapp.utils.MyUtils; 17 18 @WebServlet(urlPatterns = { "/doCreateProduct" }) 19 public class DoCreateProductServlet extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 public DoCreateProductServlet() { 23 super(); 24 } 25 26 @Override 27 protected void doGet(HttpServletRequest request, HttpServletResponse response) http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 46/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = MyUtils.getStoredConnection(request); String code = (String) request.getParameter("code"); String name = (String) request.getParameter("name"); String priceStr = (String) request.getParameter("price"); float price = 0; try { price = Float.parseFloat(priceStr); } catch (Exception e) { } Product product = new Product(code, name, price); String errorString = null; // Mã sản phẩm phải là chuỗi chữ [a‐zA‐Z_0‐9] // Có ít nhất một ký tự String regex = "\\w+"; if (code == null || !code.matches(regex)) { errorString = "Product Code invalid!"; } if (errorString == null) { try { DBUtils.insertProduct(conn, product); } catch (SQLException e) { e.printStackTrace(); errorString = e.getMessage(); } } // Lưu thông tin vào request attribute trước khi forward sang views request.setAttribute("errorString", errorString); request.setAttribute("product", product); // Nếu có lỗi forward sang trang edit if (errorString != null) { RequestDispatcher dispatcher = request.getServletContext() .getRequestDispatcher("/WEB‐INF/views/createProductView.jsp"); dispatcher.forward(request, response); } // Nếu mọi thứ tốt đẹp // Redirect sang trang danh sách sản phẩm else { response.sendRedirect(request.getContextPath() + "/productList"); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } /WEBINF/views/createProductView.jsp http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 47/60 1/14/2016 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Create Product Create Product ${errorString} Code Name Price Cancel http://localhost:8080/SimpleWebApp/createProduct http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 48/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 21 Chức năng sửa thông tin sản phẩm Mô hình chức năng sửa thông tin sản phẩm: EditProductServlet.java package org.o7planning.simplewebapp.servlet; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; 10 import javax.servlet.http.HttpServlet; http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 49/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.o7planning.simplewebapp.beans.Product; import org.o7planning.simplewebapp.utils.DBUtils; import org.o7planning.simplewebapp.utils.MyUtils; @WebServlet(urlPatterns = { "/editProduct" }) public class EditProductServlet extends HttpServlet { private static final long serialVersionUID = 1L; public EditProductServlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = MyUtils.getStoredConnection(request); String code = (String) request.getParameter("code"); Product product = null; String errorString = null; try { product = DBUtils.findProduct(conn, code); } catch (SQLException e) { e.printStackTrace(); errorString = e.getMessage(); } // Không có lỗi // Sản phẩm không tồn tại để edit // Redirect sang trang danh sách sản phẩm if (errorString != null && product == null) { response.sendRedirect(request.getServletPath() + "/productList"); return; } // Lưu thông tin vào request attribute trước khi forward sang views request.setAttribute("errorString", errorString); request.setAttribute("product", product); RequestDispatcher dispatcher = request.getServletContext() .getRequestDispatcher("/WEB‐INF/views/editProductView.jsp"); dispatcher.forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } DoEditProduct.java package org.o7planning.simplewebapp.servlet; import java.io.IOException; import java.sql.Connection; http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc ? 50/60 1/14/2016 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC import java.sql.Connection; import java.sql.SQLException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.o7planning.simplewebapp.beans.Product; import org.o7planning.simplewebapp.utils.DBUtils; import org.o7planning.simplewebapp.utils.MyUtils; @WebServlet(urlPatterns = { "/doEditProduct" }) public class DoEditProductServlet extends HttpServlet { private static final long serialVersionUID = 1L; public DoEditProductServlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = MyUtils.getStoredConnection(request); String code = (String) request.getParameter("code"); String name = (String) request.getParameter("name"); String priceStr = (String) request.getParameter("price"); float price = 0; try { price = Float.parseFloat(priceStr); } catch (Exception e) { } Product product = new Product(code, name, price); String errorString = null; try { DBUtils.updateProduct(conn, product); } catch (SQLException e) { e.printStackTrace(); errorString = e.getMessage(); } // Lưu thông tin vào request attribute trước khi forward sang views request.setAttribute("errorString", errorString); request.setAttribute("product", product); // Nếu có lỗi forward sang trang edit if (errorString != null) { RequestDispatcher dispatcher = request.getServletContext() .getRequestDispatcher("/WEB‐INF/views/editProductView.jsp"); dispatcher.forward(request, response); } // Nếu mọi thứ tốt đẹp // Redirect sang trang danh sách sản phẩm else { response.sendRedirect(request.getContextPath() + "/productList"); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } http://o7planning.org/web/fe/default/vi/document/72162/taomotungdungwebdongiansudungservletjspvajdbc 51/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC /WEBINF/views/editProductView.jsp 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ? Edit Product Edit Product ${errorString} Code ${product.code} Name Price [...]... http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 12/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 13/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Ứng dụng đã được chạy: OK, tới đây mọi thứ đều tốt đẹp. Chúng ta sẽ bắt đầu lập trình một ứng dụng Web thực sự...1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 11/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 7 Chạy ứng dụng lần đầu tiên Nhấn phải chuột vào Project SimpleWebApp, chọn: Run As/Run on Server http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc. .. http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 31/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 44 45 } 16 Các trang tái sử dụng Một số trang JSP sẽ được sử dụng để nhúng vào các trang khác tại thời điểm Runtime, thông qua việc sử dụng: 1 2 3 4 < /jsp: include> < /jsp: include>... < /jsp: include> http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc ? 35/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Chạy lại ứng dụng của bạn, và thử 2 đường dẫn: http://localhost:8081/SimpleWebApp/ http://localhost:8081/SimpleWebApp/home “ Chú ý: Nếu vì một lý do gì đó, đường dẫn http://localhost:8080/SimpleWebApp/ vẫn chuyển tới... http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 14/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Kết quả download được: Copy các thư viện này vào WEB INF/lib: 9 Download và khai báo thư viện JSTL Bạn cần download 2 thư viện JSTL để có thể sử dụng chúng trong JSP: javax.servlet .jsp. jstl*.jar javax.servlet .jsp. jsltapi*.jar... http://mvnrepository.com/artifact/org.glassfish .web/ javax.servlet .jsp. jstl http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 15/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC http://mvnrepository.com/artifact/javax.servlet .jsp. jstl/javax.servlet .jsp. jstlapi Copy 2 file jar bạn vừa download được vào thư mục /WEB INF/lib: http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc. .. } 13 Tạo Filter kết nối database Trong JDBCFilter tôi có kiểm tra xem các request nào thực sự gọi tới một Servlet, để dễ hiểu bạn có thể xem hình dưới đây, nó mô tả quan hệ giữa các khái niệm của Servlet http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 26/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC JDBCFilter với khai báo urlpattern = /*, điều đó có nghĩa là mọi request của người dùng đều phải đi qua filter... http://java.sun.com/xml/ns/javaee /web app_3_0.xsd" id="WebApp_ID" version="3.0"> 7 SimpleWebApp http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc ? 33/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 SimpleWebApp... http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 16/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 10 Các class javabeans mô phỏng bảng trong DB Tạo một số class Javabean, mỗi class mô phỏng một bảng trong database: UserAccount.java 1 2 3 4 5 6 package org.o7planning.simplewebapp.beans; public class UserAccount { public static final String GENDER_MALE ="M";... // return SQLServerConnUtils_SQLJDBC.getSQLServerConnection_SQLJDBC(); } public static void closeQuietly(Connection conn) { try { conn.close(); } catch (Exception e) { } 25 } http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc ? 22/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC 25 26 27 ... http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 13/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Ứng dụng đã được chạy: OK, tới đây mọi thứ đều tốt đẹp. Chúng ta sẽ bắt đầu lập trình một ứng dụng Web thực sự... http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 9/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC Ứng dụng cần chạy trên một WebServer, chẳng hạn Tomcat Server, bạn có thể tham khảo tài liệu hướng dẫn... Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC http://o7planning.org /web/ fe/default/vi/document/72162/taomotungdung web dongiansudungservlet jsp va jdbc 11/60 1/14/2016 Tạo một ứng dụng Web đơn giản sử dụng Servlet, JSP và JDBC