SlideShare a Scribd company logo
http://dev.vast.vn/tuananh/Web/C%C4%90015
Tutorial Công nghệ JSP/Serlet/JavaBeans - Mô hình MVC
trong java
Nội dung đề tài
A. Kiến thức cần nắm
 1. Tổng quan về JSP và Servlet
o 1.1 Giới thiệu về Servlet
o 1.2 Giới thiệu về JSP
 2. JSP
o 2.1 Kiến trúc JSP trong ứng dụng Web
o 2.2 Chu trình sống của JSP
o 2.3 Các cú pháp cơ bản của JSP
 2. Servlet
o 3.1 Kiến trúc servlet
o 3.2 Các phương thức cơ bản của Servlet
o 3.3 Chu trình sống của Servlet
o 3.4 Quan hệ giữa servlet và JSP
 4. HTML form trong JSP
o 4.1 Tạo form HTML
o 4.2 Sử dụng đối tượng request
o 4.3 Xử lý các biến form mang nhiều giá trị
o 4.4 Xử lý nhúng trang và chuyển trang bằng các thẻ
 5. JavaBeans
o 5.1 Cơ bản về JavaBeans
o 5.2 Các thẻ chuẩn của JavaBeans trong JSP
 6. Mô hình MVC trong ứng dụng Web với Java
o 6.1 Khái niệm cơ bản về mô hình MVC
o 6.2 Mô hình MVC trong ứng dụng Web với java
B. Tutorial Demo
 1. Hướng dẫn cài đặt công cụ lập trình
o 1.1 Eclipse IDE
o 1.2 Tomcat Apache
o 1.3 MySQL Workbench
 2. Tutorial Demo
 3. Source code Demo
C. Tài liệu tham khảo
A. Kiến thức cần nắm
1. Tổng quan về JSP và Servlet
1.1 Giới thiệu về Servlet
 Servlet là các thành phần máy chủ nhúng trên trình chủ Web server thực hiện xử lý yêu cầu và phát
sinh ra các trang Web động trả về máy khách. Để sử dụng được Servlet cần có các trình chủ Java và hỗ
trợ triệu gọi Servlet như Apache, JRun, Web Logic … Mặc dù vậy biên dịc và tạo Sevlet chúng ta chỉ cần
đến trình biên dịch JDK mà không cần đến các trình chủ.
 Servlet là trung tâm của công nghệ Web trong Java. Servlet thay thế cho các ứng dụng CGI truyền
thống. Muốn hiểu rõ về lập trình Web trong java trước hết nên tìm hiểu rõ cơ chế hoạt động của
servlet
1.2 Giới thiệu về JSP
 JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting
Preprocessor - tạm dịch là "Bộ tiền xử lý văn lệnh Java" - là một công nghệ Java cho phép các nhà phát
triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi
hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động
xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.
 JSP là cách đơn giản hóa hơn cho Servlet. Nếu như đối với Servlet phải viết mã Java và biên dịch bằng
tay trước khi sử dụng với trình chủ Web server thì JSP không cần điều này. JSP viết mã Java tương tự
Servlet nhưng cho phép trộn lẫn Java với các thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trình
khác gửi đến trang.
 JSP đơn giản và dễ sử dụng hơn Servlet mặc dù sau khi biên dịch và thực thi chúng chỉ là một.
2. JSP
2.1 Kiến trúc JSP trong ứng dụng Web
Đây là cách thực nạp, dịch và thực thi trang của một trang JSP khi được triệu gọi trên Web Server
2.2 Chu trình sống của JSP
Trang JSP có chu trình sống xác định tính từ khi hệ thống đọc biên dịch trang JSP, gọi thực thi và
loại bỏ trang ra khỏi bộ nhớ. Chu trình sống của trang JSP gồm có 5 giai đoạn sau:
2.2.1 Biên dịch trang
 Khi trình duyệt yêu cầu trang JSP, Web server sẽ kiểm tra xem trang JSP đã được biên dịch hay chưa.
Nếu chưa biên dịch hoặc đã biên dịch nhưng trang JSP mới vừa thay đổi mã nguồn thì Web Server sẽ
thực hiện biên dịch trang JSP. Quá trình biên dịch JSP thực tế là chuyển trang JSP thành servlet. File
biên dịch .class của trang chỉ diễn ra một lần. Nếu trang đã biên dịch và sau đó không bị thay đổi trong
mã nguồn thì quá trình biên dịch sẽ không xảy ra nữa, do đó mà tốc độ thực thi sẽ nhanh hơn. Sau khi
biên dịch, mã trang sẽ được nạp vào bộ nhớ để thực thi
 Quá trình biên dich trang JSP sẽ được diễn ra như sau:
Bước 1: Kiểm tra xem trang đã được dịch thành mã nguồn tương đương servlet hay chưa.
Bước 2: Nếu chưa được biên dịch thì trang JSP sẽ được biên dịch thành file nguồn .java theo cấu trúc
của servlet. Gọi trình biên dịch javac biên dịch file nguồn .java thành file thực thi của servlet .class.
Bước 3: Nạp servlet đã biên dịch ở bước 2, thực thi trả kết quả về cho trình khách.
Bước 4: Nếu file JSP đã được biên dịch trước đó : thực hiện kiểm tra xem nội dung file .jsp có thay đổi
không, Nếu có thì quay lại bước 2 biên dịch lại trang, nếu không thì quay lại bước 3.
2.2.2 Nạp trang
 Kể từ giai đoạn này, quá trình nạp trang tương tự như servlet (trang JSP sau khi biên dịch có thể coi
như một servlet). Chỉ có một điểm khác là servlet chỉ được nạp một lần trong khi mã trang JSP mặc dù
đã biên dịch nhưng phải nạp lại nhiều lần mỗi khi web server nhận được yêu cầu trang từ trình duyệt.
2.2.3 Khởi tạo
 Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khỏi tạo trang. Và mặc dù JSP được
biên dịch ra servlet nhưng phương thức khởi tạo cho trang JSP lại mang tên là jspInit() chứ không phải
là init() như servlet.
2.2.4 Thực thi
 Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService (khác với servlet gọi đến
doPost(), doGet() hoặc service() ). Phương thức _jspService sẽ chuyển đến hai lớp đối tượng
HttpServletRequest và HttpServletResponse để đọc và ghi kết xuất trả về trình khách.
2.2.5 Dọn dẹp
 Khi trang JSP đã thực thi xong, trình chủ Web Server sẽ gọi phương thức jspDestroy() để giải phóng mã
trang khỏi bộ nhớ. Tương tự như trong Servlet, có thể cài đặt phương thức jspDestroy() thực hiện giải
phóng vùng nhớ hoặc đóng kết nối trả về tài nguyên cho hệ thống.
2.3 Các cú pháp cơ bản của JSP
2.3.1 Sử dụng thẻ bọc mã <% %>
 Ưu điểm của trang JSP so với Servelet là khả năng nhúng mã Java giữa các thẻ định dạng HTML. Mã
java được đặt trong cặp dấu <% %>. Bên trong mã Java nếu muốn kết xuất dữ liệu HTML , gọi phương
thức prinln(“”) như trong servlet của đối tượng out. Đối tượng out là đối tượng mặc định của JSP được
Web server cung cấp để ghi kết xuất trả về client. Thẻ HTML và mã Java có thể trộn lẫn với nhau.
 Ví dụ:
 Khi sử dụng mã java trong JSP, cần phải import gói thư viện vào như trong class bình thường (xem ví
dụ)
Kết quả thu được sau kết xuất:
2.3.2 Hiển thị kết xuất bằng cú pháp <%= %>
 Thay vì sử dụng cú pháp <% %> để xử lý một khối gồm nhiều lênh, sử dụng cú pháp <%= %> chỉ để hiển
thị kết xuất giá trị của 1 biến hay một hàm nào đó.
Ví dụ trên ta sửa thành:
Kết quả cho ta kết xuất hoàn toàn như nhau về cấu trúc
 Ở đây cuối cú pháp <%= %> không có dấu “;” bởi vì khi thực thi trang, biểu thức nằm trong <%= %> sẽ
được chuyển thành lệnh out.println(); .
Tương đương như sau:
Ket xuat <%= date %> được dịch thành: out.println(“ket xuat”+date);
Cú pháp này ngắn gọn tiện lợi hơn so với dùng cú pháp <% %>
2.3.3 Chèn chú thích vào mã JSP
 Giống như trong Java, JSP cho phép dùng cú pháp: “ // ” để chú thích một dòng mã lệnh; “/* */” để
chú thích trên nhiều dòng.
 Ngoài ra, JSP còn hỗ trợ thêm cú pháp <%-- --%>. Tất cả các khối lệnh Java và HTML nằm giữa 2 dấu
chú thích này sẽ được trình dịch bỏ qua xem như một lời chú thích
2.3.4 Khai báo phương thức và biến hằng với cú pháp <%! %>
 Cú pháp <%! %> cho phép định nghĩa một hoặc nhiều phương thức và biến. Phương thức và biến sau đó
có thể được triệu gọi bất kì noi nào trong trang JSP. Phương thức và biến này giống như phương thức
và biến public.
 Ví dụ:
Kết quả thu được là:
3. Servlet
3.1 Kiến trúc Servlet
 Gói javax.servlet cung cấp các giao diện và các lớp để xây dựng các Servlet. Kiến trúc của chúng được
mô tả như sau:
 Trước hết cần tìm hiểu về thư viện javac.servlet (gói thư viện này nằm trong file servlet-api.jarnếu sử
dụng Tomcat Apache) chứa các lớp cần thiết như GenericServlet. HttpServlet … để xây dựng servlet kế
thừa từ những servlet chuẩn hiện có.
 Việc đầu tiên khi xây dựng một Servlet là chọn một lớp chuẩn servlet hiện có. GenericServlet là lớp cơ
bản nhất, khởi nguồn của mọi servlet. Khai báo một GenericServlet như sau:
public class HelloServlet extends GenericServlet {
…
}
 Khi khai báo kế thừa GenericServlet, mặc định sẽ có 1 phương thức kế thừa duy nhất mang tên
service() theo theo khuôn mẫu
public class HelloServlet extends GenericServlet {
-->public void service( ServletRequest request, ServletResponse response) throws IOException {
-->…
-->}
}
Phương thức service() tiếp nhân hai tham số. Một tham số kiểu đối tượng ServletRequest dùng tiếp
nhận dữ liệu do trình duyệt phía máy khách chuyển lên. Tham số thứ hai kiểu ServletResponse dùng để
ghi kết xuất và trả dữ liệu đã xử lý về cho trình duyệt hiển thị phía máy khách. Yêu cầu của phương
thức service() là phải cho phép thương thức ném ra ngoại lệ IOException trong trường hợp xuất nhập
dữ liệu gặp lỗi.
 Demo “HelloServlet” của ở đây chưa cần lấy thông tin chuyển lên từ trình duyệt của đối số request mà
chỉ dùng đối số response để ghi kết xuất.
Trước hết đối tượng response gọi phương thức setContentType() nhằm định dạng kiểu nội dung dữ liệu
cần kết xuất để trình khác biết cách hiển thị, phương thức này được gọi như sau:
response.setContentType(“text/html”);
Nếu muốn hiển thị tiếng Việt ta cần set như sau:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
Để ghi kết xuất trở lại trình khác công việc tiếp theo mà servlet phải làm là lấy về lường xuất. Ở đây
luồng xuất được sử dụng là PrintWriter từ đối tượng response.
PrintWriter out = response.getWriter();
Từ đối tương out này chúng ta có thể in kết xuất ra trả về trình khách.
Kết xuất trả về trình duyệt:
Lưu ý : Muốn chạy được servlet trong eclipse ta phải khai báo tên và đường dẫn trong file web.xml của
project như sau:
3.2 Các phương thức xử lý cơ bản của servlet
 Lớp GenericServlet là lớp cài đặt tổng quát cho đặc tả giao tiếp (interface) mang tên Servlet do Sun
đưa ra gồm có các phương thức phục vụ cho toàn bộ công việc của servlet: khởi tạo : init() ; phục vụ :
service() ; hủy : destroy() ; trả về thông tin cấu hình : getServletConfig() ; trả về thông tin servlet :
getServletInfo().
 Lớp giao tiếp được mô tả như sau:
interface Servlet() {
void destroy()
ServletConfig getServletConfig();
ServletInfo getServletInfo();
void init(ServletConfig config)
void service (ServletRequest request, ServletResponse response)
}
3.2.1 Phương thức khỏi tạo init()
public void init
 public void init()
