Servlet không gi l i trong b nh v nh vi n, s đ n lúc c n lo iữ ạ ộ ớ ĩ ễ ẽ ế ầ ạ
Webserver kh i đ ng l i đ gi i phóng rác trong b nh t ng hi u su t th cở ộ ạ ể ả ộ ớ ă ệ ấ ự
hi n…. Tr c khi ch m d t, Web server s g i đ n ph ng th c h yệ ướ ấ ứ ẽ ọ ế ươ ứ ủ
destroy () c a servlet. ây là c h i đ servlet th c hi n m t s thao tác d nủ Đ ơ ộ ể ự ệ ộ ố ọ
d p c n thi t nh l u d li u xu ng đ a, ghi nh tr ng thái c a servlet đẹ ầ ế ư ư ữ ệ ố ĩ ớ ạ ủ ể
ph c v cho l n kh i đ ng sau, đóng k t n i v i c s d li u…. Và m c dùụ ụ ầ ở ộ ế ố ớ ơ ở ữ ệ ặ
Java có th t đ ng thu gom rác trong b nh nh ng n u chúng ta đã c p phátể ự ộ ộ ớ ư ế ấ
m t kh i l ng b nh l n cho servlet trong quá trình làm vi c, chúng ta nênộ ố ượ ộ ớ ớ ệ
th c hi n gi i phóng chúng trong ph ng th c destroy ().ự ệ ả ươ ứ
Chu trình s ng c a JSPố ủ
T ng t nh chu trình s ng c a servlet, trang JSP c ng có cbhu 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ố ị ừ ệ ố ọ ị ọ ự ạ
trang kh i b nh . Chu trình s ng c a JSP tr i qua các giai đo n sau:ỏ ộ ớ ố ủ ả ạ
• Biên d ch trang JSPị • N p trangạ • Kh i t oở ạ • Th c thiự • D n d pọ ẹ Biên d ch trang JSPị
Khi trình duy t yêu c u trang JSP, ví d tri u g i trang JSP b ng URLệ ầ ụ ệ ọ ằ http://localhost:8100/Default.jsp. Web server s ki m tra 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 trong 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 .ị ự ế ể ị
biên d ch trang ch di n ra m t l n. N u trang đã biên d ch và sau đó chúng taị ỉ ễ ộ ầ ế ị
không có thay đ i gì trong trang ngu n thì quá trình biên d ch s không x y ra,ổ ồ ị ẽ ả
do đó t c đ th c thi trang s nhanh h n. Sau khi trang đã đ c biên d ch, mãố ộ ự ẽ ơ ượ ị
trang s đ c n p vào b nh đ th c thi.ẽ ượ ạ ộ ớ ể ự
N p trangạ
K t giai đo n này, quá trình n p trang t ng t nh servlet. Ch cóể ừ ạ ạ ươ ư ư ỉ
m t khác bi t đó 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.ầ ừ ệ
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 ph ng th c kh i t oạ ặ ượ ị ư ươ ứ ở ạ
cho trang JSP l i mang tên jspInit () ch không ph i là init () nh servlet.ạ ứ ả ư
Th c thiự
Sau quá trình kh i t o, Web server s g i đ n ph ng th cở ạ ẽ ọ ế ươ ứ
_jspService (). Ph ng th c _jspService s chuy n cho chúng ta hai l p đ iươ ứ ẽ ể ớ ố
t ng HttpServletRequest và HttpServletResponse đ đ c và ghi k t xu t trượ ể ọ ế ấ ả
v trình khách.ề
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, chúng ta có th cài đ t ph ng th c jspDestroy () th c hi n ch cể ặ ươ ứ ự ệ ứ
n ng gi p phóng vùng nh ho c đóng k t n i tr tài nguyên v cho h th ng.ă ả ớ ặ ế ố ả ề ệ ố
Do mã trang JSP khi th c thi đ u đ c biên d ch ra servlet cho nên t t cự ề ượ ị ấ ả
nh ng gì servlet làm đ c c ng đ ng ngh a v i trang JSP làm đ c. Vi t trangữ ượ ũ ồ ĩ ớ ượ ế
JSP đôi lúc đ n gi n h n vi t servlet vì không c n ph i qua b c đ ng ký vàơ ả ơ ế ầ ả ướ ă
biên d ch th công. Tuy nhiên chúng ta c ng nên bi t m t s tr ng h p phânị ủ ũ ế ộ ố ườ ợ
bi t gi a JSP và servlet và cách s d ng chúng.ệ ữ ử ụ
JSP có th tr n l n mã Java v i các th HTML cho nên thi t k trang JSPể ộ ẫ ớ ẻ ế ế
th ng đ n gi n và d b sung h n so v i servlet. Tuy nhiên đây c ng là y u tườ ơ ả ễ ổ ơ ớ ũ ế ố
không nên l m d ng đ i v i JSP. N u chúng ta t p trung t t c mã Java vàoạ ụ ố ớ ế ậ ấ ả
c ng v i mã HTML, m t khi d án m r ng và tr nên ph c t p, vi c b o trì vàũ ớ ộ ự ỡ ộ ở ứ ạ ệ ả
nâng c p ng d ng Web v i hàng tr m trang JSP s r t khó kh n. Trong quáấ ứ ụ ớ ă ẽ ấ ă
trình phát tri n ng d ng Web theo nhóm, vi c tr n l n mã JSp s r t khóể ứ ụ ệ ộ ẫ ẽ ấ
kh n. Trong qua trình phát tri n ng d ng Web theo nhóm, vi c tr n l n mãă ể ứ ụ ệ ộ ẫ
Java và HTML trong trang JSP cho th y không hi u qu . Khó có th tách r iấ ệ ả ể ờ
gi a công vi c vi t mã cho ng d ng và nhóm xây d ng giao di n. Mã trangữ ệ ế ứ ụ ự ệ
JSP d ng thu n v n b n nên th ng không che đ c mã ngu n c a logicở ạ ầ ă ả ườ ượ ồ ủ
ch ng trình.ươ
V i servlet, tuy ph i biên d ch và đ ng ký th công v i trình ch nh ngớ ả ị ă ủ ớ ủ ư
bù l i tính b o m t cao h n. Chúng ta ch c n cung c p cho trình ch Webạ ả ậ ơ ủ ầ ấ ủ
server b n servlet nh phân (file .class) đã qua b c biên d ch mã không c n đ nả ị ướ ị ầ ế
mã ngu n c a servlet ban đ u. M c khác, các servlet có th t ng tác liên hoàn,ồ ủ ầ ặ ể ươ
v i nhau đ t o nên nh ng k t xu t tùy bi n và đa d ng tr c khi tr k t quớ ể ạ ữ ế ấ ế ạ ướ ả ế ả
v cho trình khách. Servlet có th phân rã các đ n th c a d án và phát tri n đ cề ể ơ ể ủ ự ể ộ
l p nhau nh các thành ph n riêng bi t đ ráp l i trong m t t ng th chung.ậ ư ầ ệ ể ạ ộ ổ ể
Tuy nhiên, vi c k t xu t trong servlet th ng d a vào ph ng th c print ()ệ ế ấ ườ ự ươ ứ
ho c println (). Công vi c quy t đ nh giao di n cho k t xu t hoàn toàn phặ ệ ế ị ệ ế ấ ụ
thu c vào l p trình viên v i hàng lo t các l nh print () hay println () r t khóộ ậ ớ ạ ệ ấ
Quy t đ nh s d ng JSP, Servlet hay k t h p c hai là tu vào t ng dế ị ử ụ ế ợ ả ỳ ừ ự
án và m c đích c a ch ng trình mà chúng ta mu n phát tri n. Thông th ng đ iụ ủ ươ ố ể ườ ố
v i nh ng d án nh , yêu c u th i gian nhanh, JSP là l a ch n thích h pớ ữ ự ỏ ầ ờ ư ọ ợ
nh t. Tr ng h p v i d án c n s đ c l p và ch thiên v x lý ta nên s d ngấ ườ ợ ớ ự ầ ự ộ ậ ỉ ề ử ử ụ
servlet. Tr ng h p v i d án l n chúng ta nên k t h p c servlet và JSP. Môườ ợ ớ ự ớ ế ợ ả
hình k t h p t t nh t gi a servlet và JSP th ng đ c g i là MCV (Model –ế ợ ố ấ ữ ườ ượ ọ
View – Controler) trong đó servlet đóng vai trò trung tâm đi u khi n (controler)ề ể
đ a ra các quy t đ nh x lý. JSP đóng vai trò th hi n giao di n hay hi n th dư ế ị ử ể ệ ệ ể ị ữ
li u đã x lý. Quy trình tính toán logic c a ng d ng đ c giao l i cho các thànhệ ử ủ ứ ụ ượ ạ
Chương II
Tag Libraries
Tag LibrariesI. I.