JavaServer Pages (JSP) là một kỹ thuật server-side do đó chúng ta không thể thực hiện bất kỳ hành động nào ở client. JSP cho phép chúng ta tách thành phần động của trang ra khỏi thành phần tĩnh HTML. Rất đơn giản, chúng ta chỉ cần viết một tài liệu HTML bình thường rồi sau đó bao quanh mã của thành phần động trong các tag đặc biệt, hầu hết các tag bắt đầu với <% và kết thúc với %>. Ví dụ, đây là một phần của trang JSP, có kết quả trả về là “Thanks for reading jsp book.” với URL là
92 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1083 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Một số so sánh các công nghệ được sử dụng với công nghệ khác, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Phaàn I: JSP TECHNOLOGY
Chöông I: CAÊN BAÛN VEÀ JSP
JavaServer Pages (JSP) laø moät kyõ thuaät server-side do ñoù chuùng ta khoâng theå thöïc hieän baát kyø haønh ñoäng naøo ôû client. JSP cho pheùp chuùng ta taùch thaønh phaàn ñoäng cuûa trang ra khoûi thaønh phaàn tónh HTML. Raát ñôn giaûn, chuùng ta chæ caàn vieát moät taøi lieäu HTML bình thöôøng roài sau ñoù bao quanh maõ cuûa thaønh phaàn ñoäng trong caùc tag ñaëc bieät, haàu heát caùc tag baét ñaàu vôùi . Ví duï, ñaây laø moät phaàn cuûa trang JSP, coù keát quaû traû veà laø “Thanks for reading jsp book.” vôùi URL laø
Thanks for reading book.
Kyõ thuaät JSP laø moät thaønh phaàn trong ñaïi gia ñình Java; noù söû duøng ngoân ngöõ kòch baûn döïa vaøo ngoân ngöõ laäp trình Java, vaø caùc trang JSP ñöôïc bieân dòch thaønh servlets. Töø ñoù chuùng ta cuõng nhaän bieát ñöôïc, JSP thì khoâng phuï thuoäc baát kyø neàn (platform) naøo. Noù ñaùp öùng ñöôïc khuynh höôùng cuûa Sun MicroSystem laø “write one, run anywhere”.
Caùc trang JSP coù theå goïi caùc thaønh phaàn JavaBeans, Enterprise JavaBeans (EJB) hoaëc custom tags ñeå thöïc hieän caùc xöû lyù treân server. Vaø nhö theá, kyõ thuaät JSP laø thaønh phaàn chuû choát trong kieán truùc khaû chuyeån cuûa Java cho nhöõng öùng duïng döïa vaøo Web.
Nhö ñaõ bieát, JSPs seõ bieân dòch thaønh servlets nhöng JSP khoâng theå thay theá servlet vì caùc lyù do sau:
Moät soá taùc vuï ñöôïc giaûi quyeát raát toát baèng servlet. Ví duï, caùc öùng duïng xuaát ra döõ lieäu nhò phaân hoaëc chæ xaùc ñònh nôi gôûi trôû laïi cho ngöôøi duøng (baèng caùch duøng response.sendRedirect) ñöôïc duøng servlet thì toát nhaát.
Moät soá taùc vuï khaùc laïi ñöôïc giaûi quyeát raát toát baèng JSP nhö caùc tình huoáng maø caáu truùc neàn taûng cuûa trang HTML laø coá ñònh nhöng caùc giaù trò trong noù laïi thay ñoåi.
Coøn caùc taùc vuï coøn laïi caàn söï keát hôïp caû servlet vaø JSP. Ví duï, trong yeâu caàu goác ñöôïc traû lôøi baèng moät servlet maø thöïc hieän moïi coâng vieäc, löu tröõ caùc keát quaû trong caùc Beans vaø ñieàu phoái yeâu caàu naøy ñeán moät trong nhöõng trang JSP coù theå hieån thò noù.
Caû ba ñònh höôùng naøy ñeàu coù choå ñöùng cuûa noù. Chaúng coù ñònh höôùng naøo hoå trôï ñaày ñuû cho moïi öùng duïng .
Tröôùc khi ñi vaøo chi tieát coâng ngheä JSP, chuùng toâi coù moät vaøi so saùnh caùc coâng ngheä ñöôïc söû duïng trong öùng duïng vôùi caùc coâng ngheä khaùc.
Moät soá so saùnh caùc coâng ngheä ñöôïc söû duïng vôùi coâng ngheä khaùc?
MySQL Server.
MySQL laø heä quaûn trò cô sôû döõ lieäu quan heä. Cô sôû döõ lieäu laø moät taäp döõ lieäu coù caáu truùc vaø ñöôïc löu tröõ trong caùc baûng rieâng bieät, moãi baûng ñöôïc löu trong ba files vôùi teân cô sôû döõ lieäu laø teân thö muïc chöùa caùc files ñoù. SQL ñöôïc vieát taét töø Structured Query Language, laø ngoân ngöõ chuaån phoå bieán nhaát ñeå truy caäp cô sôû döõ lieäu. Sau ñaây laø moät soá öu vaø nhöôïc ñieåm cuûa MySQL vôùi caùc heä quaûn trò cô sôû döõ lieäu khaùc:
Öu dieåm.
Chaïy ñöôïc treân raát nhieàu neàn khaùc nhau nhö Unix, Windows, MacOS, ….
MySQL laø heä quaûn trò nhanh, nhoû goïn. Caùc script files coù theå chaïy treân moät soá heä quaûn trò khaùc nhö MS SQL Server, Oracle.
Theo moät soá web site thoáng keâ, vieäc thöïc hieän caùc leänh insert, update, delete nhanh nhaát trong caùc heä quaûn trò.
Mieãn phí vaø maõ nguoàn môû (open source code).
Khuyeát ñieåm.
Chöa hoå trôï moät soá chuaån ANSI SQL92 nhö khoâng cho caùc caâu select loàng nhau, select into table, khoaù ngoaïi, triggers, stored procedures,…
Khoâng coù moâi tröôøng ñoà hoaï.
So saùnh JSP vôùi caùc coâng ngheä khaùc.
JSP vôùi ASP.
ASP laø coâng ngheä töông ñöông töø Microsoft. JSP coù ba lôïi theá so vôùi ASP.
Phaàn ñoäng ñöôïc vieát baèng Java, chöù khoâng phaûi baèng caùc ngoân ngöõ script nhö VBScript, JavaScript. Vì theá noù maïnh meõ hôn toát hôn ñoái vôùi caùc öùng duïng phöùc taïp caàn caùc thaønh phaàn söû duïng laïi.
JSP chaïy ñöôïc treân nhieàu heä ñieàu haønh vaø web servers khaùc nhau ngay caû vôùi IIS cuûa Microsoft (caàn coù plugins töø Webphere, JRun, ...)
Hoå trôï söï môû roäng tag vôùi custom tag.
JSP vôùi PHP.
Lôïi ñieåm cuûa JSP vôùi PHP cuõng nhö vôùi ASP. JSP ñöôïc vieát baèng Java maø chuùng ta ñaõ bieát vôùi caùc API môû roäng cho maïng, truy caäp cô sôû döõ lieäu, caùc ñoái töôïng phaân taùn, … trong khi vôùi PHP ñoøi hoûi chuùng ta phaûi hoïc caû moät ngoân ngöõ môùi.
Taàm quan troïng cuûa XML cuøng vôùi XSLT.
XML.
XML laø taäp con cuûa SGML, noù keát hôïp tính linh ñoäng vaø söùc maïnh cuûa SGML cuøng vôùi moät soá tính naêng höõu ích cuûa HTML. Vì XML laø taäp con cuûa SGML neân noù cuõng töông thích vôùi caùc heä thoáng döïa vaøo SGML ñaõ coù. XML laø löïc ñaåy cho caùc nghi thöùc treân internet vaø caùc phaàn meàm ñeå deã daøng xöû lyù vaø truyeàn döõ lieäu.
ÔÛ treân ñaõ noùi XML laø taäp con cuûa SGML vaø HTML laø moät söï caøi ñaët cuûa SGML, moâ hình sau ñaây dieãn taû moái quan heä giöõa caùc ngoân ngöõ vaø caùc sieâu ngoân ngöõ:
SGML
HTML
XML
CDF
SMIL
CML
MML
Metalanguages Languages Implementation
subset
Implementation
CDF : Channel Difinition Format – cho pheùp caùc taùc giaû cuûa caùc Web sites cho pheùp caùc ngöôøi ñaêng kyù bieát khi naøo Web site naøy thay ñoåi, CDF ñaõ ñöôïc giôùi thieäu trong IE4 vì vaäy noù chæ laøm vieäc vôùi IE cuûa Microsoft.
SMIL : Synchronized Multimedia Integration Language – ñöôïc söû duïng ñeå ñoàng boä hoùa caùc doøng döõ lieäu ña truyeàn thoâng ñöôïc truyeàn qua internet.
CML : Chemical Markup Language – moâ taû caùc coâng thöùc hoùa hoïc.
MML: Mathematical Markup language- moâ taû caùc phöông trình, bieåu thöùc toaùn hoïc.
Tính töï moâ taû döõ lieäu cuûa XML : caùc tags moâ taû caùc vaán ñeà, caùc ñoái töôïng gaàn guûi vôùi theá giôùi thöïc. Chuùng ta seõ thaáy roõ hôn vôùi hai ví duï sau, ñaây laø ví duï minh hoïa neân noù coøn thieáu nhieàu thuoäc tính trong theá giôùi thöïc :
Ví duï vôùi XML tags
Giang
Le
Dinh
0750
22
Ví duï vôùi HTML tags
Giang
Le
Dinh
Number id :
0750
Age :
22
XML coù moái quan heä chaët cheõ vôùi JSP, ñaët taû JSP hoå trôï cuù phaùp XML, chuùng ta coù theå troän laãn maõ chuùng vôùi nhau deã daøng nhö JSP vôùi HTML nhö theá chuùng ta coù theå duøng JSP töï ñoäng phaùt sinh trang XML.
Hieän nay coù raát nhieàu saûn phaåm quaûn trò cô sôû döõ lieäu maø moãi saûn phaåm ñeàu coù caùc ñaëc tính rieâng noù, do ñoù khi caùc cô sôû döõ lieäu khaùc nhau caàn chuyeån ñoåi döõ lieäu vôùi nhau laïi khoâng töông thích. Vì vaäy ngöôøi laøm coâng vieäc naøy caàn phaûi bieát nhieàu saûn phaåm quaûn trò cô sôû döõ lieäu khaùc nhau. Do ñoù XML laø moät ñònh daïng chuaån maø caùc heä quaûn trò caàn hoå trôï. Hieän nay coù nhieàu heä quaûn trò lôùn hoå trôï XML nhö MS SQL Server, Oracle, …
XSLT.
Extensible Stylesheet Language Transformation (XSLT) laø moät ngoân ngöõ ñöôïc taùch ra töø ngoân ngöõ XSL, “XSLT laø moät ngoân ngöõ duøng ñeå chuyeån ñoåi caùc XML document thaønh caùc XML document khaùc”. Noù ñöôïc vieát baèng XML, ñieàu naøy coù nghóa raèng söï chuyeån ñoåi trong XSLT ñöôïc trình baøy nhö moät well-formed XML document. XSLT ñoùng vai troø quan troïng trong höôùng phaùt trieån “phaùt sinh ngoân ngöõ markup höôùng ngöôøi duøng”.
JSP scripting elements.
Caùc scripting elements trong JSP cho pheùp chuùng ta cheøn maõ vaøo servlet maø seõ ñöôïc phaùt sinh töø trang JSP. Coù ba daïng sau:
Bieåu thöùc coù daïng , ñöôïc ñònh giaù trò vaø cheøn vaøo luoàng xuaát cuûa servlet.
Scriptlet coù daïng , ñöôïc cheøn vaøo phöông thöùc _jspService cuûa servlet (ñöôïc goïi laø service).
Khai baùo coù daïng , ñöôïc cheøn vaøo thaân cuûa lôùp servlet, nhö laø caùc field cuûa lôùp thoâng thöôøng.
Template text
Trong nhieàu tröôøng hôïp, phaàn lôùn caùc trang JSP chæ bao goàm HTML tónh, ñöôïc bieát nhö laø template text. Coù hai ngoaïi leä phuï cho quy taéc “template text ñöôïc chuyeån thaúng sang HTML tónh”. Ñaàu tieân, neáu chuùng ta muoán coù <% trong luoàng xuaát thì chuùng ta caàn phaûi ñaët <\% trong template text. Thöù hai, neáu chuùng ta muoán coù chuù thích trong JSP maø khoâng coù trong taøi lieäu keát quaû, duøng:
Chuù thích HTML coù daïng:
thì ñöôïc chuyeån qua taøi lieäu HTML thoâng thöôøng.
Cuù phaùp XML
Trong JSP coù raát nhieàu element coù cuù phaùp XML nhö jsp:useBean, jsp:include, jsp:setProperty, ... Tuy nhieân scripting elements laïi coù hai daïng cuù phaùp sau:
JSP Syntax
XML Syntax
Java code
Java code
Java code
Caùc bieán ñöôïc ñònh nghóa saün trong JSP
Ñeå ñôn giaûn hoaù maõ trong caùc bieåu thöùc hay scriptlets trong JSP, ngöôøi ta cung caáp cho chuùng ta chín ñoái töôïng ñaõ ñöôïc ñònh nghóa tröôùc, coù ngöôøi coøn goïi laø caùc ñoái töôïng ngaàm ñònh. Do caùc khai baùo trong JSP naèm ngoaøi phöông thöùc _jspService (ñöôïc goïi bôûi service) neân caùc ñoái töôïng naøy khoâng cho pheùp caùc khai baùo truy caäp vaøo.
request
Bieán naøy coù kieåu laø javax.servlet.http.HttpServletRequest, coù phaïm vi trong moät yeâu caàu (request). Noù cho pheùp chuùng ta truy caäp vaøo caùc tham soá cuûa request nhö loaïi request (GET, POST, …) vaø caùc incoming HTTP header (cookies).
response
Coù kieåu laø javax.servlet.http.HttpServletResponse, coù phaïm vi toaøn trang (page). Chuù yù raèng vì luoàng xuaát thì thöôøng laøm vaät ñeäm cho neân vieäc gaùn maõ tình traïng cuûa HTTP vaø response header thì hôïp lyù trong JSP, maëc duø ñieàu naøy thì khoâng ñöôïc pheùp trong servlet moät khi ñaõ coù luoàng xuaát naøo ñöôïc gôûi ñeán client.
out
Coù kieåu javax.servlet.jsp.JspWriter vaø phaïm vi trong moät trang (page). Duøng ñeå gôûi caùc thoâng xuaát ñeán client. Ñoái töôïng out ñöôïc duøng thöôøng xuyeân trong scriptlets, caùc bieåu thöùc töï ñoäng ñöôïc ñöa vaøo luoàng xuaát neân hieám khi caàn tham chieáu ñeán ñoái töôïng naøy.
session
Coù phaïm vi trong moät phieân truyeàn (session) vaø kieåu töông öùng laø javax.servlet.http.HttpSession. Goïi veà caùc phieân truyeàn ñöôïc taïo töï ñoäng vì theá bieán naøy vaãn coøn keát noái ngay caû chaúng coù moät tham chieáu incoming session naøo. Moät ngoaïi leä laø neáu chuùng ta söû duïng thuoäc tính session cuûa page directive ñeå taéc caùc phieân truyeàn, maø laïi coá tham chieáu ñeán bieán session thì seõ gaây ra caùc loãi vaøo luùc trang JSP ñöôïc dòch thaønh servlet.
application
Bieán naøy coù kieåu laø javax.servlet.ServletContext, coù phaïm vi trong toaøn öùng duïng (application). ServletContext laáy töø moät ñoái töôïng caáu hình servlet laø getServletConfig().getContext(). Caùc trang JSP coù theå löu tröõ döõ lieäu persistent trong ñoái töôïng ServletContext toát hôn laø trong caùc bieán theå hieän. ServletContext coù caùc phöông thöùc setAttribute vaø setAttribute maø cho pheùp chuùng ta löu tröõ döõ lieäu
config
Bieán naøy coù phaïm vi trang (page) vaø coù kieåu töông öùng laø javax.servlet.ServletConfig.
pageContext
Bieán naøy coù kieåu laø javax.servlet.jsp.PageContext vaø coù phaïm vi laø trang (page). pageContext cho pheùp moät ñieåm truy caäp duy nhaát tôùi nhieàu thuoäc tính cuûa trang vaø cung caáp moät nôi thuaän tieän ñeå löu tröõ döõ lieäu duøng chung. Bieán pageContext löu tröõ giaù trò cuûa javax.servlet.jsp.PageContext cuøng vôùi trang hieän haønh. Coù theå xem chi tieát trong chöông II veà JavaBeans.
page
Bieán naøy ñoàng nghóa vôùi this vaø ñieàu naøy thì khoâng höõu ích trong ngoân ngöõ laäp trình Java, coù kieåu laø java.lang.Object vaø coù phaïm vi trang (page).
exception
Trong moät trang loãi, chuùng ta coù theå truy caäp vaøo ñoái töôïng exception. Bieán naøy coù kieåu laø java.lang.Throwable vaø phaïm vò laø trang (page).
Bieåu thöùc trong JSP
Bieåu thöùc trong JSP ñöôïc duøng ñeå cheøn caùc giaù trò tröïc tieáp vaøo luoàng xuaát. Noù coù daïng sau:
Bieåu thöùc naøy ñöôïc ñònh trò, ñöôïc chuyeån thaønh chuoåi, vaø ñöôïc cheøn vaøo trong trang. Söï ñònh trò dieãn ra ôû thôøi gian runtime (khi trang ñöôïc yeâu caàu) vaø do ñoù coù ñaày ñuû quyeàn truy caäp caùc thoâng tin cuûa yeâu caàu naøy. Ví duï sau ñaây moâ taû ngaøy/giôø maø trang ñöôïc yeâu caàu:
Current time:
Trong Java moãi caâu leänh ñeàu coù daáu ‘;’ keát thuùc doøng. Taïi sao bieåu thöùc trong JSP laïi khoâng coù daáu ‘;’? Vì bieåu thöùc naøy ñöôïc ñöa vaøo luoàng xuaát chaúng haïn nhö PrintWriter. Vôùi ví duï treân coù theå chuyeån vaøo servlet nhö sau:
PrintWriter out = response.getWriter();
out.println(“Current time:” + new java.util.Date());
Bieåu thöùc nhö laø giaù trò trong elements khaùc.
Bieåu thöùc coù theå ñöôïc söû duïng trong caùc thuoäc tính cuûa caùc elements khaùc. Giaù trò töø caùc bieåu thöùc naøy seõ ñöôïc tính vaøo thôøi gian yeâu caàu (request time). Caùc elements cho pheùp söû duïng bieåu thöùc trong caùc thuoäc tính cuûa chuùng laø:
Teân Element
Teân thuoäc tính
jsp:setProperty
name vaø value
jsp:include
page
jsp:forward
page
jsp:param
value
Ví duï expression.jsp.
Ñaây laø moät ví duï hoaøn chænh ñaàu tieân cuûa JSP. Noù chæ hieån thò thôøi gian hieän thôøi, teân maùy,.. khi file naøy ñöôïc truy caäp.
Code 1: expression.jsp
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
JSP Expressions
<meta name="description" content=
Code 1: expression.jsp (tieáp theo)
"A quick example of JSP expressions." />
<link rel="stylesheet" href="JSP-Styles.css"
type="text/css" />
JSP Expressions
Current time:
Your hostname:
Your session ID:
The testParam form parameter:
JSP scriptlets
Scriptlets laø nhöõng ñoaïn maõ coù chöùa baát kyø maõ Java naøo naèm giöõa “”. Neáu chuùng ta muoán thöïc hieän thöù gì ñoù phöùc taïp hôn laø chæ cheøn vaøo moät bieåu thöùc ñôn giaûn thì JSP scriptlets cho pheùp chuùng ta theâm baát kyø ñoaïn maõ Java naøo vaøo trang JSP. Caùc scriptlets naøy ñöôïc ñöa vaøo phöông thöùc _jspService (maø ñöôïc goïi bôûi service) cuûa servlet. Coù cuù phaùp:
Code 2: scriptlet.jsp
Code 2: scriptlet.jsp (tieáp theo)
JSP Scriptlets
<%
String bgColor = request.getParameter("bgColor");
boolean hasExplicitColor;
if (bgColor != null) {
hasExplicitColor = true;
} else {
hasExplicitColor = false;
bgColor = "WHITE";
}
%>
">
Color Testing
<%
if (hasExplicitColor) {
out.println("You supplied an explicit background color of " + bgColor + ".");
} else {
out.println("Using default background color of WHITE. " + "Supply the bgColor request attribute to try " +
"a standard color, an RRGGBB value, or to see " +
"if your browser supports X11 color names.");
}
%>
Khai baùo trong JSP
Moät khai baùo trong JSP cho pheùp chuùng ta ñònh nghóa caùc phöông thöùc hoaëc caùc tröôøng (bieán) coù phaïm vi toaøn trang. Khai baùo seõ ñöôïc cheøn vaøo trong lôùp cuûa servlet (beân ngoaøi phöông thöùc _jspService ñöôïc goïi bôûi service ñeå xöû lyù moät yeâu caàu). Moät khai baùo coù daïng sau:
Caùc khai baùo trong JSP thì khoâng phaùt sinh ra baát kyø thoâng xuaát naøo, chuùng thöôøng ñöôïc duøng ñeå lieân keát vôùi caùc bieåu thöùc hoaëc scriptlets. Chaúng haïn, ñaây laø moät trang JSP maø in ra soá laàn truy caäp vaøo trang.
Code 3: declaration.jsp
JSP Declarations
JSP Declarations
Accesses to page since server reboot:
JSP directives.
Directives laø caùc leänh (chæ thò) ñeán JSP container ñeå xöû lyù trang JSP, chuùng taùc ñoäng leân toaøn boä caáu truùc cuûa lôùp servlet. Chuùng coù daïng sau:
Cuù phaùp naøy thì deã ñeå soaïn thaûo, ngaén goïn, suùc tích nhöng khoâng töông thích vôùi XML (Cuù phaùp XML ôû döôùi).
Directives thì khoâng xuaát baát kyø thöù gì ra luoàng xuaát out. Chæ coù ba directives trong JSP: page, include vaø taglib.
Cuù phaùp XML
Töông töï nhö scripting elements, caùc directives cuõng coù hai daïng cuù phaùp:
JSP Syntax
XML Syntax
: attr_list seõ ñöôïc moâ taû phaàn sau trong chöông naøy.
: directive naøy ñöôïc trình baøy trong chöông III Tag Libraries.
The page directive
page directive cho pheùp chuùng ta ñieàu khieån caáu truùc cuûa servlet baèng caùch ñöa vaøo caùc lôùp, ñaët MIME type, …. Moät page directive coù theå ñöôïc ñaët baát cöù nôi naøo trong trang JSP.
page directive ñònh nghóa moät soá thuoäc tính phuï thuoäc vaøo trang vaø giao tieáp giöõa caùc thuoäc tính naøy vôùi JSP container.
language
Ñònh nghóa ngoân ngöõ kòch baûn ñöôïc söû duïng trong scriptlets, bieåu thöùc vaø khai baùo. Trong JSP 1.2 laø phieân baûn môùi nhaát chæ coù hoå trôï “java” cho thuoäc tính naøy do ñoù “java” naøy cuõng laø giaù trò maät ñònh.
extends
Thuoäc tính naøy chæ ñònh lôùp cha (superclass) cuûa servlet seõ ñöôïc phaùt sinh cho trang JSP, coù daïng sau:
Chuù yù raèng khi söû duïng thuoäc tính naøy phaûi heát söùc caån thaän vì taïi server coù theå ñaõ duøng lôùp cha maät ñònh.
import
Thuoäc tính naøy moâ taû caùc kieåu saün duøng trong moâi tröôøng kòch baûn (theo java). Chuùng ta coù theå import vaøo töøng lôùp hoaëc caû moät goùi (package).
Neáu import vaøo nhieàu lôùp hay packages thì caùch nhau daáu “,”.
session
Thuoäc tính session kieåm soaùt lieäu coù hay khoâng moät trang tham gia vaøo HTTP session. Coù hai giaù trò “true” vaø “false”. Maät ñònh laø “true”, chæ ra raèng bieán ngaàm ñònh session neân ñöôïc noái keát vôùi session hieän haønh. Giaù trò “false” coù nghóa raèng chaúng coù session naøo ñöôïc söû duïng töï ñoäng vaø neáu coá truy caäp vaøo bieán session seõ traû loãi vaøo luùc trang ñöôïc dòch thaønh servlet.
buffer
Thoäc tính naøy xaùc ñònh kích thöôùc cuûa vuøng ñeäm ñöôïc söû duïng bôûi bieán out. Coù daïng sau:
Thuoäc tính naøy coù giaù trò maät ñònh laø “8kb”, giaù trò “none” chaúng coù vuøng ñeäm naøo ñöôïc caáp vaø taát caû döõ lieäu xuaát seõ ñöôïc ghi tröïc tieáp qua ServletResponse, PrintWriter.
autoFlush
Xaùc ñònh lieäu luoàng xuaát coù vuøng ñeäm ñöôïc töï ñoäng flush (giaù trò “true” maät ñònh) khi vuøng ñeäm ñaày hay seõ tung ra moät ngoaïi leä khi vuøng ñeäm traøn (“false”).
Chuù yù raèng seõ khoâng hôïp lyù neáu ñaët autoFlush=“false” khi buffer=“none”.
isThreadSafe
Xaùc ñònh möùc ñoä an toaøn cuûa tieåu trình (thread) ñöôïc caøi ñaët trong trang (vôùi giao tieáp SingleThreadModel), “true” laø giaù trò maät ñònh.
info
Ñònh nghóa moät chuoãi coù theå truy xuaát töø servlet baèng phöông thöùc getServletInfo().
errorPage
Thuoäc tính naøy xaùc ñònh moät trang JSP neân baát kyø caùc ngoaïi leä naøo ñöôïc tung ra nhöng khoâng baét ngoaïi leä naøy trong trang hieän haønh.
Ngoaïi leä tung ra seõ coù saün trong bieán ngaàm ñònh exception.
isErrorPage
Xaùc ñònh trang JSP hieän thôøi coù theå hoaït ñoäng nhö moät trang loãi cho moät trang JSP khaùc. Giaù trò “false” laø maät ñònh cho thuoäc tính naøy.
contentType
Thuoäc tính naøy gaùn Content-Type cho response header, moâ taû kieåu MIME cuûa taøi lieäu ñöôïc gôûi ñeán client. Thuoäc tính contentType coù moät trong hai daïng sau:
Moät soá kieåu MIME-Type thöôøng duøng: “text/html”, “text/xml”, “text/plain”, “image/gif”, “image/jpeg”.
pageEncoding
Ñònh nghóa boä maõ hoaù kyù töï cho trang JSP (character encoding), thuoäc tính naøy hoå trôï cho boä maõ Unicode vaø Latin-1, coù giaù trò maät ñònh laø “ISO-8859-1”
Code 4: pagedirective.jsp
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
The page Directive
<link rel="styleshhet" href="JSP-Styles.css"
type="text/css" />
The page Directive
Ví duï 4: pagedirective.jsp (tieáp theo)
<%!
private String randomID() {
int num = (int)(Math.random()*10000000.0);
return("id" + num);
}
private final String NO_VALUE = "No Value";
%>
<%
Cookie[] cookies = request.getCookies();
String oldID = ServletUtilities.getCookieValue(cookies, "userID", NO_VALUE);
String newID;
if (oldID.equals(NO_VALUE)) {
newID = randomID();
} else {
newID = oldID;
}
LongLivedCookiecookie = new LongLivedCookie ("userID" , newID);
response.addCookie(cookie);
%>
This page was accessed at with a userID
cookie of .
The include directive
Chuùng ta söû duïng include directive ñeå ñöa moät file vaøo taøi lieäu JSP chính vaøo luùc taøi lieäu dòch thaønh servlet (maø thöôøng vaøo laàn ñaàu tieân truy caäp vaøo trang naøy). Coù cuù phaùp nhö sau:
Thaät söï JSP chia laøm hai nhaùnh ñeå include moät file vaøo moät taøi lieäu chính. File ñöôïc include thì ñöôïc cheøn vaøo trang vaøo luùc bieân dòch, Coøn nhaùnh coøn laïi thì ñöôïc cheøn vaøo taïi thôøi gian yeâu caàu (request) vôùi element laø jsp:include seõ ñöôïc trình baøy trong muïc IV. Caùc action chuaån.
File ñöôïc include vaøo khoâng nhöõng chöùa HTML tónh maø coøn chöùa ñöôïc maõ JSP ñoäng. Ñaëc tính naøy cho pheùp chuùng ta taïo caùc thanh ñònh höôùng, caùc phaàn thoâng tin caàn töông taùc, ñeám soá trang, ... rieâng treân moät file khi chuùng ta coù nhieàu trang söû duïng laïi chuùng. Neáu file ñöôïc include thay ñoåi thì taát caû JSP files söû duïng noù caàn phaûi ñöôïc caäp nhaät laïi.
Ví duï veà include directive
File ñaàu tieân laø moät ñoaïn cuûa trang chöùa caùc thoâng tin töông taùc caàn thieát cho file thöù hai duøng laïi baèng include directive.
Code 5: contact.jsp
<%! private int accessCount = 0;
private Date accessDate = new Date();
private String accessHost = "No previous access";
%>
This page © 2000
my-company.com.
This page has been accessed
times since server reboot. It was last accessed from
at .
Code 6: includedirective.jsp
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
Code 6: includedirective.jsp
The include Directive
Some Random Page
Information about our products and services.
Le, Le, Le.
Giang, Giang, Giang.
The taglib directive
Directive naøy ñònh nghóa thö vieän tag vaø tieáp ñaàu ngöõ cho nhöõng custom tag ñöôïc söû duïng trong trang JSP. Coù cuù phaùp sau:
taglib directive seõ ñöôïc trình baøy chi tieát trong chöông III.
Caùc action chuaån.
Actions chaúng qua laø elements ñöôïc ñònh nghóa trong baûn ñaëc taû JSP vaø luoân luoân coù saün trong caùc JSP file maø khoâng caàn import vaøo baát kyø thöù gì vaø chuùng coù cuù phaùp XML. Coù chín actions chuaån: jsp:include, jsp:useBean, jsp:setProperty, jsp:getProperty, jsp:plugin, jsp:forward, jsp:fallback, jsp:params, jsp:param seõ ñöôïc giôùi thieäu trong muïc naøy.
Action cheøn vaøo files ôû thôøi gian request.
Vôùi include directive cho pheùp chuùng ta theâm vaøo caùc taøi lieäu chöùa maõ JSP vaøo nhieàu trang khaùc nhau nhöng laïi coù vaán ñeà laø ñoøi hoûi chuùng ta phaûi caäp nhaät laïi ngaøy söõa ñoåi cuûa trang khi file ñöôïc include thay ñoåi. Ñeå loaïi boû vaán ñeà naøy ñaët taû JSP cung caáp cho chuùng ta moät action laø ñeå include caùc file vaøo thôøi gian yeâu caàu (request). Maëc khaùc, do trang ñöôïc bieân dòch thaønh servlet vaøo thôøi gian yeâu caàu vì theá caùc file ñöôïc include khoâng theå chöùa maõ JSP. Cuù phaùp cuûa action naøy laø:
Ví duï sau söû duïng jsp:include action ñeå include boán file html, ví duï naøy chæ hieän thò caùc thoâng tin cuûa caùc web sites noãi tieáng.
Code 7: includerequest.jsp
What’s New
What's New at JspNews.com
Here is a summary of our four most recent news stories:
Code 8: item1.html
Bill Gates acts humble. In a startling and unexpected
development, Microsoft big wig Bill Gates put on an open act of
humility yesterday.
More details...
Code 9: item2.html
Scott McNealy acts serious. In an unexpected twist,
wisecracking Sun head Scott McNealy was sober and subdued at
yesterday's meeting.
More details...
Code 10: item3.html
Larry Ellison acts conciliatory. Catching his competitors
off guard yesterday, Oracle prez Larry Ellison referred to his
rivals in friendly and respectful terms.
More details...
Code 11: item4.html
Sportscaster uses "literally" correctly. In an apparent
slip of the tongue, a popular television commentator was
heard to use the word "literally" when he did not
mean "figuratively."
More details...
Action cheøn vaøo Applets cho Java Plug-In.
Vôùi JSP, chuùng ta khoâng caàn coù baát kyø cuù phaùp ñaëc bieät naøo ñeå include vaøo caùc applet; chæ duøng APPLET tag cuûa HTML bình thöôøng. Tuy nhieân, caùc applet naøy phaûi söû duïng töø JDK 1.1 trôû xuoáng vì caû hai trình duyeät phoå bieát nhaát laø Netscape 4.x vaø Internet Explorer 5.x vaãn chöa hoå trôï JDK 1.2. Do ñoù applet coù moät soá giôùi haïn sau:
Ñeå söû duïng Swing, chuùng ta phaûi gôûi caùc Swing files qua maïng. Tieán trình naøy toán raát nhieàu thôøi gian vaø cuõng thaát baïi trong Internet Explorer 4 vaø Netscape 3.x (chæ hoå trôï JDK 1.02) maø Swing laïi phuï thuoäc vaøo JDK 1.1.
Chuùng ta khoâng theå duøng Java 2D.
Chuùng ta khoâng theå duøng goùi collection (taäp hôïp) cuûa Java 2.
Maõ cuûa chuùng ta chaïy chaäm hôn vì haàu heát caùc trình bieân dòch cho neàn Java 2 ñöôïc caûi tieán raát ñaùng keå so vôùi caùc trình bieân dòch töø JDK 1.1 trôû xuoáng.
Hôn theá nöõa, caùc phieân baûn cuûa caùc trình duyeät coù moät soá maâu thuaãn trong caùch thöùc maø chuùng hoå trôï AWT component khaùc nhau, laøm cho vieäc thöû nghieäm vaø ñi
Các file đính kèm theo tài liệu này:
- cn2.doc