Phương thức khởi tạo được gọi đầu tiên. Trình chủ Web server nạp mã thực thi của servlet từ tập tin .class
vào bộ nhớ và bắt đầu cho phép servlet hoạt động. Có thể dựa vào phương thức này để khai báo các biến
môi trường và giá trị ban đầu cần thiết cho quá trình thực thi servlet sẽ diễn ra tiếp theo. Thông thường
trong phương thức init() nên khởi tạo các giá trị mảng, tạo sẵn kết nối với cơ sở dữ liệu, nạp các lớp thư
viện cần thiết… Ví dụ việc nạp trình điều khiển JDBC dùng để truy xuất dữ liệu tạo sẵn kết nối đến nguồn dữ
liệu cho servlet như sau:
==> Cơ sở dữ liệu được kết nối đến servlet ngay trong phương thức khởi tạo init() 3.3.2 Phương thức phục
vụ !!service()
public void service(ServletRequestrequest, ServletResponse response )
throws IOException {
}
 Sau phương thức khởi tạo hoàn thành, Web server sẽ gọi đến phương thức phục vụ service(). Phương
thức này được coi là trung tâm xử lý của servlet. Khi Web server nạp servlet vào bộ nhớ thì phương
thức init() được gọi đầu tiên và duy nhất một lần, còn phương thức service()có thể được triệu gọi
nhiều lần mỗi khi ứng dụng có yêu cầu đến servlet. Bên trong phương thức service() dùng hai đối tượng
tham số ServletRequest và ServletResponse để nhận và kết xuất dữ liệu
3.2.3 Phương thức hủy !!destroy()
 Khi servlet không còn dùng đến nữa hoặc hết thời gian qui định lưu giữ trong bộ nhớ của Web server,
nó sẽ bị Web server giải phóng. Trước khi servlet bị hủy phương thức destroy() sẽ được gọi. Nếu như
dùng phương thức init() để thực hiện khởi tạo biến cho servlet thì trong phương thức destroy() lại là
nơi để dọn dẹp tài nguyên mà các biến chiếm giữ, đóng kết nối mà phương thức init() đã mở …
3.2.4 Lớp cơ sở HttpServlet
 HttpServlet là một lớp trìu tượng cung cấp một khung làm việc để xử lý các yêu cầu GET, POST của
giao thức HTTP, HTTPServlet kế thừa giao diện Servlet cộng với một số các phương thức khác.
 HTTP sinh ra các trang HTML và ta có thể nhúng các Servlet vào các trang HTML.
 Khi có một yêu cầu gửi tới từ Client, Servlet sẽ xử lý yêu cầu nhận được và trả lại kết quả cho Client.
Hai phương thức doGet() và doPost() được sử dụng chung để nhận và gửi tin trong các Servlet.
 Một Servlet bất kỳ được tạo ra kế thừa HttpServlet và ghi đè ít nhất một trong các phương thức
doGet() để thực thi thao tác GET của HTTP hay doPost() của thao tác POST của HTTP.
 Đối tượng của HttpServlet Request cung cấp thông tin giống như biến môi trường của CGI nhưng theo
một hướng chuẩn, Nó cung cấp những phương thức mở ra các tham số HTTP từ dãy các câu truy vấn
hoặc từ nội dung của yêu cầu phụ thuộc vào kiểu yêu cầu (GET hay POST)
 Ví dụ demo sử dụng lớp HttpServlet: servlet đếm số lần truy cập vào trang
==> Kết quả nhận được:
doGet() có hai tham số đối tượng thuộc hai lớp HttpServletRequest và HttpServletResponse (cả hai
lớp này được định nghĩa trong javax.servlet.http)/ Hai đối tượng này cho phép truy cập đầy đủ tất
cả các thông tin yêu cầu và cho phép gửi dữ liệu kết quả cho Client để trả lời cho các yêu cầu đó.
doGet() sử dụng đối tượng thứ nhất request để đọc các phần đầu, tiêu đề (header) của HTTP gửi
tới (ví dụ như dữ liệu dạng HTML mà người dùng nhập vào), và sử dụng đối tượng thứ hai response
để xác định dòng trả lời cho HTTP (xác định kiểu nội dung trao đổi, đặt vào Cookie). Phải dùng một
đối tượng của PrintWriter trong gói java.io thông qua phương thức response,getWriter() để gửi kết
quả trả lại cho Client.
Sử dụng doGet(), doPost() đều có thể phát sinh ra một trong hai ngoại lệ ServletException, hay
IOException nên phải thực hiện bắt lỗi
 Phương thức service() được ghi đè từ lớp GenericServlet được thực thi khi đối tượng được gọi và gọi
doGet hoặc doPost().
3.3 Chu trình sống của servlet
 Chu trình sống của Servlet được tính từ lúc khởi tạo nạp bộ nhớ cho đến khi nó bị Web Server
loại bỏ vì không còn dùng đến nữa. Mọi servlet đều có chu trình sống như sau:
o Nạp servlet
o Khởi tạo servlet
o Thực thi servlet
o Dọn dẹp servlet
Trong đó nạp và khởi tạo có thể quy về cùng một quá trình
 Mô hình chu trình sống của servlet
3.3.1 Nạp và khởi tạo servlet
 Khi có một yêu cầu triệu gọi đến servlet, trình chủ Web server sẽ xem xét servlet đã nạp vào bộ nhớ
hay chưa, nếu chưa nó sẽ nạp servlet vào bộ nhớ. Một khi servlet đã nạp, Web server sẽ tiến đến giai
đoạn khởi tạo servlet.
 Việc khởi động một servlet được mặc định bởi HttpServlet. Để khởi tạo một servlet riêng chỉ cần ghi đè
lên phương thức init() đã được cung cấp:
public class MyServlet extends HttpServlet {
public void init() throws ServletException {
//Khởi tạo các biến toàn cục và các kết nối
}
}
 Web server khi khởi tạo sẽ gọi đến init() đầu tiên sau khi đã nạp xong. Server chỉ gọi init() một lần khi
nạp và không gọi lại nữa nếu không phải nạp lại nó. Servlet không thể được nạp lại nếu nó chưa bị hủy
bỏ trên Web Server bởi lời gọi destroy() của servlet.
3.3.2 Thực thi servlet
 Lớp HttpServlet xử lý yêu cầu của Client thông qua phương thức service() của nó. Các phương thức
trong HttpServlet xử lý các yêu cầu của Client đều có hai đối số:
o Một đối số là đối tượng của HttpServletRequest, bao gồm cả dữ liệu từ Client . Nó cho phép
nhận được các tham số mà Client gửi đến như một phần của các yêu cầu thông qua phương
thức getParameterName(), getParameterValue() để xác định tên gọi và giá trị của các tham
số.
o Đối số thứ hai là đối tượng của HttpServletResponse, bao gồm cả dữ liệu hồi đáp cho Client.
Phương thức getWriter() ghi dữ liệu dưới dạng văn bản còn getOutputStream() cho lại dữ
liệu dạng nhị phân
 Sau khi phục vụ các yêu cầu (doGet(), doPost()) thì servlet vẫn được giữ lại trên Web Server để phục vụ
cho những dịch vụ kế tiếp. Đây chính là ưu điểm vượt trội của servlet trong công nghệ Web.
3.3.3 Hủy bỏ servlet
 Sau khi phục vụ servlet vẫn được giữ lại trên Web server nhưng không phải là mãi mãi. Servlet sẽ được
hủy bỏ khi dịch vụ được đóng,... tùy vào mục đích sử dụng servlet. Khi đó servlet sẽ bị hủy bỏ và phải
dọn dẹp khỏi bộ nhơ, servlet sẽ gọi đến phương thức destroy của lớp cha mặc định. Tuy nhiên mỗi dịch
vụ servlet sẽ có tài nguyên riêng và cách khỏi tạo cũng như sử dụng và hủy bỏ lại khác nhau. Do đó nếu
muốn hủy bỏ các tài nguyên không sử dụng nữa phải thực hiện ghi đè lên phương thức destroy().
public class MyServlet extends HttpServlet {
public void init() {
. //Mở một kết nối
. //Khởi tạo các biến toàn cục
}
public void destroy() {
. //Dong ket noi
. // Hủy bỏ biến toàn cục
}
}
3.4 Quan hệ giữa JSP và Servlet
 Servlet và JSP có những mối liên hệ với nhau và cũng có nhưng ưu thế so với nhau
 JSP về bản chất là mở rộng của servlet nhưng JSP lại không phải là servlet mặc dù trước khi một trang
JSP được nạp và thực thi, nó phải được dịch thành servlet .
Các bạn có thể kiểm chứng điều này, trong phần hướng dẫn viết demo tôi sẽ hướng dẫn các bạn truy
đến mã thực thi của một trang JSP khi đã được dịch ra servlet
Những ưu điểm và nhược điểm của servlet so với JSP
 Do trang JSP trước khi thực hiện nó được biên dịch thành servlet nên những gì servlet làm được chắc
chắn JSP cũng có thể làm được. Viết một trang JSP đơn giản hơn dễ dàng hơn cho người mới bắt đầu
với JSP và Servlet vì không phải qua bước đang ký (trong trang web.xml) và việc biên dịch rất thủ công
. Hơn nữa JSP có thể trộn lẫn mã Java với các thẻ HTML nên việc thiết kế trang JSP đơn giản và dễ
dàng bổ sung hơn so với servlet. Đó là một trong những nhược điểm của servlet.
 Tuy nhiên :
o Nếu tất cả xử lý mã java được tập trung ở JSP thì việc mở rộng hay nâng cấp dự án sẽ rất
khó khăn, việc phân chia các modun cũng gặp nhiều khó khăn, phức tạp hơn so với servlet.
Mã JSP ở dạng thuần văn bản nên việc che dấu mã nguồn logic thường rất kém.
o Servlet tuy phải biên dịch và đăng ký thủ công với Web server nhưng lại có tính bảo mật cao
hơn. Khi servlet được triệu gọi, chỉ cần cung cấp cho Web server bản servlet nhị phân (byte
code) là file .class đã qua biên dich mà không cần cung cấp mã nguồn servlet ban đầu. Mặt
khác việc tương tác của các servlet là rất dễ dàng ( do sử dụng mã Java) nên có thể tạo nên
có thể tạo nên những tùy biến kết xuất đa dạng hơn trước khi trả về cho client. Servlet có
thể phân rã thành các modun đơn thể của dự án và việc kết hợp chúng với nhau cũng dễ
dàng hơn nhiều so với JSP. Đây là điểm rất ưu thế của Servlet với JSP mặc dù những điểm
này chỉ được chú trọng trong những dự án lớn, cần nhiều sự phối hợp giữa các thành viên
dự án.
o Mặc dù vậy nếu thực hiện các project nhỏ hay việc thiết kế một web site đơn giản thì nên
lựa chọn JSP vì nó dễ dàng hơn nhiều so với servlet về mặt xử lý thiết kế, không phải đăng
ký và biên dịch thủ công.
Nếu thực hiện một dự án lớn cần nhiều xử lý và tương tác, ta sẽ phải sử dụng tới mô hình MVC (Model -
View - Controller) kết hợp JSP, Servlet và JavaBeans hay Enterprise JavaBeans.
4. HTML form trong JSP
4.1 Tạo form HTML
 Việc xử lý dữ liệu của JSP và Servlet hoàn toàn giống nhau, Vì vậy việc tạo và xử lý ở JSP cũng tương
tự như với Servlet. Form của HTML không nhất thế phải là JSP.
 Ví dụ về việc tạo form , submit mà lấy dữ liệu hiển thị sang trang mới
Kết quả nhận được trên trình duyệt
4.2 Sử dụng đối tượng request
 Trong ví dụ ở phần 1, trang demoHandler.jsp đã sử dụng phương thức getParameter của đối tượng
request để lấy về giá trị của một biến trong form. Đối số truyền cho phương thức getParameter() là tên
của biến form muốn lấy giá trị. Tên của biến này được định nghĩa trong các trang chứa thẻ <form>. Ở
ví dụ trên, tên của biến form được định nghĩa là userName : <input type = “text” name = “userName”>
trong trang demo.jsp . Sau đó trang demoHandler.jsp sử dụng tên userName để gọi phương thức
getParameter() lấy về giá trị biến này:
<% String name = request.getParameter("userName"); %>
 getParameter() trả về null nếu biến chưa được khởi tạo và trả về chuỗi rỗng “” nếu biến không có giá
