2. Gi i thi uớ ệ
Java Server Pages (JSP) là công ngh khác choệ
vi c phát tri n ng d ng web.ệ ể ứ ụ
JSP đ c công b và s d ng đ ng th i v i servlet.ượ ố ử ụ ồ ờ ớ
JSP là m r ng c a servlet. Trong th c t jsp vàở ộ ủ ự ế
servlet đ c s d ng đ ng th i đ phát tri n ngượ ử ụ ồ ờ ể ể ứ
d ng web.ụ
3. Servlet y u đi m gì?ế ể
Vi t th HTML không tách bi t v i codeế ẻ ệ ớ
s a đ i giao di n ph c t p.ử ổ ệ ứ ạ
JSP là công ngh đ c Sun phát tri n đệ ượ ể ể
kh c ph c nh c đi m này nh :ắ ụ ượ ể ư
Tách bi t vi c trình bày v i logic cài đ t code.ệ ệ ớ ặ
H tr hai ki u thêm n i dung: script ho c tag.ỗ ợ ể ộ ặ
4. JSP làm vi c nh th nào?ệ ư ế
WEB
SERVER
JSP
ENGINE DatabaseClient
JSP Files
HTT
P
JSPs are
processed here
5. Các b c x lý trang JSPướ ử
Web
Client
Web
Server
JSP
File
Servlet
HTML
File
Sends a
request
Request is
sent to JSP
Engine
Output
is sent
backResponse is
sent to the
client
6. ng d ng Web đ n gi nỨ ụ ơ ả
<HTML>
<TITLE> A Simple HTML file with HTML
extension </TITLE>
<BODY>
<H1> Hello JSP Programmer! </H1>
</BODY>
</HTML>
HelloWorld.html
7. ng d ng Web đ n gi nỨ ụ ơ ả – (1)
<HTML>
<TITLE> A Simple HTML file with JSP
extension </TITLE>
<BODY>
<H1> Hello JSP Programmer! </H1>
</BODY>
</HTML>
HelloWorld.jsp
8. ng d ng Web đ n gi nỨ ụ ơ ả – (2)
<HTML>
<TITLE> A Simple JSP file </TITLE>
<BODY>
<H1>
<% out.println("Hello JSP Programmer!");%>
</H1>
</BODY>
</HTML>
HelloWorld2.jsp
9. Thu n l i c a JSPậ ợ ủ
Tách bi t vi c phát sinh n i dung v i vi c trình bày.ệ ệ ộ ớ ệ
HTML/XML tags
Scriptlets, JavaBeans
H tr các thành ph nỗ ợ ầ
JavaBeans, EJBs
Phát tri n trang web đ n gi n s d ng tag.ể ơ ả ử ụ
Easy-to-use, JSP technology specific tags
Tích h p v i J2EE và Enterprise JavaBeansợ ớ
10. Các thành ph n chính c a JSPầ ủ
Có 3 thành ph n JSP :ầ
D n h ng – Directẫ ướ
• Cho phép đi u khi n c u trúc servlet.ề ể ấ
Các ph n t k ch b n – Script Element.ầ ử ị ả
• Đ c dùng đ vi t code Java.ượ ể ế
Hành đ ng – Actionộ
• Specific tags that affect the runtime behavior of the JSPs
12. Chi ti t v x lý trang JSPế ề ử
User
Request
Web Server/
Servlet Engine
JSP Handler Servlet
(Page Compilation Servlet)
New or
modified file?
Compile into
Servlet
Execute
Servlet
Yes
No
13. Các ph n t Scriptingầ ử
Expressions
Scriptlets
Declarations
Scripting là cơ chế cho phép nhúng code
trực tiếp vào trong trang HTML. Có 3 cách
nhúng:
14. Các ph n t Scriptingầ ử – (1)
Expressions được tính và đổi sang dạng
chuỗi: java.lang.String.
Evaluated to
produce 4
<HTML>
<BODY> 2 + 2 equals <%= 2 + 2 %>
</BODY>
</HTML>
Ví dụ:
Cú pháp: <%= expression %>
15. Các ph n t Scriptingầ ử – (2)
Scriptlets chứa code java.
Scriptlet
<HTML> <BODY>
<% out.println("HELLO WORLD!!"); %>
</BODY> </HTML>
Ví dụ:
Cú pháp: <% scriptlet_source; %>
16. Giống expression, scriptlet truy cập tới các
biến không tường minh.
Các ph n t Scriptingầ ử – (3)
<%
String queryData = request.getQueryString();
out.println("Attached GET data: "+queryData);
%>
17. Scriptlets không cần một câu lệnh đầy đủ và khối mở
có thể chứa thẻ HTML bên ngoài scriptlets.
Các ph n t Scriptingầ ử – (4)
<% if (Math.random() > 0.5) { %>
Have a <B> happy </B> birthday!!
<% } else {%>
Have a <B> nice </B> day!!
<% } %>
18. Các ph n t Scriptingầ ử – (5)
Declarations là định nghĩa biến hoặc phương thức
trong JSP.
Declaration
<%! private static int count_access = 0; %>
This page has been accessed
<%= ++count_access %>
time(s) since the server was rebooted.
Ví dụ:
Cú pháp: <%! Declaration; %>
19. Các đ i t ng không t ng minhố ượ ườ
Các đ i t ng phía server đ c đ nh nghĩa trongố ượ ượ ị
JSP container
Các đ i t ng này đ c đ nh nghĩa s n trongố ượ ượ ị ẵ
JSP.
20. Các đ i t ng không t ng minh–(1)ố ượ ườ
Tên biến Type Miêu tả Phạm
application javax.servlet.
ServletContext
Servlet context
nhận được bằng lời
gọi hàm:
getServletConfig().
getContext()
Application
config javax.servlet.
ServletConfig
Là đối tượng thể
hi n c a l pệ ủ ớ
ServletConfig
Page
out javax.servlet.
jsp.JspWriter
Là đối tượng thể
hiện của lớp
JspWriter cho
luồng xuất.
Page
21. Các đ i t ng không t ng minh–ố ượ ườ (2)
page java.lang.Object Thể hiện đối
tượng this của
Servlet.
Page
pageContext javax.servlet.
jsp.PageContext
Đối tượng thể
hiện của Page
Context của JSP.
Page
request Protocol-dependent
subtype of either
javax.servlet.
ServletRequest or
javax.servlet.http.
HttpServletRequest
Đối tượng thể
hiện của
ServletRequest.
Request
22. Các đ i t ng không t ng minh–ố ượ ườ (3)
response Protocol-dependent
subtype of either
javax.servlet.Servlet
Response or
javax.servlet.http.
HttpServletRespons
e
Đối tượng thể
hiện của lớp
ServletResponse
Page
session javax.servlet.http.
HttpSession
Đối tượng thể
hiện của lớp
HTTPSession
quản lý dữa liệu
Session.
Session
23. Các đ i t ng không t ng minh–ố ượ ườ (4)
exception java.lang.Throwable Quản lý ngoại lệ
ném ra trong
trang web.
Page
24. Ví d : đ i t ng không t ng minh.ụ ố ượ ườ
<HTML>
<TITLE> A JavaServer Page using JSP Tags </TITLE>
<BODY>
<H2> An example using different session objects </H2>
<UL>
<LI> <B> Expression - </B> <BR>
Your hostname is: <%= %>
<LI> <B> Scriptlet - </B> <BR>
<% out.println("attached GET data:" +
%>
request.getRemoteHost()
request.getQueryString());
25. <LI> <B> Declaration - </B> <BR>
<%! private int accessCount = 0; %>
This page has been accessed <%= ++accessCount %>
time(s) since the server was last restarted
<LI> <B> Directive - </B> <BR>
<%@ page import = "java.util.*" %>
Today's Date is: <%= new Date() %>
</UL>
</BODY>
</HTML>
Ví d : đ i t ng không t ng minhụ ố ượ ườ
26. Ví d :ụ
<HTML>
<HEAD>
<TITLE>JSP Expressions</TITLE>
<META NAME="keywords"
CONTENT="JSP,expressions,JavaServer Pages">
<META NAME="description"
CONTENT="A quick example of JSP expressions.">
<LINK REL=STYLESHEET
HREF="JSP-Styles.css"
TYPE="text/css">
</HEAD>
28. Thành ph n D n h ngầ ẫ ướ
page
Đ nh nghĩa thông tin toàn c c cho trang JSP.ị ụ
include
S d ng đ chèn văn b n và code vào JSP t i đi mử ụ ể ả ạ ể
biên d ch.ị
taglib
• Đ nh nghĩ c ch m r ng c a t p th JSP hi n t i.ị ơ ế ở ộ ủ ậ ẻ ệ ạ
29. Các thu c tính D n Pageộ ẫ
Attribute Definition
language =
”<scriptingLanguage>
”
Báo Server biết ngôn ngữ hiện dùng để biên dịch
trang JSP – chỉ có ngôn ngữ Java.
extends =
”<className>"
Cho biết lớp cha mà servlet sẽ kết thừa.
import =
”<importList>"
Định nghĩa danh sách gói thư viện cần dùng trong
trang JSP. Tên mỗi gói cách nhau bởi dấu phẩy.
session = "true |
false"
Xác đinh dữ liệu phiên là có sẵn cho trang. Mặc định
là true.
buffer = "none | <size
in kb>"
Xác định kích thước bộ đệm luồng xuất dữ liệu. Mặc
định là 8 kb.
30. Các thu c tính D n h ng khác-(1)ộ ẫ ướ
Attribute Definition
autoFlush = "true |
false"
Xác định bộ đệm có tự động đưa dữ liệu về client
hoặc sẽ phát sinh ngoại lệ khi bộ đệm đầy. Mặc định
là true.
isThreadSafe = "true
| false"
Chỉ ra trang có thể có nhiều yêu cầu tại một thời
điểm. Mặc định là True.
info = ”<text>" Đặc tả thông tin về trang JSP. Và có thể truy cấp
bằng hàm Servlet.getServletInfo().
errorPage =
”<error_URL>"
Liên qua đến xử lý ngoại lệ URL.
isErrorPage = "true |
false"
Xác định trang JSP là trang errorPage. Mặc định là
false.
contentType =
”<ctinfo>"
Trình bày thông tin kiểu MIME và tập ký tự liên quan
của việc đáp trả.
31. Ví d - S d ng thu c tínhụ ử ụ ộ
<%@ page language = "java"
import = "java.rmi.*, java.util.*"
session = "true"
buffer = "12kb"
autoFlush = "true"
info = "page directive jsp"
errorPage = "Error.jsp"
isErrorPage = "false"
isThreadSafe = "false" %>
<HTML> <TITLE> JSP Elements </TITLE>
<HEAD> <H1> JSP Elements </H1> </HEAD>
<BODY> </BODY> </HTML>
32. Ví dụ
//SimpleClass.java
package myPackage;
public class SimpleClass{
int height;
public void SimpleClass() {
height = 100; }
public void setHeight(int h) {
height = h; }
public int getHeight() {
return height; }
}
34. D n h ng khácẫ ướ
include
Cú pháp
<%@ include file = “relativeURLspec” %>
taglib
Cú pháp
<%@ taglib uri = “tagLibraryURI”
prefix = “tagPrefix” %>
35. Ghi nhớ
Khi s d ng d n h ng c n ghi nh sau:ử ụ ẫ ướ ầ ơ
H ng là các thông đi p g i t i JSP Container.ướ ệ ở ớ
H ng không l u b t kỳ k t qu trong b đ m xu t.ướ ư ấ ế ả ộ ệ ấ
H ng đ c x lý khi JSP đ c thi t l p.ướ ượ ử ượ ế ậ
36. Dẫn hướng JSP action cung cấp phương pháp để
đóng gói các tác vụ hiệu quả. Dẫn hướng này tạo
hoặc thao tác trên đối tượng, thường là JavaBeans.
Các JSP Action chu nẩ
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:param>
<jsp:include>
<jsp:forward>
<jsp:plugin>
37. Các JSP Action chu n – (1)ẩ
<jsp:useBean>
K t h p v i JavaBean đ nh nghĩa tr c v i ph m vi và ID.ế ợ ớ ị ướ ớ ạ
<jsp:setProperty>
Thi t l p giá tr thu c tính c a Bean.ế ậ ị ộ ủ
<jsp:getProperty>
Truy c p giá tr thu c tính đ c t c a th hi n Biean.ậ ị ộ ặ ả ủ ể ệ
Bi n đ i nó sang d ng đ i t ng chu i java.lang.String.ế ổ ạ ố ượ ỗ
Đ t nó trong đ i t ng không t ng minhặ ố ượ ườ out.
38. Các JSP Action chu n – (2)ẩ
<jsp:param>
Is used to provide the tag/value pairs of information
Đ c s d ng là thu c tính con c a các action:ượ ử ụ ộ ủ
jsp:include, jsp:forward, and jsp:plugin.
Cú pháp nh sau:ư
<jsp:param name = "pName" value = "pValue">
</jsp:param>
<jsp:param name = "pName" value = "pValue"/>
39. Các JSP Action chu n – (3)ẩ
<jsp:include>
Cung c p c ch đ thêm các ngu n tài nguyên đ ngấ ơ ế ể ồ ộ
ho c tĩnh vào trang JSP.ặ
Cú pháp nh sau:ư
<jsp:include page = "urlSpec" flush = "true"/>
<jsp:include page = "urlSpec" flush = "true">
<jsp:param .../>
</jsp:include>
40. Ví d : S d ng <jsp:include>ụ ử ụ
<!-- Emplheader.jsp -->
<!-- Get employee’s name from the request -->
<% out.println("Employee: " +
request.getParameter("employee")); %>
<!-- Get employee’s title from the request -->
<% out.println("Title: " +
request.getParameter("title")); %>
Trang JSP sẽ tìm nhân viên với tên và tựa đề.
Được gọi dùng trong trang Employeeinfo.jsp
41. Ví d : S d ng <jsp:include>-(1)ụ ử ụ
<HTML>
<TITLE> Employee Information </TITLE> <BODY>
<jsp:param name= "employee" value= "Martha" />
<jsp:param name= "title" value= "Doctor"/>
</jsp:include>
</BODY> </HTML>
<jsp:include page= "Emplheader.jsp"
flush= "true" >
Employeeinfo.jsp
43. Các JSP Action chu n – (4)ẩ
<jsp:forward>
Cho phép JSP engine g i request trang hi n t i t i m t ngu nở ệ ạ ớ ộ ồ
tĩnh, servlet ho c m t trang JSP khác trong th i gian ch y.ặ ộ ờ ạ
Cú pháp nh sau:ư
<jsp:forward page = "relativeURLSpec" />
<jsp:forward page = "relativeURLSpec" >
<jsp:param .../>
</jsp:forward>
44. Ví d : S d ng <jsp:forward>ụ ử ụ
<HTML>
<TITLE> Using the JSP Forward action </TITLE> <BODY>
<!-- Checks whether the "company id" is equal to 1 -->
<% if
((request.getParameter("companyID")).equals("1")) {%>
<jsp:param name= "employee" value= "Martha" />
<jsp:param name= "title" value= "Doctor" />
</jsp:forward>
<%} else {
out.println("Sorry, no matching values found"); }%>
</BODY> </HTML>
<jsp:forward page= "MarthaHome.jsp">
Forward.jsp
45. Ví d : s d ng <jsp:forward> – (1)ụ ử ụ
<HTML>
.
.
<BODY>
<% out.println("Employee:" +
request.getParameter("employee"));
out.println("Title:" +
request.getParameter("title")); %>
</BODY> </HTML>
MarthaHome.jsp
47. Các JSP Action chu n – (5)ẩ
<jsp:plugin>
Phát sinh HTML phù h p v i trình duy t Client nh OBJECTợ ớ ệ ở ư
hay EMBED.
Cú pháp nh sau:ư
<jsp:plugin type = "pluginType"
code = "classfilename"
codebase = "relativeURLpath" >
<jsp:params> <jsp:param …/>...
...</jsp:params> </jsp:plugin>
48. Ví dụ
V i Appletớ
<APPLET CODE=“MyApplet.class”
WIDTH=457 HEIGHT=350>
</APPLET>
Ta s d ng thử ụ ẻ jsp:plugin nh sau:ư
<jsp:plugin type=“applet”
code=“MyApplet.class”
width=“457” height=“350” />