SlideShare a Scribd company logo
Phạm Đức Đệ
ducde1606@gmail.com
Copyright 2018
Java Server Page
1https://facebook.com/jtcpage
Nội dung
• Tổng quan JSP
• JSP Tags
• Biến ẩn trong trang JSP (Implicit variable)
2https://facebook.com/jtcpage
Nội dung
• Tổng quan JSP
• JSP Tags
• Biến ẩn trong trang JSP (Implicit variable)
3https://facebook.com/jtcpage
JSP là gì?
• Là công nghệ tầng trình diễn (presentation layer) và thực thi
bên phía server-side
• Là kỹ thuật thuộc tầng web-tier, bổ sung các đặc điểm kỹ thuật
của Servlet và rất hữu ích trong việc phát triển các giao diện
web
• JSP cơ bản là một servlet
• JSP là một công nghệ kết hợp các ngôn ngữ HTML / XML và
các yếu tố của ngôn ngữ lập trình Java để trả về nội dung động
cho web clients
• Trang JSP là một trang chứa Java code kết hợp với html
4https://facebook.com/jtcpage
JSP là gì
• JSP định nghĩa một số các thẻ (tag) để tạo ra web page, gọi là
JSP tag
• JSR – 245 và phiên bản hiện tại 2.3
• JSP API: trong 2 package
• javax.servlet.jsp
• javax.servlet.jsp.tagext
5https://facebook.com/jtcpage
Ví dụ
6
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Hello <%=request.getParameter("name")%></h2>
</body>
</html>
https://facebook.com/jtcpage
Nội dung
• Tổng quan JSP
• JSP Tags
• Biến ẩn trong trang JSP (Implicit variable)
7https://facebook.com/jtcpage
Phân loại
• JSP được phân loại thành 6 thẻ:
• Directive – thẻ chỉ dẫn
• Declaration – thẻ khai báo
• Scriptlet
• Expression – toán tử gán
• Action
• Comment – ghi chú
8https://facebook.com/jtcpage
Directive
• Cung cấp thông tin tổng quát về các trang JSP cho JSP engine
• Có ba loại của các directive
• page: Thông báo cho các engine về tính chất tổng thể của một trang
JSP
• include: chỉ thị cho JSP engine để đưa vào các nội dung của trang JSP
khác vào trang hiện tại
• taglib: được sử dụng để kết hợp một tiền tố với một thẻ do người dùng
tự định
https://facebook.com/jtcpage 9
Directive
• Luôn luôn bắt đầu với <% @ và kết thúc với %>
• Cú pháp
• Ví dụ
<%@ page attribute-list %>
<%@ include attribute-list %>
<%@ taglib attribute-list %>
<%@ page language=“java” %>
<%@ include file=“copyright.htnl” %>
<%@ taglib prefix=“test” uri=“taglib.tld” %>
https://facebook.com/jtcpage 10
Directive
• Attribute-list: bao gồm một hoặc nhiều cặp attribute-value
• Ghi chú:
• Tên thẻ, thuộc tính, và giá trị phân biệt chữ hoa chữ thường
• Giá trị phải được đặt trong một cặp dấu nháy đơn hoặc kép
• Không có khoảng trắng giữa dấu bằng (=) và giá trị
https://facebook.com/jtcpage 11
Thuộc tính Page Directive
https://facebook.com/jtcpage 12
Thuộc tính Page Directive
https://facebook.com/jtcpage 13
Thuộc tính import
• Khai báo sử dụng các lớp, giao diện của java trong trang jsp
• Tương tự như lệnh import trong java
<html>
<body>
<%@ page import="java.util.Date" %>
Today is: <%= new Date() %>
</body>
</html>
<%@ page import=“java.util.*, java.io.*, java.text.*” %>
<%@ page import=“java.util.*” %>
<%@ page import=“ java.io.*” %>
<%@ page import=“java.text.*” %>
Khai báo trên 1 dòng
Khai báo trên
nhiều dòng
https://facebook.com/jtcpage 14
Thuộc tính errorPage và isErrorPage
• Một trang JSP sử dụng các thuộc tính errorPage ủy thác việc
xử lý ngoại lệ đối với một trang JSP có xử lý lỗi
• Thuộc tính isErrorPage: trang hiện tại có thể hoạt động như một
trình xử lý lỗi
<%@page errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<body>
<%
if (request.getParameter("name") == null){
throw new RuntimeException("name parameter is not found.");
}
%>
Hello <%=request.getParameter("name") %>
</body>
</html>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<body>
<%=exception.getMessage() %><br>
please try again.
</body>
</html>
https://facebook.com/jtcpage 15
Thuộc tính contentType và pageEncoding
• contentType đặc tả MIME
type và mã hóa kí tự của
trang jsp
• MIME type và character coding
cách nhau bởi dấu “;”
• pageEncoding đặc tả
charater encoding của trang
jsp
<%@ page language="java" contentType="text/html;
charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>Trang đăng nhập</title>
</head>
<body>
<form action="#">
Tài khoản <input type="text"><br>
Mật khẩu <input type="password"><br>
<input type="submit" value="Đăng nhập">
</form>
</body>
</html>
https://facebook.com/jtcpage 16
Declaration
• Khai báo biến và các phương thức có thể được sử dụng trong
các trang JSP
• Tương ứng với khai báo biến tĩnh và phương thức tĩnh trong java
• Cấu trúc <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<%!int count;%>
<%!
int increase() {
return ++count;
}
%>>
</body>
</html>
<%! // code here %>
https://facebook.com/jtcpage 17
Scriptlet
• Là đoạn mã Java được nhúng vào trong các trang JSP
• Khác với declaration, đoạn code được thực thi khi trang được triệu gọi
• Cú pháp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
Hello World!
<br />
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
<% // code here %>
https://facebook.com/jtcpage 18
Expression
• Tương ứng toán tử gán trong java
• Được đánh giá xem xét mỗi khi trang web được truy cập, và giá
trị của nó sau đó được nhúng trong HTML trả về client
• Cú pháp:
<%= // code here %>
<%@ page language="java" contentType="text/html;
charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<body>
<h2>
Hello <%=request.getParameter("name")%>
</h2>
</body>
</html>
https://facebook.com/jtcpage 19
Comment
• Ghi chú cho người phát triển và không ảnh hưởng trang JSP
• Không thể lồng ghi chú JSP trong các ghi chú JSP khác
• Trang JSP có 3 loại comment:
• Comment theo html: <!-- html comment -->
• Comment theo jsp: <%-- JSP comment --%>
• Comment theo java: <% // comment a line %> hoặc
<% /*
* comment multi-line
*/
%>
https://facebook.com/jtcpage 20
Actions
• Gồm các thẻ:
• <jsp:include>
• <jsp:forward>
• <jsp:useBean>
• <jsp:setProperty>
• <jsp:getProperty>
• <jsp:plugin>
https://facebook.com/jtcpage 21
Nội dung
• Tổng quan JSP
• JSP Tags
• Biến ẩn trong trang JSP (Implicit variable)
22https://facebook.com/jtcpage
Biến ẩn trong trang JSP (Implicit variable)
https://facebook.com/jtcpage 23
Biến ẩn trong trang JSP (Implicit variable)
• Trong trang JSP,
JSP Engine cung
cấp 9 biến ẩn
• Biến người dùng
định nghĩa không
được trùng với tên
của các biến ẩn
24https://facebook.com/jtcpage
Biến application
• Biến thuộc javax.servlet.ServletContext và tham chiếu đến môi
trường (application context)
• Một số phương thức
Phương thức Mô tả
String getRealPath(String value) Trả về đường dẫn tuyệt đối trong hệ thống
void log(String message) Thực hiện ghi log
String getServerInfo() Lấy thông tin của Web container (Servlet container)
String getMajorVersion() Phiên bản của container
String getMinorVersion() Trả về bản update của phiên bản container
https://facebook.com/jtcpage 25
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>application variable implicit</title>
</head>
<body>
<%=application.getRealPath("implicit_application.jsp") %><br>
<%application.log("add log message in here."); %>
<%=application.getServerInfo() %><br>
<%=application.getMajorVersion()%><br>
<%=application.getMinorVersion() %><br>
</body>
</html>
https://facebook.com/jtcpage
Biến session
• Biến thuộc loại javax.servlet.http.HttpSession và tham chiếu
đến dữ liệu của người dùng (user’ data)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Session variable implicit</title>
</head>
<body>
Xin chào, <%=session.getAttribute("username") %>
</body>
</html>
https://facebook.com/jtcpage 27
Biến request & response
• Biến request và response tương ứng thuộc HttpServletRequest
and HttpServletResponse
<html>
<body>
<%
String username=request.getParameter("uname");
String password=request.getParameter("pass");
out.print("Name: "+username+" Password: "+password);
%>
</body>
</html>
https://facebook.com/jtcpage 28
Biến out
• Biến thuộc javax.servlet.jsp.JspWriter
<HTML>
<HEAD>
<TITLE> OUT IMPLICIT OBJECT EXAMPLE </TITLE>
</HEAD>
<BODY>
<%
out.print( "print statement " );
out.println( "println" );
out.print("Another print statement");
%>
</BODY>
</HTML>
https://facebook.com/jtcpage 29
Biến page
• Biến là một tham chiếu kiểu Object đến Servlet hiện tại (JSP
hiện tại
• Được khai báo như sau : Object page = this;
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<body>
<%=page.toString()%>
</body>
</html>
https://facebook.com/jtcpage 30
Biến pageContext
• Thuộc javax.servlet.jsp.PageContext
• PageContext là một lớp trừu tượng mà các nhà cung cấp JSP
engine cung cấp
• Các nhiệm vụ :
• Lưu trữ tham chiếu đến các biến tiềm ẩn
• Cung cấp phương thức get/set và thiết lập các thuộc tính trong phạm vi
khác nhau
• Cung cấp phương pháp thuận tiện để chuyển các yêu cầu tới các tài
nguyên khác trong ứng dụng web
https://facebook.com/jtcpage 31
Biến config
• Thuộc javax.servlet.ServletConfig và tham chiếu đến servlet
trong cấu hình web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>JavaEETutorial</display-name>
<servlet>
<servlet-name>configVarImplicit</servlet-name>
<jsp-file>/chapter3/implicit-config.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>configVarImplicit</servlet-name>
<url-pattern>/chapter3/implicit_config.jsp</url-
pattern>
</servlet-mapping>
</web-app>
<%@ page language="java" contentType="text/html;
charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>Config variable implicit</title>
</head>
<body>
<%
String sname = config.getServletName();
out.print("Servlet Name is: " + sname);
%>
</body>
</html>
https://facebook.com/jtcpage 32
Tầm vực của biến trong JSP
https://facebook.com/jtcpage 33
KẾT CHƯƠNG
34https://facebook.com/jtcpage

More Related Content

PDF
Bai 09 Basic jsp
DOCX
JSP and Database
PPT
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
PDF
Bài 4: Template & điều hướng trang Web - Giáo trình FPT - Có ví dụ kèm theo
PPT
Jsp java bean
PDF
Bài 7 Xây dựng website - Giáo trình FPT
PPT
PDF
Slide2 - Co ban HTML5
Bai 09 Basic jsp
JSP and Database
Bài 4: JSP Cơ Bản - Lập Trình Mạng Nâng Cao
Bài 4: Template & điều hướng trang Web - Giáo trình FPT - Có ví dụ kèm theo
Jsp java bean
Bài 7 Xây dựng website - Giáo trình FPT
Slide2 - Co ban HTML5

Similar to JavaEE Basic_Chapter3: Java Server Page (20)

PDF
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
PPT
88247697-JavaScript.ppt
PPTX
Tự học jsp !​
PDF
Giao trinh java script
PDF
Bai4 basic jsp_4474
DOC
Giao trinh java_script (1)
PDF
Java script
PPT
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
DOC
JavaScript (Tieng viet)
DOC
Giao trinh java_script
PDF
Java script dh bk share-book.com
PPTX
Thiết kế giao diện với Liquid
PDF
Giáo trình asp.net với c sharp
PDF
Bai2 tong quan_mvc_0567
PPTX
JavaEE Basic_Chapter4: Servlet Nâng Cao
PDF
Ebook học Javascript cơ bản tới nâng cao
PDF
Javascript tong-hop a-z
PDF
PDF
Bài 2: Web Part và các trang SharePoint
PPTX
JavaEE Basic_Chapter1: Introduce JavaEE
Chương 2_Bài tập và ví dụ về JSP Servlet.pdf
88247697-JavaScript.ppt
Tự học jsp !​
Giao trinh java script
Bai4 basic jsp_4474
Giao trinh java_script (1)
Java script
Bài 6: Custom Tag - Lập Trình Mạng Nâng Cao
JavaScript (Tieng viet)
Giao trinh java_script
Java script dh bk share-book.com
Thiết kế giao diện với Liquid
Giáo trình asp.net với c sharp
Bai2 tong quan_mvc_0567
JavaEE Basic_Chapter4: Servlet Nâng Cao
Ebook học Javascript cơ bản tới nâng cao
Javascript tong-hop a-z
Bài 2: Web Part và các trang SharePoint
JavaEE Basic_Chapter1: Introduce JavaEE
Ad

More from Phaolo Pham (20)

PPTX
Java EE Basic Chapter7: JSTL
PPTX
Java EE Basic Chapter6: Expression Language
PPTX
Java SE Basic Chapter8: Java Exception
PPTX
Java SE Basic Chapter9: IO Stream
PPTX
Java SE Advance Chapter3: Nested Class
PPTX
Java SE Advance Chapter11: Internationlization & Localization
PPTX
Java SE Advance Chapter10: Regular Expression
PPTX
Java SE Advance Chapter5: Java Generic
PPTX
Java SE Advance Chapter4: Collections API
PPTX
Java SE Advance Chapter6: JDBC
PPTX
Java SE Advance Chapter2: OOP2
PPTX
Java SE Advance Chapter1: OOP1
PPTX
Java SE Basic chapter5: Array
PPTX
Java SE Basic Chapter7: Xử Lý Chuỗi
PPTX
Java SE Advance Chapter9: Method Reference
PPTX
Java SE Advance Chapter8: Function Interface
PPTX
Java SE Advance chapter7: Lambda Expression
PPTX
Java SE Basic: Chapter1_Introduce
PPTX
Java SE Basic Chapter2: Variable
PPTX
Java SE Basic Chapter1: Introduce
Java EE Basic Chapter7: JSTL
Java EE Basic Chapter6: Expression Language
Java SE Basic Chapter8: Java Exception
Java SE Basic Chapter9: IO Stream
Java SE Advance Chapter3: Nested Class
Java SE Advance Chapter11: Internationlization & Localization
Java SE Advance Chapter10: Regular Expression
Java SE Advance Chapter5: Java Generic
Java SE Advance Chapter4: Collections API
Java SE Advance Chapter6: JDBC
Java SE Advance Chapter2: OOP2
Java SE Advance Chapter1: OOP1
Java SE Basic chapter5: Array
Java SE Basic Chapter7: Xử Lý Chuỗi
Java SE Advance Chapter9: Method Reference
Java SE Advance Chapter8: Function Interface
Java SE Advance chapter7: Lambda Expression
Java SE Basic: Chapter1_Introduce
Java SE Basic Chapter2: Variable
Java SE Basic Chapter1: Introduce
Ad

Recently uploaded (20)

PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 GLOBAL SUCCESS - CẢ NĂM (30...
PPTX
The Fasciola Hepatica - medical prasitology
DOCX
Báo cáo thực tập công ty Ah-GlobalGroup vị trí Data Analyst
PDF
PHÁT TRIỂN NĂNG LỰC KHÁM PHÁ TỰ NHIÊN CHO HỌC SINH TRONG DẠY HỌC CHỦ ĐỀ VẬT S...
PDF
[Toán 10] - Bộ 5 Đề Ôn Tập học Kì 2.pdf cho học sinh lớp 10
PDF
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
PDF
BÁO CÁO THỰC TẬP KỸ SƯ 2 ĐỀ TÀI TÌM HIỂU QUY TRÌNH CÔNG NGHỆ SẢN XUẤT BÁNH SN...
PPTX
14. thoát vị bẹn nghẹt bệnh học ngoại khoa.pptx
PPTX
CDD1. VỊ TRÍ ĐỊA LÍ VÀ ĐẶC ĐIỂM LÃNH THỔ CỦA TP.HCM.pptx
PDF
Vision - Language - Model-- - Ebook.pdf
DOC
TẦM QUAN TRỌNG CỦA VIỆC TUÂN THỦ CÁC QUY TẮC AN TOÀN GIAO THÔNG ĐƯỜNG BỘ
PPT
Bài giảng Power Point 2003, hướng dẫn học tập
PPT
Bài giảng Cơ sở dữ liệu Table trong Access
DOCX
Set menu 3 món rất hay và hiện đại dành cho người
PDF
CHUYÊN ĐỀ BỔ TRỢ NÂNG CAO DẠNG BÀI TẬP MỚI FORM 2025 - TIẾNG ANH 12 (TỜ RƠI Q...
PPTX
Powerpoint cho Ke toan tai chinh KET307_Bai1_SV.pptx
PDF
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef
PDF
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
PPT
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
DOC
Chương 1 Tính tương đổi của chuyển động.doc
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 GLOBAL SUCCESS - CẢ NĂM (30...
The Fasciola Hepatica - medical prasitology
Báo cáo thực tập công ty Ah-GlobalGroup vị trí Data Analyst
PHÁT TRIỂN NĂNG LỰC KHÁM PHÁ TỰ NHIÊN CHO HỌC SINH TRONG DẠY HỌC CHỦ ĐỀ VẬT S...
[Toán 10] - Bộ 5 Đề Ôn Tập học Kì 2.pdf cho học sinh lớp 10
12894-44864-1-CE-1037-1038_Văn bản của bài báo.pdf
BÁO CÁO THỰC TẬP KỸ SƯ 2 ĐỀ TÀI TÌM HIỂU QUY TRÌNH CÔNG NGHỆ SẢN XUẤT BÁNH SN...
14. thoát vị bẹn nghẹt bệnh học ngoại khoa.pptx
CDD1. VỊ TRÍ ĐỊA LÍ VÀ ĐẶC ĐIỂM LÃNH THỔ CỦA TP.HCM.pptx
Vision - Language - Model-- - Ebook.pdf
TẦM QUAN TRỌNG CỦA VIỆC TUÂN THỦ CÁC QUY TẮC AN TOÀN GIAO THÔNG ĐƯỜNG BỘ
Bài giảng Power Point 2003, hướng dẫn học tập
Bài giảng Cơ sở dữ liệu Table trong Access
Set menu 3 món rất hay và hiện đại dành cho người
CHUYÊN ĐỀ BỔ TRỢ NÂNG CAO DẠNG BÀI TẬP MỚI FORM 2025 - TIẾNG ANH 12 (TỜ RƠI Q...
Powerpoint cho Ke toan tai chinh KET307_Bai1_SV.pptx
100-Mon-Ngon-Christine-Ha.pdfnfeifefefefef
CHƯƠNG 1-P2: ĐẢNG CỘNG SẢN VIỆT NAM RA ĐỜI VÀ LÃNH ĐẠO ĐẤU TRANH GIÀNH CHÍNH ...
SINH 8 TUYẾN YÊN TUYẾN GIÁP CÂU TẠO VÀ CHỨC NĂNG
Chương 1 Tính tương đổi của chuyển động.doc

JavaEE Basic_Chapter3: Java Server Page

  • 1. Phạm Đức Đệ ducde1606@gmail.com Copyright 2018 Java Server Page 1https://facebook.com/jtcpage
  • 2. Nội dung • Tổng quan JSP • JSP Tags • Biến ẩn trong trang JSP (Implicit variable) 2https://facebook.com/jtcpage
  • 3. Nội dung • Tổng quan JSP • JSP Tags • Biến ẩn trong trang JSP (Implicit variable) 3https://facebook.com/jtcpage
  • 4. JSP là gì? • Là công nghệ tầng trình diễn (presentation layer) và thực thi bên phía server-side • Là kỹ thuật thuộc tầng web-tier, bổ sung các đặc điểm kỹ thuật của Servlet và rất hữu ích trong việc phát triển các giao diện web • JSP cơ bản là một servlet • JSP là một công nghệ kết hợp các ngôn ngữ HTML / XML và các yếu tố của ngôn ngữ lập trình Java để trả về nội dung động cho web clients • Trang JSP là một trang chứa Java code kết hợp với html 4https://facebook.com/jtcpage
  • 5. JSP là gì • JSP định nghĩa một số các thẻ (tag) để tạo ra web page, gọi là JSP tag • JSR – 245 và phiên bản hiện tại 2.3 • JSP API: trong 2 package • javax.servlet.jsp • javax.servlet.jsp.tagext 5https://facebook.com/jtcpage
  • 6. Ví dụ 6 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h2>Hello <%=request.getParameter("name")%></h2> </body> </html> https://facebook.com/jtcpage
  • 7. Nội dung • Tổng quan JSP • JSP Tags • Biến ẩn trong trang JSP (Implicit variable) 7https://facebook.com/jtcpage
  • 8. Phân loại • JSP được phân loại thành 6 thẻ: • Directive – thẻ chỉ dẫn • Declaration – thẻ khai báo • Scriptlet • Expression – toán tử gán • Action • Comment – ghi chú 8https://facebook.com/jtcpage
  • 9. Directive • Cung cấp thông tin tổng quát về các trang JSP cho JSP engine • Có ba loại của các directive • page: Thông báo cho các engine về tính chất tổng thể của một trang JSP • include: chỉ thị cho JSP engine để đưa vào các nội dung của trang JSP khác vào trang hiện tại • taglib: được sử dụng để kết hợp một tiền tố với một thẻ do người dùng tự định https://facebook.com/jtcpage 9
  • 10. Directive • Luôn luôn bắt đầu với <% @ và kết thúc với %> • Cú pháp • Ví dụ <%@ page attribute-list %> <%@ include attribute-list %> <%@ taglib attribute-list %> <%@ page language=“java” %> <%@ include file=“copyright.htnl” %> <%@ taglib prefix=“test” uri=“taglib.tld” %> https://facebook.com/jtcpage 10
  • 11. Directive • Attribute-list: bao gồm một hoặc nhiều cặp attribute-value • Ghi chú: • Tên thẻ, thuộc tính, và giá trị phân biệt chữ hoa chữ thường • Giá trị phải được đặt trong một cặp dấu nháy đơn hoặc kép • Không có khoảng trắng giữa dấu bằng (=) và giá trị https://facebook.com/jtcpage 11
  • 12. Thuộc tính Page Directive https://facebook.com/jtcpage 12
  • 13. Thuộc tính Page Directive https://facebook.com/jtcpage 13
  • 14. Thuộc tính import • Khai báo sử dụng các lớp, giao diện của java trong trang jsp • Tương tự như lệnh import trong java <html> <body> <%@ page import="java.util.Date" %> Today is: <%= new Date() %> </body> </html> <%@ page import=“java.util.*, java.io.*, java.text.*” %> <%@ page import=“java.util.*” %> <%@ page import=“ java.io.*” %> <%@ page import=“java.text.*” %> Khai báo trên 1 dòng Khai báo trên nhiều dòng https://facebook.com/jtcpage 14
  • 15. Thuộc tính errorPage và isErrorPage • Một trang JSP sử dụng các thuộc tính errorPage ủy thác việc xử lý ngoại lệ đối với một trang JSP có xử lý lỗi • Thuộc tính isErrorPage: trang hiện tại có thể hoạt động như một trình xử lý lỗi <%@page errorPage="error.jsp" %> <!DOCTYPE html> <html> <body> <% if (request.getParameter("name") == null){ throw new RuntimeException("name parameter is not found."); } %> Hello <%=request.getParameter("name") %> </body> </html> <%@ page isErrorPage="true" %> <!DOCTYPE html> <html> <body> <%=exception.getMessage() %><br> please try again. </body> </html> https://facebook.com/jtcpage 15
  • 16. Thuộc tính contentType và pageEncoding • contentType đặc tả MIME type và mã hóa kí tự của trang jsp • MIME type và character coding cách nhau bởi dấu “;” • pageEncoding đặc tả charater encoding của trang jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Trang đăng nhập</title> </head> <body> <form action="#"> Tài khoản <input type="text"><br> Mật khẩu <input type="password"><br> <input type="submit" value="Đăng nhập"> </form> </body> </html> https://facebook.com/jtcpage 16
  • 17. Declaration • Khai báo biến và các phương thức có thể được sử dụng trong các trang JSP • Tương ứng với khai báo biến tĩnh và phương thức tĩnh trong java • Cấu trúc <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <%!int count;%> <%! int increase() { return ++count; } %>> </body> </html> <%! // code here %> https://facebook.com/jtcpage 17
  • 18. Scriptlet • Là đoạn mã Java được nhúng vào trong các trang JSP • Khác với declaration, đoạn code được thực thi khi trang được triệu gọi • Cú pháp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> Hello World! <br /> <% out.println("Your IP address is " + request.getRemoteAddr()); %> </body> </html> <% // code here %> https://facebook.com/jtcpage 18
  • 19. Expression • Tương ứng toán tử gán trong java • Được đánh giá xem xét mỗi khi trang web được truy cập, và giá trị của nó sau đó được nhúng trong HTML trả về client • Cú pháp: <%= // code here %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html> <html> <body> <h2> Hello <%=request.getParameter("name")%> </h2> </body> </html> https://facebook.com/jtcpage 19
  • 20. Comment • Ghi chú cho người phát triển và không ảnh hưởng trang JSP • Không thể lồng ghi chú JSP trong các ghi chú JSP khác • Trang JSP có 3 loại comment: • Comment theo html: <!-- html comment --> • Comment theo jsp: <%-- JSP comment --%> • Comment theo java: <% // comment a line %> hoặc <% /* * comment multi-line */ %> https://facebook.com/jtcpage 20
  • 21. Actions • Gồm các thẻ: • <jsp:include> • <jsp:forward> • <jsp:useBean> • <jsp:setProperty> • <jsp:getProperty> • <jsp:plugin> https://facebook.com/jtcpage 21
  • 22. Nội dung • Tổng quan JSP • JSP Tags • Biến ẩn trong trang JSP (Implicit variable) 22https://facebook.com/jtcpage
  • 23. Biến ẩn trong trang JSP (Implicit variable) https://facebook.com/jtcpage 23
  • 24. Biến ẩn trong trang JSP (Implicit variable) • Trong trang JSP, JSP Engine cung cấp 9 biến ẩn • Biến người dùng định nghĩa không được trùng với tên của các biến ẩn 24https://facebook.com/jtcpage
  • 25. Biến application • Biến thuộc javax.servlet.ServletContext và tham chiếu đến môi trường (application context) • Một số phương thức Phương thức Mô tả String getRealPath(String value) Trả về đường dẫn tuyệt đối trong hệ thống void log(String message) Thực hiện ghi log String getServerInfo() Lấy thông tin của Web container (Servlet container) String getMajorVersion() Phiên bản của container String getMinorVersion() Trả về bản update của phiên bản container https://facebook.com/jtcpage 25
  • 26. 26 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>application variable implicit</title> </head> <body> <%=application.getRealPath("implicit_application.jsp") %><br> <%application.log("add log message in here."); %> <%=application.getServerInfo() %><br> <%=application.getMajorVersion()%><br> <%=application.getMinorVersion() %><br> </body> </html> https://facebook.com/jtcpage
  • 27. Biến session • Biến thuộc loại javax.servlet.http.HttpSession và tham chiếu đến dữ liệu của người dùng (user’ data) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Session variable implicit</title> </head> <body> Xin chào, <%=session.getAttribute("username") %> </body> </html> https://facebook.com/jtcpage 27
  • 28. Biến request & response • Biến request và response tương ứng thuộc HttpServletRequest and HttpServletResponse <html> <body> <% String username=request.getParameter("uname"); String password=request.getParameter("pass"); out.print("Name: "+username+" Password: "+password); %> </body> </html> https://facebook.com/jtcpage 28
  • 29. Biến out • Biến thuộc javax.servlet.jsp.JspWriter <HTML> <HEAD> <TITLE> OUT IMPLICIT OBJECT EXAMPLE </TITLE> </HEAD> <BODY> <% out.print( "print statement " ); out.println( "println" ); out.print("Another print statement"); %> </BODY> </HTML> https://facebook.com/jtcpage 29
  • 30. Biến page • Biến là một tham chiếu kiểu Object đến Servlet hiện tại (JSP hiện tại • Được khai báo như sau : Object page = this; <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <body> <%=page.toString()%> </body> </html> https://facebook.com/jtcpage 30
  • 31. Biến pageContext • Thuộc javax.servlet.jsp.PageContext • PageContext là một lớp trừu tượng mà các nhà cung cấp JSP engine cung cấp • Các nhiệm vụ : • Lưu trữ tham chiếu đến các biến tiềm ẩn • Cung cấp phương thức get/set và thiết lập các thuộc tính trong phạm vi khác nhau • Cung cấp phương pháp thuận tiện để chuyển các yêu cầu tới các tài nguyên khác trong ứng dụng web https://facebook.com/jtcpage 31
  • 32. Biến config • Thuộc javax.servlet.ServletConfig và tham chiếu đến servlet trong cấu hình web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>JavaEETutorial</display-name> <servlet> <servlet-name>configVarImplicit</servlet-name> <jsp-file>/chapter3/implicit-config.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>configVarImplicit</servlet-name> <url-pattern>/chapter3/implicit_config.jsp</url- pattern> </servlet-mapping> </web-app> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Config variable implicit</title> </head> <body> <% String sname = config.getServletName(); out.print("Servlet Name is: " + sname); %> </body> </html> https://facebook.com/jtcpage 32
  • 33. Tầm vực của biến trong JSP https://facebook.com/jtcpage 33

Editor's Notes

  • #17: The contentType charset is how the servlet container which runs the JSP (for example Tomcat) must send to the browser the text generated by the page. If not specified the charset is assume to be the ISO-8859-1, so only western characters can be used in that page The pageEncoding directive is used to correctly read the JSP from the file system. Since even the JSP is a text but a file is a sequence of bytes on disk, it can be correctly read only knowing the charset to use. The two encoding are independent and you can save JSP(s) on disk using UTF-8 and ask the container to communicate with the browser using another charset, like the ISO-8859-15.