trị. getParameter() luôn trả về giá trị kiểu String.
4.3 Xử lý các biến form mang nhiều giá trị
 Khi biến form mang nhiều giá trị cùng tên, phương thức getParameterValues() sẽ trả về cho ta một
mảng các giá trị lấy được sau khi người dùng submit.
 Xem ví dụ để rõ hơn:
Kết xuất nhận được sau khi thực thi :
4.4 Xử lý nhúng trang và chuyển trang bằng các thẻ
 Nhúng file vào trang với chỉ thị include
Chỉ thị <%@ include file= ‘’tenfile’’%> dùng để đem nội dung một trang .html hay .jsp ở ngoài vào trang.
Tuy nhiên chỉ thị này chỉ dùng để nhúng các trang có mã nguồn tĩnh vào trang hiện tại.
 Sử dụng thẻ <jsp :include>
Chỉ thị <%@ include file= ‘’tenfile’’%> chỉ dùng để nhúng các mã nguồn tĩnh. Nếu muốn nhúng các kết
xuất từ các trang .jsp, servlet hay .html khác vào trang hiện hành, dùng thẻ <jsp:include> với cú pháp:
*<jsp: include page=”tenfile” flush = “true”>
Dùng <jsp:include> để đưa kết xuất của trang được nhúng vào trang hiện tại, còn <%@ include file=
‘’tenfile’’%> để đưa mã nguồn trang được nhúng vào trang hiện tại
 Chuyển tham số bằng thẻ <jsp:param>
Khi nhúng trang bằng thẻ <jsp:include>, để chuyển tham số cho trang được nhúng để nhận được kết
quả kết xuất linh động hơn bằng cách sử dụng thẻ con <jsp:param>
 Chuyển tiếp đến trang khác bằng thẻ <jsp:forward>
Thẻ <jsp:forward> để triệu gọi và chuyển dữ liệu lên cho trang jsp mới xử lý.
 Chuyển hướng trang mới bằng sendRedirect
Lệnh sendRedirect() chỉ thực hiện triệu gọi trang mà không chuyển tham số của trang hiện hành cho
trang chuyển hướng.
 Ví dụ :
Việc xây dựng một trang Web, cấu trúc trang phải hoàn toàn thống nhất. Một trang Web có thể thực thi
nhiều công việc khác nhau, chuyển đến nhiều trang khác nhau nhưng cấu trúc về giao diện phải được
giữ vững. Với yêu cầu đó ta có thể sử dụng chỉ thị nhúng file <%@ include file ="tenfile" %> để nhúng
các mã nguồn tĩnh. Nếu các thành phần này phải qua xử lý mới hiển thị ta có thể dùng thẻ <jsp:include
page="tentrang" flush="true">.
Hiển thị trang Web gồm có trên, dưới, trái, phải được thống nhất ở tất cả các trang như trang chủ, mà
việc này ta không nên xử lý ở tất cả các trang mà việc ta phải làm chỉ là viết các trang jsp riêng rồi
nhúng mã đó vào 1 trang khác.
Bạn hãy theo dõi điều này trong ví dụ demo phía dưới cùng với mã nguồn tôi cung cấp.
5. JavaBeans
5.1 Khái niệm cơ bản về JavaBeans
 JavaBeans thực chất là một đối tượng được cài đặt implements java.io.Serializable. Đối tượng bean
theo cách hiểu của java thì bean có nghĩa là “hạt nhân”. Một bean là một đối tượng component chỉ có
các thuộc tính được cài đặt private và muốn thao tác với nó phải thông qua các phương thức
getter/setter. Lưu ý về cách đặt tên các đối tượng và phương thức trong lớp JavaBeans: tên đối tượng
được quy định: chữ cái đầu là chữ thường, các chữ trong cùng 1 tên viết liền và viết hoa chữ cái đầu,
phương thức của đối tượng bean là get + tên thuộc tính và set + tên thuộc tính, trong đó chuyển chữ
cái đầu tiên của thuộc tính thành chữ in hoa.
 JavaBeans là một mẫu đơn thể khả chuyển, độc lập hệ máy (portable), platform-independent
component model). Các lập trình viên dùng chúng để tạo các đoạn phần mềm mà người khác có thể
dùng được trong chương trình của họ.
 Ví dụ mô tả về một đối tượng Bean
 Đối tượng JavaBeans bắt buộc phải có phương thức khởi tạo mặc định để đối tượng được khởi tạo
ngay cả khi không có tham số truyền vào. Lớp đối tượng JavaBeans bắt buộc phải là một lớp public.
 Về cơ bản đối tượng JavaBeans cũng giống như các đối tượng bean như button, textField,… trong java.
Chúng đều được tạo ra với mục đích sử dụng lại, tận dụng tối đa mã nguồn của người đi trước. Hai
công việc tương tự nhau, một người đã hoàn thành, vậy người thực hiện sau muốn công việc được
thúc đẩy nhanh chỉ cần tận dụng mã nguồn của người đi trước. Đấy chính là mục đích chính của đối
tượng JavaBeans.
Ở trên là những mô tả dễ hiểu nhất về JavaBean tôi có thể đưa ra cho các bạn. Các bạn có thể tham khảo
thêm ở đây:http://www.echip.com.vn/echiproot/weblh/suutam/99/thds/javalg.htm
http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5f575f5a5c
http://dbglory.wordpress.com/2009/10/17/j2ee-dev-enterprise-javabean-3-0-ejb-3-0/ --- Enterprise
JavaBeans
http://nttuyen.wordpress.com/2008/10/12/enterprise-javabeans/ --- Enterprise JavaBeans
5.2 Các thẻ chuẩn của JavaBeans trong JSP
 Thẻ <jsp:useBean> : dùng để định nghĩa Bean
o Thẻ này dùng để khai báo phạm vi và định danh id nhận dạng đối tượng Beans. Nó tương tự
như việc khai báo biến đối tượng trong mã java.
o Cú pháp:
<jsp:useBean id = “name” scope=”page|request|session|application” class=”package.tenBean”>
 Thẻ <jsp:setProperty>
o Thẻ này dùng để gán giá trị một thuộc tính cho một đối tượng Bean được chỉ định
o Cú pháp:
<jsp:setProperty name = “tenBean” property=”tenthuoctinh” value=”giatrimoi”>
 Thẻ <jsp:getProperty>
o Thẻ này dùng để lấy giá trị một thuộc tính của đối tượng Bean được chỉ định và trả về giá trị
kiểu String.
o Cú pháp:
<jsp:getProperty name=”tenBean” property=”tenthuoctinh”>
6. Mô hình MVC trong ứng dụng Web với Java
6.1 Khái niệm cơ bản về mô hình MVC lược về mô hình MVC trong lập trình ứng dụng Web
 Tên gọi Mô hình MVC xuất phát từ tên gọi của mô hình này. Tên đầy đủ của mô hình này là: Mô hình
(Model – View – Controller). *Trong đó:
o Model:
Là thành phần hỗ trợ việc ánh xạ dữ liệu vật lý lên bộ nhớ, lưu trữ dữ liệu tạm thời trên bộ nhớ, hỗ
trợ cấc cách thức xử lý dữ liệu, hỗ trợ khả năng giao tiếp và trao đổi dữ liệu giữa các đối tượng khác
trong bộ nhớ và cơ sở dữ liệu.
o View:
Là thành phần hỗ trợ trình bày kết xuất ra màn hình, hỗ trợ thao tác vơi người dùng
o Controller:
Là thành phần hỗ trợ kết nối người dùng, server, đón nhập yêu cầu người dùn, thực hiện chuyển xử lý,
lựa chọn và cập nhật model và view tương ứng để view trình bày về phía người dùng
6.2 Mô hình MVC trong ứng dụng Web với java
 Trong lập trình Web với Java, với những dự án lớn hay Web site lớn người ta sử dụng mô hình MVC để
việc phân chia modun, phân chia công việc, thiết kế giao diện, chỉnh sửa và bảo trì nâng cấp được
thuận tiện hơn.
Model: Thành phần JavaBeans đảm nhiệm ( lớn hơn có Enterprise JavaBeans hay Web Service)
View: các trang jsp
Controller : sử dụng servlet
B. Tutorial Demo
1. Hướng dẫn cài đặt công cụ lập trình
1.1 Eclipse IDE
 Bạn nên down load bản cài đặt Eclipse IDE for Java EE Deverlopment tại đây:
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2
*Hiện nay bản mới nhất là Eclipse Indigo
 Chỉ cần cài Java JDK hoặc Java JRE. Sau đó giải nén vào bất kì thư mục nào và sử dụng
1.2 Tomcat Apache
 Tomcat Apache download tại đây:
Bản mới nhất là Tomcat 7.0.27
http://tomcat.apache.org/download-70.cgi
 Bạn có thể download file .zip hoặc file .exe để dùng. Tuy nhiên nếu bạn là người dùng mới, nên cài đặt
Tomcat Apache bằng file .exe. Mọi cài đặt khác sẽ được tự động mặc định
 Sau khi cài đặt Tomcat Apache. ta phải tạo preference từ eclipse đên Tomcat như sau:
Windows --> Preferences --> Server --> Runtime Environments --> chọn Add --> Apache --> Apache
Tomcat 7.0 --> Next --> Browse (link đến thư mục cài đặt Tomcat) rồi finish.
1.3 MySQL Workbench
 Bạn download MySQL Workbench tại đây:
http://dev.mysql.com/downloads/mirror.php?id=408079#mirrors
Chọn 1 server rồi down load như bình thường
 Download và cài đặt bạn có thể xem seri video hướng dẫn sau tại đây:
http://www.zend.vn/forum/viewtopic.php?f=87&t=3082
2.Tutorial Demo
 Trong phần hướng dẫn này, tôi sẽ hướng dẫn các bạn tạo một project nhỏ kết hợp sử dụng mô hình
MVC ở mức sơ khai.
 Hướng dẫn này sẽ giúp các bạn làm quen với Eclipse IDE khi lập trình 1 trang Web động với
java,
o tạo các trang JSP
o nhúng trang JSP vào một trang khác
o đăng ký một servlet khi sử dụng servlet
o sử dụng đối tượng HttpServletRequest và HttpServletResponse và việc lấy dữ liệu
về, kết xuất dữ liệu hiển thị lên một trang JSP khác
o tạo và sử dụng 1 đối tượng Bean đơn giản
o truy xuất cơ sở dữ liệu
Tutorial
Khởi tạo project với Eclipse IDE
 Bắt đầu một trang Web bạn cần có một server. Ở đây ta khởi tạo server bằng cach sau:
o Chọn File --> Chọn New --> chọn Other (nếu không thấy server) --> chọn server --> chọn Next
--> chọn Apache --> chọn Apache Tomcat v7.0 --> chọn Finish.
o Sau khi tạo Server bạn sẽ có server như thế này:
 Sau khi đã có Server bạn tạo project Web động bằng cách:
o Kích chuột phải vào server --> Chọn "New" --> chọn "Other" --> Chọn "Web" --> Chọn "Dynamic
Web Project" --> "Next"
 Điền vào ô "Project Name" tên project mà bạn muốn tạo, còn lại nên để mặc định. Ở đây
tôi đặt tên là CD_JSP
 Sau khi điền tên project, bạn tiếp tục "Next" 2 lần. Đến đây bạn tích vào ô "Generate
web.xml deployment descriptor" còn lại để mặc định. Đây sẽ là file mà dùng để triển khai
ứng dụng của bạn. Bạn phải đăng ký và tạo mapping của servlet bạn dùng ở đây. Tại đây
còn cho phép bạn đặt trang đầu tiên hiển thị khi bạn chạy ứng dụng web của bạn.
 Chọn "Finish" và bạn có thể bắt đầu viết trang web của mình
 Thống nhất về thiết kế trang web
o Một trang Web chuyên nghiệp cần có một form chuẩn cho tất cả các trang của nó. Trái,
phải, trên dưới phải thống nhất. Vì vậy việc đầu tiên cần làm là phân trang web cần hiển thị
ra thành các thành phần và ta sẽ xử lý từng phần một.
 Tạo trang chủ hiển thị đầu tiên khi vào ứng dụng
o Kích chuột phải vào Web Content trong Project của bạn --> Chọn "New" --> Chọn "JSP File"
hoặc "HTML File" đều được. Ở đây tôi chọn "JSP file". Đặt tên cho file và chọn "Finish". Ở
đây tôi đặt là index.jsp
 Cài đặt hiển thị Tiếng Việt trong trang JSP:
 Những chỗ nào cài đặt là "ISO-8859-1" bạn đặt lại là "UTF-8".
 Trong trang "web.xml" bạn đặt trang "index.jsp" là trang mặc định bằng cách
 Khai báo sử dụng liên kết .css bằng thẻ link
 Cấu trúc project và các trang, thư viện sử dụng, ảnh
 Xây dựng giao diện trang web chia thành 5 phần: top, left, right. bottom tương ứng với trên, trái,
phải, dưới cùng. Giao diện demo như sau:
 Xây dựng các trang "top.jsp"; "right.jsp" ; "left.jsp" ; "bottom.jsp" sau đó nhúng vào các trang khác ph ục
vụ cho hiển thị:
 Trong mỗi trang hiển thị ta chia thành các phần thống nhất, chỉ có việc xử lý hiển thị ở
thân trang là khác nhau. Để thực hiện điều này ta chia bảng cho mỗi trang với cấu trúc
và khối lượng của các khung ở mỗi trang hiển thị đều như nhau
 Ví dụ: Trang top.jsp
Phía trên của trang thường dùng để logo và banner
Dưới logo và banner trình bày một số chức năng hay các link đến trang khác
Xử lý trong code để tạo hiển thị:
Ở đây tạo folder image như trong cấu trúc trang, copy ảnh vào và tạo đường dẫn ảnh như trong
code dưới đây
 Các trang left.jsp. right.jsp, bottom.jsp xử lý hoàn toàn tương tự. Bạn hãy xem rõ hơn
trong source code
 Chức năng tìm kiếm: trang search,jsp
Cấu trúc trang giống hệt như trang chủ index.jsp, chỉ khác việc xử lý ở phần thân trang
Tạo một form để yêu cầu người dùng nhập thông tin tìm kiếm:
 Chức năng đăng nhập : trang login.jsp
Cấu trúc trang giống hệt như trang chủ index.jsp, chỉ khác việc xử lý ở phần thân trang
Tạo một form để yêu cầu người dùng nhập thông tin đăng nhập:
 Tạo thành phần Controller - servlet để xử lý
o Tạo một class .java như bình thường và cho lớp này kế thừa lớp HttpServlet
 Xử lý doGet() và doPost() là hoàn toàn giống nhau, ta có thể xử lý 1 phương thức,
phương thức còn lại gọi phương thức kia nếu nó được gọi
 Đăng ký và link đến servlet này trong file web.xml. Nếu bạn không đăng ký hoạt động của
servlet trong web.xml thì trang servlet sẽ không thể thực hiện kết nối tới web server
 Trả về kết quả, hiển thị kết xuất sang trang mới:
 Tạo cơ sở dữ liệu
Muốn kết nối được cơ sở dữ liệu cần phải có thư viện "mysql-connector-java-5.1.18-bin.jar" được
đặt trong thư mục lib của WEB-INF
 Tạo thành phần Model - đối tượng bean truy cập dữ liệu
o Tạo một class được implements java.io.Serializable và tạo phương thức khởi tạo mặc định
** Đối tượng bean này được tạo ra với mục đích kiểm tra đăng nhập và tìm kiếm user, chưa có chức năng
đăng ký nên ở đây tôi không tạo thuộc tính cho đối tượng bean này.
 Kiểm tra đăng nhập
Trả về true nếu tìm thấy tên và mật khẩu chính xác
Trả về false nếu tên hoặc mật khẩu sai
 Tìm kiếm user
Trả về true nếu có tên người dùng trong database
Trả về false nếu không tìm thấy tên người dùng trong database
 Tạo các trang trả về kết quả sau khi đã kết nối dữ liệu hiển thị kết quả:
Tất cả các trang này đều có cùng một form với trang chủ index
o Trang fail.jsp: hiển thị khi không đăng nhập thành công
 Trang welcome.jsp : hiển thị khi user đăng nhập thành công, tạo session để hiện thị name
người dùng
 Trang searchfail.jsp : hiển thị khi không có thông tin tìm kiếm
 Trang resuilt.jsp: hiển thị khi tìm thấy thông tin về user
3. Source code Demo
Đây là toàn bộ mã nguồn bài tutorial của tôi, các bạn có thể download về tại đây:
http://www.mediafire.com/?hk4229u8alygkig
Khi cài đặt sử dụng demo bạn nhớ sửa password để truy cập mysql của bạn tại class UserBean, hoặc cũng có
thể đặt password của mysql của bạn với username: "root" và password là "root"
C. Tài liệu tham khảo
 Cuốn : Lập trình ứng dụng Web với jsp/servlet/JavaBeans của Phạm Hữu Khang
 http://www.jsptut.com/ --JSP Tutorial
 http://www.oracle.com/technetwork/java/javaee/jsp/index.html
 http://tienlong.wordpress.com/2009/06/22/session-va-httpsessionlistener/
 http://www.echip.com.vn/echiproot/weblh/suutam/99/thds/javalg.htm
 http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5f575f5a5c
 http://dbglory.wordpress.com/2009/10/17/j2ee-dev-enterprise-javabean-3-0-ejb-3-0/ --- Enterprise
JavaBeans
 http://nttuyen.wordpress.com/2008/10/12/enterprise-javabeans/ --- Enterprise JavaBeans
http://dev.vast.vn/tuananh/Web/C%C4%90015

More Related Content

PDF
Bai 09 Basic jsp
Hà Huy Hoàng
 
PPT
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Jsp java bean
Thanh Tran
 
PPT
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bai 09 Basic jsp
Hà Huy Hoàng
 
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Jsp java bean
Thanh Tran
 
Bài 2: J2EE - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 3: Servlet&Cookie&Session - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 3: Servlet - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 11: JSF-1 - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 

What's hot (20)

PPT
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PPT
Bài 7,8: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
PDF
Bai4 basic jsp_4474
Ham Chơi
 
PDF
Bai1 gioi thieu_servlet_va_jsp_8952
Ham Chơi
 
PDF
Bai3 basic servlets_956
Ham Chơi
 
PPTX
JavaEE Basic_Chapter3: Java Server Page
Phaolo Pham
 
PDF
Ebook học Javascript cơ bản tới nâng cao
Trung Thanh Nguyen
 
PDF
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
MasterCode.vn
 
PDF
Tài liệu Lập trình Zend Framework 2.x
ZendVN
 
PDF
Giáo trình asp.net với c sharp
Trần Văn Sáng Trần
 
PDF
Bai2 tong quan_mvc_0567
Ham Chơi
 
DOC
Giao trinh java_script (1)
duynamit
 
PDF
Mvc4 seminar - hoclaptrinhweb.com - Tài liệu Nhất Nghệ
MasterCode.vn
 
PDF
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
MasterCode.vn
 
DOCX
Học Zend Framework - Khóa học lập trình Zend Framework
KhanhPham
 
DOCX
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
KhanhPham
 
PDF
Web203 slide 5
tuanduongcntt
 
PDF
Java script
Tran Tien
 
PDF
Giao Trinh Jquery
Hải Finiks Huỳnh
 
Bài 10: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bài 7,8: Custom Tag - Lập Trình Mạng Nâng Cao
Tuan Nguyen
 
Bai4 basic jsp_4474
Ham Chơi
 
Bai1 gioi thieu_servlet_va_jsp_8952
Ham Chơi
 
Bai3 basic servlets_956
Ham Chơi
 
JavaEE Basic_Chapter3: Java Server Page
Phaolo Pham
 
Ebook học Javascript cơ bản tới nâng cao
Trung Thanh Nguyen
 
Bài 7: Thư viện jQuery và thư viện jQuery UI - Giáo trình FPT
MasterCode.vn
 
Tài liệu Lập trình Zend Framework 2.x
ZendVN
 
Giáo trình asp.net với c sharp
Trần Văn Sáng Trần
 
Bai2 tong quan_mvc_0567
Ham Chơi
 
Giao trinh java_script (1)
duynamit
 
Mvc4 seminar - hoclaptrinhweb.com - Tài liệu Nhất Nghệ
MasterCode.vn
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
MasterCode.vn
 
Học Zend Framework - Khóa học lập trình Zend Framework
KhanhPham
 
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
KhanhPham
 
Web203 slide 5
tuanduongcntt
 
Java script
Tran Tien
 
Giao Trinh Jquery
Hải Finiks Huỳnh
 
Ad

Similar to JSP and Database (20)

PDF
(HoaND)giaotrinhjsp 20140318
Duc Hoa
 
PDF
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
ChmHiChannel
 
PPTX
Tự học jsp !​
truong nguyen
 
PDF
Chương 1 - Tổng quan về JSP - Servlet.pdf
ChmHiChannel
 
PDF
Chương 8 - Lap Trinh Web-JSP-Servlet1.pdf
QucVit1L
 
PPT
Ch06
vantinhkhuc
 
PPTX
Hướng dẫn thiết kế web bằng jsp –
truong nguyen
 
PDF
Hướng dẫn lập trình web với PHP - Ngày 1
Nguyễn Tuấn Quỳnh
 
PPTX
JavaEE Basic_Chapter4: Servlet Nâng Cao
Phaolo Pham
 
PPT
Web Architecture
Hiep Luong
 
PPTX
Tổng quan về jsp​
truong nguyen
 
PPTX
Lập trình web với các công nghệ phổ biến
Son Nguyen
 
PDF
Spring mvc
Ba Big
 
PDF
Sof301 slide1
tonguyencntt
 
PDF
Chapter 2 tong quan ve he thong web
xuandiencntt
 
PPT
Jsf
Nguyen Tran
 
PPT
Hoc Jquery Trong 1h
Dang Tuan
 
DOC
Giao trinh java_script
nmphuong91
 
DOC
JavaScript (Tieng viet)
Park Ji Hưng
 
PPTX
Tổng quan về struts framework, mvc
truong nguyen
 
(HoaND)giaotrinhjsp 20140318
Duc Hoa
 
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
ChmHiChannel
 
Tự học jsp !​
truong nguyen
 
Chương 1 - Tổng quan về JSP - Servlet.pdf
ChmHiChannel
 
Chương 8 - Lap Trinh Web-JSP-Servlet1.pdf
QucVit1L
 
Hướng dẫn thiết kế web bằng jsp –
truong nguyen
 
Hướng dẫn lập trình web với PHP - Ngày 1
Nguyễn Tuấn Quỳnh
 
JavaEE Basic_Chapter4: Servlet Nâng Cao
Phaolo Pham
 
Web Architecture
Hiep Luong
 
Tổng quan về jsp​
truong nguyen
 
Lập trình web với các công nghệ phổ biến
Son Nguyen
 
Spring mvc
Ba Big
 
Sof301 slide1
tonguyencntt
 
Chapter 2 tong quan ve he thong web
xuandiencntt
 
Hoc Jquery Trong 1h
Dang Tuan
 
Giao trinh java_script
nmphuong91
 
JavaScript (Tieng viet)
Park Ji Hưng
 
Tổng quan về struts framework, mvc
truong nguyen
 
Ad

More from Nguyễn Anh (20)

PDF
Báo cáo đồ họa máy tính - Computer graphics
Nguyễn Anh
 
PDF
Game programming - Hexagon
Nguyễn Anh
 
PDF
Dynamic programming
Nguyễn Anh
 
DOC
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nguyễn Anh
 
DOC
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Nguyễn Anh
 
DOCX
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Nguyễn Anh
 
PPTX
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
DOC
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
DOCX
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Nguyễn Anh
 
DOCX
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Nguyễn Anh
 
DOCX
Bảo trì phần mềm
Nguyễn Anh
 
PPT
Embedded beta2 new
Nguyễn Anh
 
DOCX
Embedded linux edited
Nguyễn Anh
 
PPTX
Slide Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
DOC
Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
DOC
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
PDF
Đào tạo ĐH
Nguyễn Anh
 
PDF
Cài đặt windows mà không cần phải kích hoạt
Nguyễn Anh
 
PDF
System hacking
Nguyễn Anh
 
PDF
Hoc internet
Nguyễn Anh
 
Báo cáo đồ họa máy tính - Computer graphics
Nguyễn Anh
 
Game programming - Hexagon
Nguyễn Anh
 
Dynamic programming
Nguyễn Anh
 
Nghiên cứu chuẩn ISO/IEC 9126 trong đánh giá chất lượng phần mềm
Nguyễn Anh
 
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Nguyễn Anh
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Nguyễn Anh
 
Sldie TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
Tìm Hiểu Các Kỹ Thuật Kiểm Thử Phần Mềm và Một Số Ứng Dụng Trong Thực Tế
Nguyễn Anh
 
Tìm hiểu về kỹ thuật Kiểm thử phần mềm
Nguyễn Anh
 
Bảo trì phần mềm
Nguyễn Anh
 
Embedded beta2 new
Nguyễn Anh
 
Embedded linux edited
Nguyễn Anh
 
Slide Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
Các kỹ thuật bảo trì phần mềm
Nguyễn Anh
 
TÌM HIỂU CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM
Nguyễn Anh
 
Đào tạo ĐH
Nguyễn Anh
 
Cài đặt windows mà không cần phải kích hoạt
Nguyễn Anh
 
System hacking
Nguyễn Anh
 
Hoc internet
Nguyễn Anh
 

Recently uploaded (20)

PDF
GIÁO ÁN TIN HỌC 12 CÁNH DIỀU - ĐỊNH HƯỚNG KHOA HỌC MÁY TÍNH (CS) THEO CÔNG VĂ...
Nguyen Thanh Tu Collection
 
PPTX
Bài giảng Marketing chương 4 Chính sách giá trong nghiên cứu Marketing SV.pptx
tran thi thu hang
 
PDF
Giáo Dục Minh Triết: Chuẩn bị Tâm thế - Tâm thức bước vào kỷ nguyên mới
Chu Văn Đức
 
PDF
BÀI GIẢNG POWERPOINT THEO LESSON TIẾNG ANH 9 - HK1 - NĂM 2026 - GLOBAL SUCCES...
Nguyen Thanh Tu Collection
 
PPTX
Từ vựng tiếng Anh Unit 1 lớp 9 Global Success.pptx
ThyLinh653633
 
PDF
Giấy báo đủ điều kiện trúng tuyển_phuong.pdf
vodaihong
 
PDF
GIÁO ÁN TIN HỌC 12 CÁNH DIỀU - ĐỊNH HƯỚNG TIN HỌC ỨNG DỤNG (ICT) THEO CÔNG VĂ...
Nguyen Thanh Tu Collection
 
DOC
Bài 12-II.doc...............................
FreePlayer1
 
PDF
LÝ THUYẾT VÀ BÀI TẬP HÓA HỌC 11 CẢ NĂM - FORM 2025 - PHÂN THEO MỨC ĐỘ (DÙNG C...
Nguyen Thanh Tu Collection
 
PDF
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD LỚP 10 BÁM SÁT NỘI DUNG SGK - PH...
Nguyen Thanh Tu Collection
 
PDF
BÀI GIẢNG ĐIỆN TỬ POWERPOINT THEO LESSON TIẾNG ANH 9 - HK1 - NĂM 2026 - GLOBA...
Nguyen Thanh Tu Collection
 
PDF
Giấy báo nhập học mới năm 2024. Dành cho sinh viên
vodaihong
 
PDF
Sáng kiến Một số biện pháp khai thác phần mềm MozaBook trong dạy học hình học...
Nguyen Thanh Tu Collection
 
PPTX
BPH.tang sinh lanh tinh tuyen tien lietpptx
ngvutrieuvy
 
PDF
CHUYÊN ĐỀ DẠNG BÀI LUYỆN THI TỐT NGHIỆP THPT 2025 - TIẾNG ANH (FORMAT 18-10 B...
Nguyen Thanh Tu Collection
 
PDF
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD LỚP 11 BÁM SÁT NỘI DUNG SGK - PH...
Nguyen Thanh Tu Collection
 
PPTX
Slide CNXH - Chương 2 - Sứ mệnh lịch sử của giai cấp công nhân
NguyenHungDuc
 
DOCX
CHUYÊN ĐỀ WORD FORM (tháng 3 - 2020).docx
oanhle31231021206
 
PPT
Bài giảng Quản trị sản xuất - Chương 3_ Bố trí sản xuất (download tai tailieu...
tran thi thu hang
 
PDF
KHOA HỌC KĨ THUẬT NGHIÊN CỨU CÔNG NGHỆ SẢN XUẤT NƯỚC XỊT PHÒNG TỪ THẢO MỘC TH...
Nguyen Thanh Tu Collection
 
GIÁO ÁN TIN HỌC 12 CÁNH DIỀU - ĐỊNH HƯỚNG KHOA HỌC MÁY TÍNH (CS) THEO CÔNG VĂ...
Nguyen Thanh Tu Collection
 
Bài giảng Marketing chương 4 Chính sách giá trong nghiên cứu Marketing SV.pptx
tran thi thu hang
 
Giáo Dục Minh Triết: Chuẩn bị Tâm thế - Tâm thức bước vào kỷ nguyên mới
Chu Văn Đức
 
BÀI GIẢNG POWERPOINT THEO LESSON TIẾNG ANH 9 - HK1 - NĂM 2026 - GLOBAL SUCCES...
Nguyen Thanh Tu Collection
 
Từ vựng tiếng Anh Unit 1 lớp 9 Global Success.pptx
ThyLinh653633
 
Giấy báo đủ điều kiện trúng tuyển_phuong.pdf
vodaihong
 
GIÁO ÁN TIN HỌC 12 CÁNH DIỀU - ĐỊNH HƯỚNG TIN HỌC ỨNG DỤNG (ICT) THEO CÔNG VĂ...
Nguyen Thanh Tu Collection
 
Bài 12-II.doc...............................
FreePlayer1
 
LÝ THUYẾT VÀ BÀI TẬP HÓA HỌC 11 CẢ NĂM - FORM 2025 - PHÂN THEO MỨC ĐỘ (DÙNG C...
Nguyen Thanh Tu Collection
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD LỚP 10 BÁM SÁT NỘI DUNG SGK - PH...
Nguyen Thanh Tu Collection
 
BÀI GIẢNG ĐIỆN TỬ POWERPOINT THEO LESSON TIẾNG ANH 9 - HK1 - NĂM 2026 - GLOBA...
Nguyen Thanh Tu Collection
 
Giấy báo nhập học mới năm 2024. Dành cho sinh viên
vodaihong
 
Sáng kiến Một số biện pháp khai thác phần mềm MozaBook trong dạy học hình học...
Nguyen Thanh Tu Collection
 
BPH.tang sinh lanh tinh tuyen tien lietpptx
ngvutrieuvy
 
CHUYÊN ĐỀ DẠNG BÀI LUYỆN THI TỐT NGHIỆP THPT 2025 - TIẾNG ANH (FORMAT 18-10 B...
Nguyen Thanh Tu Collection
 
BÀI TẬP BỔ TRỢ TIẾNG ANH I-LEARN SMART WORLD LỚP 11 BÁM SÁT NỘI DUNG SGK - PH...
Nguyen Thanh Tu Collection
 
Slide CNXH - Chương 2 - Sứ mệnh lịch sử của giai cấp công nhân
NguyenHungDuc
 
CHUYÊN ĐỀ WORD FORM (tháng 3 - 2020).docx
oanhle31231021206
 
Bài giảng Quản trị sản xuất - Chương 3_ Bố trí sản xuất (download tai tailieu...
tran thi thu hang
 
KHOA HỌC KĨ THUẬT NGHIÊN CỨU CÔNG NGHỆ SẢN XUẤT NƯỚC XỊT PHÒNG TỪ THẢO MỘC TH...
Nguyen Thanh Tu Collection
 

JSP and Database

  • 1. http://dev.vast.vn/tuananh/Web/C%C4%90015 Tutorial Công nghệ JSP/Serlet/JavaBeans - Mô hình MVC trong java Nội dung đề tài A. Kiến thức cần nắm  1. Tổng quan về JSP và Servlet o 1.1 Giới thiệu về Servlet o 1.2 Giới thiệu về JSP  2. JSP o 2.1 Kiến trúc JSP trong ứng dụng Web o 2.2 Chu trình sống của JSP o 2.3 Các cú pháp cơ bản của JSP  2. Servlet o 3.1 Kiến trúc servlet o 3.2 Các phương thức cơ bản của Servlet o 3.3 Chu trình sống của Servlet o 3.4 Quan hệ giữa servlet và JSP  4. HTML form trong JSP o 4.1 Tạo form HTML o 4.2 Sử dụng đối tượng request o 4.3 Xử lý các biến form mang nhiều giá trị o 4.4 Xử lý nhúng trang và chuyển trang bằng các thẻ  5. JavaBeans o 5.1 Cơ bản về JavaBeans o 5.2 Các thẻ chuẩn của JavaBeans trong JSP  6. Mô hình MVC trong ứng dụng Web với Java o 6.1 Khái niệm cơ bản về mô hình MVC o 6.2 Mô hình MVC trong ứng dụng Web với java B. Tutorial Demo  1. Hướng dẫn cài đặt công cụ lập trình o 1.1 Eclipse IDE o 1.2 Tomcat Apache o 1.3 MySQL Workbench  2. Tutorial Demo  3. Source code Demo C. Tài liệu tham khảo A. Kiến thức cần nắm 1. Tổng quan về JSP và Servlet 1.1 Giới thiệu về Servlet  Servlet là các thành phần máy chủ nhúng trên trình chủ Web server thực hiện xử lý yêu cầu và phát sinh ra các trang Web động trả về máy khách. Để sử dụng được Servlet cần có các trình chủ Java và hỗ trợ triệu gọi Servlet như Apache, JRun, Web Logic … Mặc dù vậy biên dịc và tạo Sevlet chúng ta chỉ cần đến trình biên dịch JDK mà không cần đến các trình chủ.
  • 2.  Servlet là trung tâm của công nghệ Web trong Java. Servlet thay thế cho các ứng dụng CGI truyền thống. Muốn hiểu rõ về lập trình Web trong java trước hết nên tìm hiểu rõ cơ chế hoạt động của servlet 1.2 Giới thiệu về JSP  JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một cái tên khác là Java Scripting Preprocessor - tạm dịch là "Bộ tiền xử lý văn lệnh Java" - là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách. Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước (pre-defined actions) vào trong nội dung tĩnh của trang.  JSP là cách đơn giản hóa hơn cho Servlet. Nếu như đối với Servlet phải viết mã Java và biên dịch bằng tay trước khi sử dụng với trình chủ Web server thì JSP không cần điều này. JSP viết mã Java tương tự Servlet nhưng cho phép trộn lẫn Java với các thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trình khác gửi đến trang.  JSP đơn giản và dễ sử dụng hơn Servlet mặc dù sau khi biên dịch và thực thi chúng chỉ là một. 2. JSP 2.1 Kiến trúc JSP trong ứng dụng Web Đây là cách thực nạp, dịch và thực thi trang của một trang JSP khi được triệu gọi trên Web Server 2.2 Chu trình sống của JSP Trang JSP có chu trình sống xác định tính từ khi hệ thống đọc biên dịch trang JSP, gọi thực thi và loại bỏ trang ra khỏi bộ nhớ. Chu trình sống của trang JSP gồm có 5 giai đoạn sau: 2.2.1 Biên dịch trang  Khi trình duyệt yêu cầu trang JSP, Web server sẽ kiểm tra xem trang JSP đã được biên dịch hay chưa. Nếu chưa biên dịch hoặc đã biên dịch nhưng trang JSP mới vừa thay đổi mã nguồn thì Web Server sẽ thực hiện biên dịch trang JSP. Quá trình biên dịch JSP thực tế là chuyển trang JSP thành servlet. File biên dịch .class của trang chỉ diễn ra một lần. Nếu trang đã biên dịch và sau đó không bị thay đổi trong mã nguồn thì quá trình biên dịch sẽ không xảy ra nữa, do đó mà tốc độ thực thi sẽ nhanh hơn. Sau khi biên dịch, mã trang sẽ được nạp vào bộ nhớ để thực thi  Quá trình biên dich trang JSP sẽ được diễn ra như sau: Bước 1: Kiểm tra xem trang đã được dịch thành mã nguồn tương đương servlet hay chưa.
  • 3. Bước 2: Nếu chưa được biên dịch thì trang JSP sẽ được biên dịch thành file nguồn .java theo cấu trúc của servlet. Gọi trình biên dịch javac biên dịch file nguồn .java thành file thực thi của servlet .class. Bước 3: Nạp servlet đã biên dịch ở bước 2, thực thi trả kết quả về cho trình khách. Bước 4: Nếu file JSP đã được biên dịch trước đó : thực hiện kiểm tra xem nội dung file .jsp có thay đổi không, Nếu có thì quay lại bước 2 biên dịch lại trang, nếu không thì quay lại bước 3. 2.2.2 Nạp trang  Kể từ giai đoạn này, quá trình nạp trang tương tự như servlet (trang JSP sau khi biên dịch có thể coi như một servlet). Chỉ có một điểm khác là servlet chỉ được nạp một lần trong khi mã trang JSP mặc dù đã biên dịch nhưng phải nạp lại nhiều lần mỗi khi web server nhận được yêu cầu trang từ trình duyệt. 2.2.3 Khởi tạo  Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khỏi tạo trang. Và mặc dù JSP được biên dịch ra servlet nhưng phương thức khởi tạo cho trang JSP lại mang tên là jspInit() chứ không phải là init() như servlet. 2.2.4 Thực thi  Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService (khác với servlet gọi đến doPost(), doGet() hoặc service() ). Phương thức _jspService sẽ chuyển đến hai lớp đối tượng HttpServletRequest và HttpServletResponse để đọc và ghi kết xuất trả về trình khách. 2.2.5 Dọn dẹp  Khi trang JSP đã thực thi xong, trình chủ Web Server sẽ gọi phương thức jspDestroy() để giải phóng mã trang khỏi bộ nhớ. Tương tự như trong Servlet, có thể cài đặt phương thức jspDestroy() thực hiện giải phóng vùng nhớ hoặc đóng kết nối trả về tài nguyên cho hệ thống. 2.3 Các cú pháp cơ bản của JSP 2.3.1 Sử dụng thẻ bọc mã <% %>  Ưu điểm của trang JSP so với Servelet là khả năng nhúng mã Java giữa các thẻ định dạng HTML. Mã java được đặt trong cặp dấu <% %>. Bên trong mã Java nếu muốn kết xuất dữ liệu HTML , gọi phương thức prinln(“”) như trong servlet của đối tượng out. Đối tượng out là đối tượng mặc định của JSP được Web server cung cấp để ghi kết xuất trả về client. Thẻ HTML và mã Java có thể trộn lẫn với nhau.  Ví dụ:  Khi sử dụng mã java trong JSP, cần phải import gói thư viện vào như trong class bình thường (xem ví dụ) Kết quả thu được sau kết xuất:
  • 4. 2.3.2 Hiển thị kết xuất bằng cú pháp <%= %>  Thay vì sử dụng cú pháp <% %> để xử lý một khối gồm nhiều lênh, sử dụng cú pháp <%= %> chỉ để hiển thị kết xuất giá trị của 1 biến hay một hàm nào đó. Ví dụ trên ta sửa thành: Kết quả cho ta kết xuất hoàn toàn như nhau về cấu trúc  Ở đây cuối cú pháp <%= %> không có dấu “;” bởi vì khi thực thi trang, biểu thức nằm trong <%= %> sẽ được chuyển thành lệnh out.println(); . Tương đương như sau: Ket xuat <%= date %> được dịch thành: out.println(“ket xuat”+date); Cú pháp này ngắn gọn tiện lợi hơn so với dùng cú pháp <% %> 2.3.3 Chèn chú thích vào mã JSP  Giống như trong Java, JSP cho phép dùng cú pháp: “ // ” để chú thích một dòng mã lệnh; “/* */” để chú thích trên nhiều dòng.  Ngoài ra, JSP còn hỗ trợ thêm cú pháp <%-- --%>. Tất cả các khối lệnh Java và HTML nằm giữa 2 dấu chú thích này sẽ được trình dịch bỏ qua xem như một lời chú thích 2.3.4 Khai báo phương thức và biến hằng với cú pháp <%! %>
  • 5.  Cú pháp <%! %> cho phép định nghĩa một hoặc nhiều phương thức và biến. Phương thức và biến sau đó có thể được triệu gọi bất kì noi nào trong trang JSP. Phương thức và biến này giống như phương thức và biến public.  Ví dụ: Kết quả thu được là: 3. Servlet 3.1 Kiến trúc Servlet  Gói javax.servlet cung cấp các giao diện và các lớp để xây dựng các Servlet. Kiến trúc của chúng được mô tả như sau:
  • 6.  Trước hết cần tìm hiểu về thư viện javac.servlet (gói thư viện này nằm trong file servlet-api.jarnếu sử dụng Tomcat Apache) chứa các lớp cần thiết như GenericServlet. HttpServlet … để xây dựng servlet kế thừa từ những servlet chuẩn hiện có.  Việc đầu tiên khi xây dựng một Servlet là chọn một lớp chuẩn servlet hiện có. GenericServlet là lớp cơ bản nhất, khởi nguồn của mọi servlet. Khai báo một GenericServlet như sau: public class HelloServlet extends GenericServlet { … }  Khi khai báo kế thừa GenericServlet, mặc định sẽ có 1 phương thức kế thừa duy nhất mang tên service() theo theo khuôn mẫu public class HelloServlet extends GenericServlet { -->public void service( ServletRequest request, ServletResponse response) throws IOException { -->… -->} } Phương thức service() tiếp nhân hai tham số. Một tham số kiểu đối tượng ServletRequest dùng tiếp nhận dữ liệu do trình duyệt phía máy khách chuyển lên. Tham số thứ hai kiểu ServletResponse dùng để ghi kết xuất và trả dữ liệu đã xử lý về cho trình duyệt hiển thị phía máy khách. Yêu cầu của phương thức service() là phải cho phép thương thức ném ra ngoại lệ IOException trong trường hợp xuất nhập dữ liệu gặp lỗi.  Demo “HelloServlet” của ở đây chưa cần lấy thông tin chuyển lên từ trình duyệt của đối số request mà chỉ dùng đối số response để ghi kết xuất. Trước hết đối tượng response gọi phương thức setContentType() nhằm định dạng kiểu nội dung dữ liệu cần kết xuất để trình khác biết cách hiển thị, phương thức này được gọi như sau: response.setContentType(“text/html”); Nếu muốn hiển thị tiếng Việt ta cần set như sau: request.setCharacterEncoding("UTF-8");
  • 7. response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); Để ghi kết xuất trở lại trình khác công việc tiếp theo mà servlet phải làm là lấy về lường xuất. Ở đây luồng xuất được sử dụng là PrintWriter từ đối tượng response. PrintWriter out = response.getWriter(); Từ đối tương out này chúng ta có thể in kết xuất ra trả về trình khách. Kết xuất trả về trình duyệt: Lưu ý : Muốn chạy được servlet trong eclipse ta phải khai báo tên và đường dẫn trong file web.xml của project như sau:
  • 8. 3.2 Các phương thức xử lý cơ bản của servlet  Lớp GenericServlet là lớp cài đặt tổng quát cho đặc tả giao tiếp (interface) mang tên Servlet do Sun đưa ra gồm có các phương thức phục vụ cho toàn bộ công việc của servlet: khởi tạo : init() ; phục vụ : service() ; hủy : destroy() ; trả về thông tin cấu hình : getServletConfig() ; trả về thông tin servlet : getServletInfo().  Lớp giao tiếp được mô tả như sau: interface Servlet() { void destroy() ServletConfig getServletConfig(); ServletInfo getServletInfo(); void init(ServletConfig config) void service (ServletRequest request, ServletResponse response) } 3.2.1 Phương thức khỏi tạo init() public void init  public void init() Phương thức khởi tạo được gọi đầu tiên. Trình chủ Web server nạp mã thực thi của servlet từ tập tin .class vào bộ nhớ và bắt đầu cho phép servlet hoạt động. Có thể dựa vào phương thức này để khai báo các biến môi trường và giá trị ban đầu cần thiết cho quá trình thực thi servlet sẽ diễn ra tiếp theo. Thông thường trong phương thức init() nên khởi tạo các giá trị mảng, tạo sẵn kết nối với cơ sở dữ liệu, nạp các lớp thư viện cần thiết… Ví dụ việc nạp trình điều khiển JDBC dùng để truy xuất dữ liệu tạo sẵn kết nối đến nguồn dữ liệu cho servlet như sau:
  • 9. ==> Cơ sở dữ liệu được kết nối đến servlet ngay trong phương thức khởi tạo init() 3.3.2 Phương thức phục vụ !!service() public void service(ServletRequestrequest, ServletResponse response ) throws IOException { }  Sau phương thức khởi tạo hoàn thành, Web server sẽ gọi đến phương thức phục vụ service(). Phương thức này được coi là trung tâm xử lý của servlet. Khi Web server nạp servlet vào bộ nhớ thì phương thức init() được gọi đầu tiên và duy nhất một lần, còn phương thức service()có thể được triệu gọi nhiều lần mỗi khi ứng dụng có yêu cầu đến servlet. Bên trong phương thức service() dùng hai đối tượng tham số ServletRequest và ServletResponse để nhận và kết xuất dữ liệu 3.2.3 Phương thức hủy !!destroy()  Khi servlet không còn dùng đến nữa hoặc hết thời gian qui định lưu giữ trong bộ nhớ của Web server, nó sẽ bị Web server giải phóng. Trước khi servlet bị hủy phương thức destroy() sẽ được gọi. Nếu như dùng phương thức init() để thực hiện khởi tạo biến cho servlet thì trong phương thức destroy() lại là nơi để dọn dẹp tài nguyên mà các biến chiếm giữ, đóng kết nối mà phương thức init() đã mở … 3.2.4 Lớp cơ sở HttpServlet  HttpServlet là một lớp trìu tượng cung cấp một khung làm việc để xử lý các yêu cầu GET, POST của giao thức HTTP, HTTPServlet kế thừa giao diện Servlet cộng với một số các phương thức khác.  HTTP sinh ra các trang HTML và ta có thể nhúng các Servlet vào các trang HTML.  Khi có một yêu cầu gửi tới từ Client, Servlet sẽ xử lý yêu cầu nhận được và trả lại kết quả cho Client. Hai phương thức doGet() và doPost() được sử dụng chung để nhận và gửi tin trong các Servlet.  Một Servlet bất kỳ được tạo ra kế thừa HttpServlet và ghi đè ít nhất một trong các phương thức doGet() để thực thi thao tác GET của HTTP hay doPost() của thao tác POST của HTTP.  Đối tượng của HttpServlet Request cung cấp thông tin giống như biến môi trường của CGI nhưng theo một hướng chuẩn, Nó cung cấp những phương thức mở ra các tham số HTTP từ dãy các câu truy vấn hoặc từ nội dung của yêu cầu phụ thuộc vào kiểu yêu cầu (GET hay POST)
  • 10.  Ví dụ demo sử dụng lớp HttpServlet: servlet đếm số lần truy cập vào trang ==> Kết quả nhận được: doGet() có hai tham số đối tượng thuộc hai lớp HttpServletRequest và HttpServletResponse (cả hai lớp này được định nghĩa trong javax.servlet.http)/ Hai đối tượng này cho phép truy cập đầy đủ tất cả các thông tin yêu cầu và cho phép gửi dữ liệu kết quả cho Client để trả lời cho các yêu cầu đó. doGet() sử dụng đối tượng thứ nhất request để đọc các phần đầu, tiêu đề (header) của HTTP gửi tới (ví dụ như dữ liệu dạng HTML mà người dùng nhập vào), và sử dụng đối tượng thứ hai response để xác định dòng trả lời cho HTTP (xác định kiểu nội dung trao đổi, đặt vào Cookie). Phải dùng một đối tượng của PrintWriter trong gói java.io thông qua phương thức response,getWriter() để gửi kết quả trả lại cho Client. Sử dụng doGet(), doPost() đều có thể phát sinh ra một trong hai ngoại lệ ServletException, hay IOException nên phải thực hiện bắt lỗi  Phương thức service() được ghi đè từ lớp GenericServlet được thực thi khi đối tượng được gọi và gọi doGet hoặc doPost(). 3.3 Chu trình sống của servlet  Chu trình sống của Servlet được tính từ lúc khởi tạo nạp bộ nhớ cho đến khi nó bị Web Server loại bỏ vì không còn dùng đến nữa. Mọi servlet đều có chu trình sống như sau: o Nạp servlet
  • 11. o Khởi tạo servlet o Thực thi servlet o Dọn dẹp servlet Trong đó nạp và khởi tạo có thể quy về cùng một quá trình  Mô hình chu trình sống của servlet 3.3.1 Nạp và khởi tạo servlet  Khi có một yêu cầu triệu gọi đến servlet, trình chủ Web server sẽ xem xét servlet đã nạp vào bộ nhớ hay chưa, nếu chưa nó sẽ nạp servlet vào bộ nhớ. Một khi servlet đã nạp, Web server sẽ tiến đến giai đoạn khởi tạo servlet.  Việc khởi động một servlet được mặc định bởi HttpServlet. Để khởi tạo một servlet riêng chỉ cần ghi đè lên phương thức init() đã được cung cấp: public class MyServlet extends HttpServlet { public void init() throws ServletException { //Khởi tạo các biến toàn cục và các kết nối } }  Web server khi khởi tạo sẽ gọi đến init() đầu tiên sau khi đã nạp xong. Server chỉ gọi init() một lần khi nạp và không gọi lại nữa nếu không phải nạp lại nó. Servlet không thể được nạp lại nếu nó chưa bị hủy bỏ trên Web Server bởi lời gọi destroy() của servlet. 3.3.2 Thực thi servlet  Lớp HttpServlet xử lý yêu cầu của Client thông qua phương thức service() của nó. Các phương thức trong HttpServlet xử lý các yêu cầu của Client đều có hai đối số: o Một đối số là đối tượng của HttpServletRequest, bao gồm cả dữ liệu từ Client . Nó cho phép nhận được các tham số mà Client gửi đến như một phần của các yêu cầu thông qua phương thức getParameterName(), getParameterValue() để xác định tên gọi và giá trị của các tham số. o Đối số thứ hai là đối tượng của HttpServletResponse, bao gồm cả dữ liệu hồi đáp cho Client. Phương thức getWriter() ghi dữ liệu dưới dạng văn bản còn getOutputStream() cho lại dữ liệu dạng nhị phân  Sau khi phục vụ các yêu cầu (doGet(), doPost()) thì servlet vẫn được giữ lại trên Web Server để phục vụ cho những dịch vụ kế tiếp. Đây chính là ưu điểm vượt trội của servlet trong công nghệ Web. 3.3.3 Hủy bỏ servlet
  • 12.  Sau khi phục vụ servlet vẫn được giữ lại trên Web server nhưng không phải là mãi mãi. Servlet sẽ được hủy bỏ khi dịch vụ được đóng,... tùy vào mục đích sử dụng servlet. Khi đó servlet sẽ bị hủy bỏ và phải dọn dẹp khỏi bộ nhơ, servlet sẽ gọi đến phương thức destroy của lớp cha mặc định. Tuy nhiên mỗi dịch vụ servlet sẽ có tài nguyên riêng và cách khỏi tạo cũng như sử dụng và hủy bỏ lại khác nhau. Do đó nếu muốn hủy bỏ các tài nguyên không sử dụng nữa phải thực hiện ghi đè lên phương thức destroy(). public class MyServlet extends HttpServlet { public void init() { . //Mở một kết nối . //Khởi tạo các biến toàn cục } public void destroy() { . //Dong ket noi . // Hủy bỏ biến toàn cục } } 3.4 Quan hệ giữa JSP và Servlet  Servlet và JSP có những mối liên hệ với nhau và cũng có nhưng ưu thế so với nhau  JSP về bản chất là mở rộng của servlet nhưng JSP lại không phải là servlet mặc dù trước khi một trang JSP được nạp và thực thi, nó phải được dịch thành servlet . Các bạn có thể kiểm chứng điều này, trong phần hướng dẫn viết demo tôi sẽ hướng dẫn các bạn truy đến mã thực thi của một trang JSP khi đã được dịch ra servlet Những ưu điểm và nhược điểm của servlet so với JSP  Do trang JSP trước khi thực hiện nó được biên dịch thành servlet nên những gì servlet làm được chắc chắn JSP cũng có thể làm được. Viết một trang JSP đơn giản hơn dễ dàng hơn cho người mới bắt đầu với JSP và Servlet vì không phải qua bước đang ký (trong trang web.xml) và việc biên dịch rất thủ công . Hơn nữa JSP có thể trộn lẫn mã Java với các thẻ HTML nên việc thiết kế trang JSP đơn giản và dễ dàng bổ sung hơn so với servlet. Đó là một trong những nhược điểm của servlet.  Tuy nhiên : o Nếu tất cả xử lý mã java được tập trung ở JSP thì việc mở rộng hay nâng cấp dự án sẽ rất khó khăn, việc phân chia các modun cũng gặp nhiều khó khăn, phức tạp hơn so với servlet. Mã JSP ở dạng thuần văn bản nên việc che dấu mã nguồn logic thường rất kém. o Servlet tuy phải biên dịch và đăng ký thủ công với Web server nhưng lại có tính bảo mật cao hơn. Khi servlet được triệu gọi, chỉ cần cung cấp cho Web server bản servlet nhị phân (byte code) là file .class đã qua biên dich mà không cần cung cấp mã nguồn servlet ban đầu. Mặt khác việc tương tác của các servlet là rất dễ dàng ( do sử dụng mã Java) nên có thể tạo nên có thể tạo nên những tùy biến kết xuất đa dạng hơn trước khi trả về cho client. Servlet có thể phân rã thành các modun đơn thể của dự án và việc kết hợp chúng với nhau cũng dễ dàng hơn nhiều so với JSP. Đây là điểm rất ưu thế của Servlet với JSP mặc dù những điểm này chỉ được chú trọng trong những dự án lớn, cần nhiều sự phối hợp giữa các thành viên dự án.
  • 13. o Mặc dù vậy nếu thực hiện các project nhỏ hay việc thiết kế một web site đơn giản thì nên lựa chọn JSP vì nó dễ dàng hơn nhiều so với servlet về mặt xử lý thiết kế, không phải đăng ký và biên dịch thủ công. Nếu thực hiện một dự án lớn cần nhiều xử lý và tương tác, ta sẽ phải sử dụng tới mô hình MVC (Model - View - Controller) kết hợp JSP, Servlet và JavaBeans hay Enterprise JavaBeans. 4. HTML form trong JSP 4.1 Tạo form HTML  Việc xử lý dữ liệu của JSP và Servlet hoàn toàn giống nhau, Vì vậy việc tạo và xử lý ở JSP cũng tương tự như với Servlet. Form của HTML không nhất thế phải là JSP.  Ví dụ về việc tạo form , submit mà lấy dữ liệu hiển thị sang trang mới Kết quả nhận được trên trình duyệt
  • 14. 4.2 Sử dụng đối tượng request  Trong ví dụ ở phần 1, trang demoHandler.jsp đã sử dụng phương thức getParameter của đối tượng request để lấy về giá trị của một biến trong form. Đối số truyền cho phương thức getParameter() là tên của biến form muốn lấy giá trị. Tên của biến này được định nghĩa trong các trang chứa thẻ <form>. Ở ví dụ trên, tên của biến form được định nghĩa là userName : <input type = “text” name = “userName”> trong trang demo.jsp . Sau đó trang demoHandler.jsp sử dụng tên userName để gọi phương thức getParameter() lấy về giá trị biến này: <% String name = request.getParameter("userName"); %>  getParameter() trả về null nếu biến chưa được khởi tạo và trả về chuỗi rỗng “” nếu biến không có giá trị. getParameter() luôn trả về giá trị kiểu String. 4.3 Xử lý các biến form mang nhiều giá trị  Khi biến form mang nhiều giá trị cùng tên, phương thức getParameterValues() sẽ trả về cho ta một mảng các giá trị lấy được sau khi người dùng submit.  Xem ví dụ để rõ hơn:
  • 15. Kết xuất nhận được sau khi thực thi :
  • 16. 4.4 Xử lý nhúng trang và chuyển trang bằng các thẻ  Nhúng file vào trang với chỉ thị include Chỉ thị <%@ include file= ‘’tenfile’’%> dùng để đem nội dung một trang .html hay .jsp ở ngoài vào trang. Tuy nhiên chỉ thị này chỉ dùng để nhúng các trang có mã nguồn tĩnh vào trang hiện tại.  Sử dụng thẻ <jsp :include> Chỉ thị <%@ include file= ‘’tenfile’’%> chỉ dùng để nhúng các mã nguồn tĩnh. Nếu muốn nhúng các kết xuất từ các trang .jsp, servlet hay .html khác vào trang hiện hành, dùng thẻ <jsp:include> với cú pháp: *<jsp: include page=”tenfile” flush = “true”> Dùng <jsp:include> để đưa kết xuất của trang được nhúng vào trang hiện tại, còn <%@ include file= ‘’tenfile’’%> để đưa mã nguồn trang được nhúng vào trang hiện tại  Chuyển tham số bằng thẻ <jsp:param> Khi nhúng trang bằng thẻ <jsp:include>, để chuyển tham số cho trang được nhúng để nhận được kết quả kết xuất linh động hơn bằng cách sử dụng thẻ con <jsp:param>  Chuyển tiếp đến trang khác bằng thẻ <jsp:forward> Thẻ <jsp:forward> để triệu gọi và chuyển dữ liệu lên cho trang jsp mới xử lý.
  • 17.  Chuyển hướng trang mới bằng sendRedirect Lệnh sendRedirect() chỉ thực hiện triệu gọi trang mà không chuyển tham số của trang hiện hành cho trang chuyển hướng.  Ví dụ : Việc xây dựng một trang Web, cấu trúc trang phải hoàn toàn thống nhất. Một trang Web có thể thực thi nhiều công việc khác nhau, chuyển đến nhiều trang khác nhau nhưng cấu trúc về giao diện phải được giữ vững. Với yêu cầu đó ta có thể sử dụng chỉ thị nhúng file <%@ include file ="tenfile" %> để nhúng các mã nguồn tĩnh. Nếu các thành phần này phải qua xử lý mới hiển thị ta có thể dùng thẻ <jsp:include page="tentrang" flush="true">. Hiển thị trang Web gồm có trên, dưới, trái, phải được thống nhất ở tất cả các trang như trang chủ, mà việc này ta không nên xử lý ở tất cả các trang mà việc ta phải làm chỉ là viết các trang jsp riêng rồi nhúng mã đó vào 1 trang khác. Bạn hãy theo dõi điều này trong ví dụ demo phía dưới cùng với mã nguồn tôi cung cấp. 5. JavaBeans 5.1 Khái niệm cơ bản về JavaBeans  JavaBeans thực chất là một đối tượng được cài đặt implements java.io.Serializable. Đối tượng bean theo cách hiểu của java thì bean có nghĩa là “hạt nhân”. Một bean là một đối tượng component chỉ có các thuộc tính được cài đặt private và muốn thao tác với nó phải thông qua các phương thức getter/setter. Lưu ý về cách đặt tên các đối tượng và phương thức trong lớp JavaBeans: tên đối tượng được quy định: chữ cái đầu là chữ thường, các chữ trong cùng 1 tên viết liền và viết hoa chữ cái đầu, phương thức của đối tượng bean là get + tên thuộc tính và set + tên thuộc tính, trong đó chuyển chữ cái đầu tiên của thuộc tính thành chữ in hoa.  JavaBeans là một mẫu đơn thể khả chuyển, độc lập hệ máy (portable), platform-independent component model). Các lập trình viên dùng chúng để tạo các đoạn phần mềm mà người khác có thể dùng được trong chương trình của họ.  Ví dụ mô tả về một đối tượng Bean
  • 18.  Đối tượng JavaBeans bắt buộc phải có phương thức khởi tạo mặc định để đối tượng được khởi tạo ngay cả khi không có tham số truyền vào. Lớp đối tượng JavaBeans bắt buộc phải là một lớp public.  Về cơ bản đối tượng JavaBeans cũng giống như các đối tượng bean như button, textField,… trong java. Chúng đều được tạo ra với mục đích sử dụng lại, tận dụng tối đa mã nguồn của người đi trước. Hai công việc tương tự nhau, một người đã hoàn thành, vậy người thực hiện sau muốn công việc được thúc đẩy nhanh chỉ cần tận dụng mã nguồn của người đi trước. Đấy chính là mục đích chính của đối tượng JavaBeans. Ở trên là những mô tả dễ hiểu nhất về JavaBean tôi có thể đưa ra cho các bạn. Các bạn có thể tham khảo thêm ở đây:http://www.echip.com.vn/echiproot/weblh/suutam/99/thds/javalg.htm http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5f575f5a5c http://dbglory.wordpress.com/2009/10/17/j2ee-dev-enterprise-javabean-3-0-ejb-3-0/ --- Enterprise JavaBeans http://nttuyen.wordpress.com/2008/10/12/enterprise-javabeans/ --- Enterprise JavaBeans 5.2 Các thẻ chuẩn của JavaBeans trong JSP  Thẻ <jsp:useBean> : dùng để định nghĩa Bean o Thẻ này dùng để khai báo phạm vi và định danh id nhận dạng đối tượng Beans. Nó tương tự như việc khai báo biến đối tượng trong mã java. o Cú pháp: <jsp:useBean id = “name” scope=”page|request|session|application” class=”package.tenBean”>
  • 19.  Thẻ <jsp:setProperty> o Thẻ này dùng để gán giá trị một thuộc tính cho một đối tượng Bean được chỉ định o Cú pháp: <jsp:setProperty name = “tenBean” property=”tenthuoctinh” value=”giatrimoi”>  Thẻ <jsp:getProperty> o Thẻ này dùng để lấy giá trị một thuộc tính của đối tượng Bean được chỉ định và trả về giá trị kiểu String. o Cú pháp: <jsp:getProperty name=”tenBean” property=”tenthuoctinh”> 6. Mô hình MVC trong ứng dụng Web với Java 6.1 Khái niệm cơ bản về mô hình MVC lược về mô hình MVC trong lập trình ứng dụng Web  Tên gọi Mô hình MVC xuất phát từ tên gọi của mô hình này. Tên đầy đủ của mô hình này là: Mô hình (Model – View – Controller). *Trong đó: o Model: Là thành phần hỗ trợ việc ánh xạ dữ liệu vật lý lên bộ nhớ, lưu trữ dữ liệu tạm thời trên bộ nhớ, hỗ trợ cấc cách thức xử lý dữ liệu, hỗ trợ khả năng giao tiếp và trao đổi dữ liệu giữa các đối tượng khác trong bộ nhớ và cơ sở dữ liệu. o View: Là thành phần hỗ trợ trình bày kết xuất ra màn hình, hỗ trợ thao tác vơi người dùng o Controller: Là thành phần hỗ trợ kết nối người dùng, server, đón nhập yêu cầu người dùn, thực hiện chuyển xử lý, lựa chọn và cập nhật model và view tương ứng để view trình bày về phía người dùng 6.2 Mô hình MVC trong ứng dụng Web với java  Trong lập trình Web với Java, với những dự án lớn hay Web site lớn người ta sử dụng mô hình MVC để việc phân chia modun, phân chia công việc, thiết kế giao diện, chỉnh sửa và bảo trì nâng cấp được thuận tiện hơn. Model: Thành phần JavaBeans đảm nhiệm ( lớn hơn có Enterprise JavaBeans hay Web Service) View: các trang jsp Controller : sử dụng servlet B. Tutorial Demo 1. Hướng dẫn cài đặt công cụ lập trình 1.1 Eclipse IDE  Bạn nên down load bản cài đặt Eclipse IDE for Java EE Deverlopment tại đây: http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2 *Hiện nay bản mới nhất là Eclipse Indigo
  • 20.  Chỉ cần cài Java JDK hoặc Java JRE. Sau đó giải nén vào bất kì thư mục nào và sử dụng 1.2 Tomcat Apache  Tomcat Apache download tại đây: Bản mới nhất là Tomcat 7.0.27 http://tomcat.apache.org/download-70.cgi  Bạn có thể download file .zip hoặc file .exe để dùng. Tuy nhiên nếu bạn là người dùng mới, nên cài đặt Tomcat Apache bằng file .exe. Mọi cài đặt khác sẽ được tự động mặc định  Sau khi cài đặt Tomcat Apache. ta phải tạo preference từ eclipse đên Tomcat như sau: Windows --> Preferences --> Server --> Runtime Environments --> chọn Add --> Apache --> Apache Tomcat 7.0 --> Next --> Browse (link đến thư mục cài đặt Tomcat) rồi finish. 1.3 MySQL Workbench  Bạn download MySQL Workbench tại đây: http://dev.mysql.com/downloads/mirror.php?id=408079#mirrors Chọn 1 server rồi down load như bình thường  Download và cài đặt bạn có thể xem seri video hướng dẫn sau tại đây: http://www.zend.vn/forum/viewtopic.php?f=87&t=3082 2.Tutorial Demo  Trong phần hướng dẫn này, tôi sẽ hướng dẫn các bạn tạo một project nhỏ kết hợp sử dụng mô hình MVC ở mức sơ khai.  Hướng dẫn này sẽ giúp các bạn làm quen với Eclipse IDE khi lập trình 1 trang Web động với java,
  • 21. o tạo các trang JSP o nhúng trang JSP vào một trang khác o đăng ký một servlet khi sử dụng servlet o sử dụng đối tượng HttpServletRequest và HttpServletResponse và việc lấy dữ liệu về, kết xuất dữ liệu hiển thị lên một trang JSP khác o tạo và sử dụng 1 đối tượng Bean đơn giản o truy xuất cơ sở dữ liệu Tutorial Khởi tạo project với Eclipse IDE  Bắt đầu một trang Web bạn cần có một server. Ở đây ta khởi tạo server bằng cach sau: o Chọn File --> Chọn New --> chọn Other (nếu không thấy server) --> chọn server --> chọn Next --> chọn Apache --> chọn Apache Tomcat v7.0 --> chọn Finish. o Sau khi tạo Server bạn sẽ có server như thế này:  Sau khi đã có Server bạn tạo project Web động bằng cách: o Kích chuột phải vào server --> Chọn "New" --> chọn "Other" --> Chọn "Web" --> Chọn "Dynamic Web Project" --> "Next"
  • 22.  Điền vào ô "Project Name" tên project mà bạn muốn tạo, còn lại nên để mặc định. Ở đây tôi đặt tên là CD_JSP  Sau khi điền tên project, bạn tiếp tục "Next" 2 lần. Đến đây bạn tích vào ô "Generate web.xml deployment descriptor" còn lại để mặc định. Đây sẽ là file mà dùng để triển khai
  • 23. ứng dụng của bạn. Bạn phải đăng ký và tạo mapping của servlet bạn dùng ở đây. Tại đây còn cho phép bạn đặt trang đầu tiên hiển thị khi bạn chạy ứng dụng web của bạn.  Chọn "Finish" và bạn có thể bắt đầu viết trang web của mình  Thống nhất về thiết kế trang web o Một trang Web chuyên nghiệp cần có một form chuẩn cho tất cả các trang của nó. Trái, phải, trên dưới phải thống nhất. Vì vậy việc đầu tiên cần làm là phân trang web cần hiển thị ra thành các thành phần và ta sẽ xử lý từng phần một.  Tạo trang chủ hiển thị đầu tiên khi vào ứng dụng o Kích chuột phải vào Web Content trong Project của bạn --> Chọn "New" --> Chọn "JSP File" hoặc "HTML File" đều được. Ở đây tôi chọn "JSP file". Đặt tên cho file và chọn "Finish". Ở đây tôi đặt là index.jsp
  • 24.  Cài đặt hiển thị Tiếng Việt trong trang JSP:  Những chỗ nào cài đặt là "ISO-8859-1" bạn đặt lại là "UTF-8".  Trong trang "web.xml" bạn đặt trang "index.jsp" là trang mặc định bằng cách  Khai báo sử dụng liên kết .css bằng thẻ link  Cấu trúc project và các trang, thư viện sử dụng, ảnh
  • 25.  Xây dựng giao diện trang web chia thành 5 phần: top, left, right. bottom tương ứng với trên, trái, phải, dưới cùng. Giao diện demo như sau:
  • 26.  Xây dựng các trang "top.jsp"; "right.jsp" ; "left.jsp" ; "bottom.jsp" sau đó nhúng vào các trang khác ph ục vụ cho hiển thị:
  • 27.  Trong mỗi trang hiển thị ta chia thành các phần thống nhất, chỉ có việc xử lý hiển thị ở thân trang là khác nhau. Để thực hiện điều này ta chia bảng cho mỗi trang với cấu trúc và khối lượng của các khung ở mỗi trang hiển thị đều như nhau  Ví dụ: Trang top.jsp Phía trên của trang thường dùng để logo và banner Dưới logo và banner trình bày một số chức năng hay các link đến trang khác Xử lý trong code để tạo hiển thị: Ở đây tạo folder image như trong cấu trúc trang, copy ảnh vào và tạo đường dẫn ảnh như trong code dưới đây
  • 28.  Các trang left.jsp. right.jsp, bottom.jsp xử lý hoàn toàn tương tự. Bạn hãy xem rõ hơn trong source code  Chức năng tìm kiếm: trang search,jsp Cấu trúc trang giống hệt như trang chủ index.jsp, chỉ khác việc xử lý ở phần thân trang Tạo một form để yêu cầu người dùng nhập thông tin tìm kiếm:
  • 29.  Chức năng đăng nhập : trang login.jsp Cấu trúc trang giống hệt như trang chủ index.jsp, chỉ khác việc xử lý ở phần thân trang Tạo một form để yêu cầu người dùng nhập thông tin đăng nhập:
  • 30.  Tạo thành phần Controller - servlet để xử lý o Tạo một class .java như bình thường và cho lớp này kế thừa lớp HttpServlet  Xử lý doGet() và doPost() là hoàn toàn giống nhau, ta có thể xử lý 1 phương thức, phương thức còn lại gọi phương thức kia nếu nó được gọi
  • 31.  Đăng ký và link đến servlet này trong file web.xml. Nếu bạn không đăng ký hoạt động của servlet trong web.xml thì trang servlet sẽ không thể thực hiện kết nối tới web server  Trả về kết quả, hiển thị kết xuất sang trang mới:  Tạo cơ sở dữ liệu
  • 32. Muốn kết nối được cơ sở dữ liệu cần phải có thư viện "mysql-connector-java-5.1.18-bin.jar" được đặt trong thư mục lib của WEB-INF  Tạo thành phần Model - đối tượng bean truy cập dữ liệu o Tạo một class được implements java.io.Serializable và tạo phương thức khởi tạo mặc định ** Đối tượng bean này được tạo ra với mục đích kiểm tra đăng nhập và tìm kiếm user, chưa có chức năng đăng ký nên ở đây tôi không tạo thuộc tính cho đối tượng bean này.  Kiểm tra đăng nhập Trả về true nếu tìm thấy tên và mật khẩu chính xác Trả về false nếu tên hoặc mật khẩu sai
  • 33.  Tìm kiếm user Trả về true nếu có tên người dùng trong database Trả về false nếu không tìm thấy tên người dùng trong database
  • 34.  Tạo các trang trả về kết quả sau khi đã kết nối dữ liệu hiển thị kết quả: Tất cả các trang này đều có cùng một form với trang chủ index o Trang fail.jsp: hiển thị khi không đăng nhập thành công
  • 35.  Trang welcome.jsp : hiển thị khi user đăng nhập thành công, tạo session để hiện thị name người dùng  Trang searchfail.jsp : hiển thị khi không có thông tin tìm kiếm  Trang resuilt.jsp: hiển thị khi tìm thấy thông tin về user
  • 36. 3. Source code Demo Đây là toàn bộ mã nguồn bài tutorial của tôi, các bạn có thể download về tại đây: http://www.mediafire.com/?hk4229u8alygkig Khi cài đặt sử dụng demo bạn nhớ sửa password để truy cập mysql của bạn tại class UserBean, hoặc cũng có thể đặt password của mysql của bạn với username: "root" và password là "root" C. Tài liệu tham khảo  Cuốn : Lập trình ứng dụng Web với jsp/servlet/JavaBeans của Phạm Hữu Khang  http://www.jsptut.com/ --JSP Tutorial  http://www.oracle.com/technetwork/java/javaee/jsp/index.html  http://tienlong.wordpress.com/2009/06/22/session-va-httpsessionlistener/  http://www.echip.com.vn/echiproot/weblh/suutam/99/thds/javalg.htm  http://www.pcworld.com.vn/pcworld/printArticle.asp?atcl_id=5f5e5f575f5a5c  http://dbglory.wordpress.com/2009/10/17/j2ee-dev-enterprise-javabean-3-0-ejb-3-0/ --- Enterprise JavaBeans  http://nttuyen.wordpress.com/2008/10/12/enterprise-javabeans/ --- Enterprise JavaBeans http://dev.vast.vn/tuananh/Web/C%C4%90015