Bài giảng Công nghệ Java - Bài 4: JSP - Standard Tag Library (JSTL) - Nguyễn Hữu Thể

JavaServer Pages Standard Tag Library (JSTL)

− Thư viện thẻ chuẩn, cung cấp các thẻ để kiểm soát trang, lặp

và các lệnh điều khiển, các thẻ quốc tế hóa, và các thẻ SQL.

− JSTL là một phần của Java EE API.

− Để sử dụng JSTL => cần phải tải về các thư viện JSTL, đặt các

thư viện này vào thư mục WEB-INF/lib của project.

− Các nhóm thư viện thẻ JSTL:

1. Core Tags: Nhóm thẻ cơ bản

2. Formatting tags: Nhóm thẻ định dạng

3. SQL tags: Nhóm thẻ SQL

4. XML tags: Nhóm thẻ XML

5. JSTL Functions: Nhóm hàm JSTL

pdf 52 trang yennguyen 900
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ Java - Bài 4: JSP - Standard Tag Library (JSTL) - Nguyễn Hữu Thể", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Công nghệ Java - Bài 4: JSP - Standard Tag Library (JSTL) - Nguyễn Hữu Thể

Bài giảng Công nghệ Java - Bài 4: JSP - Standard Tag Library (JSTL) - Nguyễn Hữu Thể
1CÔNG NGHỆ JAVA
JSP - Standard Tag 
Library (JSTL)
Nguyễn Hữu Thể
2JavaServer Pages Standard Tag Library (JSTL)
− Thư viện thẻ chuẩn, cung cấp các thẻ để kiểm soát trang, lặp 
và các lệnh điều khiển, các thẻ quốc tế hóa, và các thẻ SQL.
− JSTL là một phần của Java EE API. 
− Để sử dụng JSTL => cần phải tải về các thư viện JSTL, đặt các 
thư viện này vào thư mục WEB-INF/lib của project. 
− Các nhóm thư viện thẻ JSTL:
1. Core Tags: Nhóm thẻ cơ bản
2. Formatting tags: Nhóm thẻ định dạng
3. SQL tags: Nhóm thẻ SQL
4. XML tags: Nhóm thẻ XML
5. JSTL Functions: Nhóm hàm JSTL
3Các thẻ cơ bản (Core Tags)
− Các thẻ cơ bản cung cấp hỗ trợ cho bộ lặp (iteration), các 
điều kiện logic, bắt ngoại lệ, url, chuyển tiếp (forward) 
hoặc chuyển hướng (redirect),...
4Các thẻ định dạng (Formatting and Localization Tags)
− Những thẻ này cung cấp định dạng cho các con số, ngày 
tháng
5Các thẻ SQL (SQL Tags)
− Các thẻ JSTL SQL cung cấp các hỗ trợ cho việc tương tác 
với cơ sở dữ liệu quan hệ như Oracle, MySql...
6Các thẻ XML (XML Tags)
− Thẻ XML được sử dụng để làm việc với các tài liệu XML 
như phân tích cú pháp XML, chuyển đổi dữ liệu XML và 
XPath đánh giá biểu thức. 
7Các thẻ hàm JSTL (JSTL Functions Tags)
− Thẻ JSTL cung cấp một số chức năng mà chúng ta có thể 
sử dụng để thực hiện các toán tử dùng chung, xử lý chuỗi
8Download thư viện JSTL
Thư viện JSTL
(Cung cấp bởi Apache)
Thư viện JSTL
(Cung cấp bởi Glassfish)
taglibs-standard-spec-*.jar javax.servlet.jsp.jslt-api-*.jar
taglibs-standard-impl-*.jar javax.servlet.jsp.jstl-*.jar
9Các thẻ JSTL cơ bản (JSTL Core Tags)
Thẻ Miêu tả
 Giống , nhưng cho các Expression
 Thiết lập kết quả của một ước lượng Expression trong một 
'scope'
 Gỡ bỏ một biến mục tiêu (từ một biến scope cụ thể, nếu đã xác 
định)
 Bắt bất kỳ Throwable mà xuất hiện trong thân của nó và trưng 
bày nó một cách tùy ý
 Thẻ điều kiện đơn giản, mà ước lượng phần thân của nó nếu 
điều kiện đã cho là true
 Thẻ điều kiện đơn giản mà thiết lập một context cho các hoạt 
động điều kiện loại trừ, được đánh dấu bởi và 
 Thẻ phụ của mà include phần thân của nó nếu điều 
kiện được ước lượng là true
10
Các thẻ JSTL cơ bản (JSTL Core Tags)
Thẻ Miêu tả
 Thẻ phụ của mà theo sau thẻ và chỉ chạy 
nếu tất cả điều kiện trước được ước lượng là 'false'
 Thu nhận một URL tuyệt đối hoặc quan hệ và trưng bày nội 
dung của nó tới hoặc trang đó, một String trong 'var', hoặc 
một Reader trong 'varReader'
 Thẻ lặp cơ bản, chấp nhận nhiều kiểu tập hợp khác nhau và 
hỗ trợ subsetting (chia tập con) và tính năng khác
 Lặp qua các token, được phân biệt bởi các dấu phân tách 
(delimiter) đã cung cấp
 Thêm một parameter tới một URL của thẻ đang chứa 'import'
 Redirect tới một URL mới
 Tạo một URL với các tham số truy vấn tùy ý
11
− The tag is similar to JSP expression tag, but it can 
only be used with expression. It will display the result of an 
expression, similar to the way work.
12
− It is used to set the result of an expression evaluated in a 
'scope’. 
Scope: có 4 phạm vi:
1. page
2. application
3. request
4. session
Output:
16000
13
Attribute Description Required Default
value Information to save No body
target
Name of the variable whose 
property should be modified
No None
property Property to modify No None
var
Name of the variable to store 
information
No None
scope
Scope of variable to store 
information
No Page
14
− The is similar to jsp 'include', with an additional 
feature of including the content of any resource either within 
server or outside the server.
15
− The tag is used for testing the condition and it display 
the body content, if the expression evaluated is true.
− Output:
▪ My income is: 16000
 8000}">
My income is: 
16
Attribute Description Required Default
test Condition to evaluate Yes None
var
Name of the variable to store the 
condition's result
No None
scope
Scope of the variable to store the 
condition's result
No page
17
− It is used for removing the specified variable from a particular 
scope. 
Before Remove Value is: 
After Remove Value is: 
Output:
Before Remove Value is: 16000
After Remove Value is:
18
− It is used for Catches any Throwable exceptions that occurs in 
the body and optionally exposes it. In general it is used for 
error handling and to deal more easily with the problem occur 
in program.
The type of exception is : ${catchtheException} 
There is an exception: ${catchtheException.message}
Output:
The type of exception is : java.lang.ArithmaticException: / by zero
There is an exception: / by zero
, , 
− The tag is a conditional tag that establish a 
context for mutually exclusive conditional operations. It works 
like a Java switch statement in which we choose between a 
numbers of alternatives. 
− The is subtag of that will include its 
body if the condition evaluated be 'true'.
− The is also subtag of it follows 
 tags and runs only if all the prior condition evaluated 
is 'false'.
− The c:when and c:otherwise works like if-else statement. But it 
must be placed inside c:choose tag.
, , 
Your income is : 
Income is not good.
 10000}">
Income is very good.
Income is undetermined...
Output:
Your income is : 16000
Income is very good.
, , 
Even/Odd Example using c:when and c:otherwise
s
Output: 
10 is even number
22
− The is an iteration tag used for repeating the 
nested body content for fixed number of times or over the 
collection.
Item 
Output:
Item 1
Item 2
Item 3
23
Attribute Description Required Default
items Information to loop over No None
begin
Element to start with (0 = first 
item, 1 = second item, ...)
No 0
end
Element to end with (0 = first 
item, 1 = second item, ...)
No
Last 
element
step Process every step items No 1
var
Name of the variable to 
expose the current item
No None
varStatus
Name of the variable to 
expose the loop status
No None
24
− The tag iterates over tokens which is 
separated by the supplied delimeters. It is used for break a 
string into tokens and iterate through each of the tokens to 
generate output.
<%@ taglib uri="" prefix="c" %
<c:forTokens items="Rahul-Nakul-Rajesh" delims="-"
var="name">
Output:
Rahul
Nakul
Rajesh
Attribute Description Required Default
delims Characters to use as delimiters Yes None
25
− The tag add the parameter in a containing 'import' 
tag's URL. It allow the proper URL request parameter to be 
specified within URL and it automatically perform any 
necessary URL encoding.
− Inside tag, the value attribute indicates the 
parameter value and name attribute indicates the parameter 
name.
${completeURL}
26
− The tag redirects the browser to a new URL. It 
supports the context-relative URLs, and the tag.
− It is used for redirecting the browser to an alternate URL by 
using automatic URL rewriting.
1}">
Output:
27
− The tag creates a URL with optional query parameter. 
It is used for url encoding or url formatting. This tag 
automatically performs the URL rewriting operation.
− The JSTL url tag is used as an alternative method of writing 
call to the response.encodeURL() method. The advantage of 
url tag is proper URL encoding and including the parameters 
specified by children. param tag.
28
Add User
User idUsernamePasswordEditDelete
<%
UserDao ud = new UserDao();
ResultSet rs = ud.selectUser();
while(rs.next()){
%>
">Edit
<a 
href="UserController?action=delete&userid=">Delete
<%
}
%>
Code JSP
29
Add User
User id
Username
Password
Edit
Delete
<a
href="UserController?action=edit&userid=<c:out
value="${user.userid}"/>">Update
<a href="UserController?action=delete&userid=<c:out 
value="${user.userid}"/>">Delete 
public class UserController extends HttpServlet {
protected void doGet(){
if(action.equals("all")){
request.setAttribute("users", dao.getAllUsers());
view = request.getRequestDispatcher(“manage-user.jsp");
}
Code JSTL
30
Sửa 1 dòng dữ liệu
Sửa 1 dòng dữ liệu, rê chuột và liên kết Edit, như hình bên dưới
public class UserController extends HttpServlet {
protected void doGet() {
int userid = 0;
RequestDispatcher view = null;
UserDao u = new UserDao();
if (action.equals("all")) {
request.setAttribute("users", dao.getAllUsers());
view = request.getRequestDispatcher("listUser.jsp");
} else if (action.equals("insert")) {
view = request.getRequestDispatcher("add-
user.jsp");
} else if (action.equals("edit")) {
userid = 
Integer.parseInt(request.getParameter("userid"));
User user = u.getUserById(userid);
request.setAttribute("userUpdate", user);
view = request.getRequestDispatcher("update-
user.jsp");
} 
31
Sửa 1 dòng dữ liệu
Chuyển dữ liệu của dòng người dùng muốn sửa, trình bày dữ liệu
ra giao diện cập nhật
Để có được giao diện này, chúng ta phải tạo 1 file update-user.jsp
để trình bày dữ liệu cần cập nhật
32
update-user.jsp
<%
//gọi biến userUpdate đã lưu khi xử lý ở Controller
User userUpdate = (User)request.getAttribute("userUpdate"); 
%>
Userid: <input type="text" name="userid"
readonly value="">
Username: <input type="text" name="username"
value="">
Password: <input type="password" name="password"
value="">
33
update-user.jsp
<%
//gọi biến userUpdate đã lưu khi xử lý ở Controller
User userUpdate = (User)request.getAttribute("userUpdate"); 
%>
Userid: <input type="text" name="userid"
readonly value="">
Username: <input type="text" name="username"
value="">
Password: <input type="password" name="password"
value="">
Userid: 
Username: 
Password: <input type="password" name="password"
value="${userUpdate.password}">
Code JSP
Code JSTL
34
update-user.jsp
Giả sử chúng ta sửa password lại thành 123458, và nhấn nút Update
Kết quả 
xử lý 
như sau:
35
JSTL Functions
Hàm Miêu tả 
fn:contains() Kiểm tra nếu một chuỗi input chứa chuỗi phụ đã cho
fn:containsIgnoreCase() Kiểm tra nếu một chuỗi input chứa chuỗi phụ đã cho 
trong trường hợp không phân biệt kiểu chữ
fn:endsWith() Kiểm tra nếu một chuỗi input kết thúc với suffix đã 
cho
fn:escapeXml() Các ký tự thoát mà có thể được phiên dịch như 
XML markup
fn:indexOf() Trả về index bên trong một chuỗi về sự xuất hiện 
đầu tiên của chuỗi phụ 
fn:join() Kết hợp tất cả phần tử trong một mảng thành một 
chuỗi
fn:length() Trả về số item trong một tập hợp, hoặc số ký tự 
trong một chuỗi
fn:replace() Trả về một chuỗi là kết quả của việc thay thế một 
chuỗi input với một chuỗi đã cho
36
JSTL Functions
Hàm Miêu tả 
fn:split() Chia một chuỗi thành một mảng các chuỗi phụ
fn:startsWith() Kiểm tra nếu một chuỗi input bắt đầu với prefix 
đã cho
fn:substring() Trả về một tập con của một chuỗi
fn:substringAfter() Trả về một tập con của một chuỗi ở sau một 
chuỗi phụ đã cho
fn:substringBefore() Trả về một tập con của một chuỗi ở trước một 
chuỗi phụ đã cho
fn:toLowerCase() Biến đổi tất cả ký tự của một chuỗi thành chữ 
thường
fn:toUpperCase() Biến đổi tất cả ký tự của một chuỗi thành chữ 
hoa
fn:trim() Gỡ bỏ các khoảng trống trắng từ hai đầu của 
một chuỗi
37
fn:contains()
− Is used for testing if the string containing the specified 
substring. If the specified substring is found in the string, it 
returns true otherwise false.
boolean contains(java.lang.String, java.lang.String)
Found abc string
Found ABC string
Output:
Found abc string
38
fn:containsIgnoreCase()
− determines whether an input string contains a specified 
substring. While doing search it ignores the case.
Found test string
Found TEST string
 Found test string 
Found TEST string 
39
fn:endsWith()
− Determines if an input string ends with a specified suffix.
String ends with 123
String ends with 123
String ends with TEST
40
fn:escapeXml()
− escapes characters that can be interpreted as XML markup.
is second String."/>
With escapeXml() Function:
string (1) : ${fn:escapeXml(string1)}
string (2) : ${fn:escapeXml(string2)}
Without escapeXml() Function:
string (1) : ${string1}
string (2) : ${string2}
With escapeXml() Function:
string (1) : This is first String.
string (2) : This is second String.
Without escapeXml() Function −
string (1) : This is first String.
string (2) : This is second String.
41
fn:indexOf()
− returns the index within a string of a specified substring.
is second String."/>
Index (1) : ${fn:indexOf(string1, "first")}
Index (2) : ${fn:indexOf(string2, "second")}
Index (1) : 8 
Index (2) : 13
42
fn:join()
− concatenates all the elements of an array into a string with a 
specified separator.
Final String : ${string3}
Final String : This-is-first-String.
43
fn:length()
− returns the string length or the number of items in a collection.
Length of String (1) : ${fn:length(string1)}
Length of String (2) : ${fn:length(string2)}
Length of String (1) : 21 
Length of String (2) : 22
44
fn:replace()
− replaces all occurrences of a string with another string.
Final String : ${string2}
Final String : This is second String.
45
fn:split()
− splits a string into an array of substrings based on a delimiter 
string.
String (3) : ${string3}
String (5) : ${string5}
 String (3) : This-is-first-String. 
String (5) : This is first String.
46
fn:startsWith()
− determines if an input string starts with a specified substring.
String starts with First
String starts with Second
String starts with Second
47
fn:substring()
− returns a subset of a string specified by start and end indices.
Final sub string : ${string2}
Final sub string : is first S
48
fn:substringAfter()
− returns the part of a string after a specified substring.
Final sub string : ${string2}
Final sub string : is first String.
49
fn:substringBefore()
− returns the part of a string before a specified substring.
Final sub string : ${string2}
Final sub string : This is 
50
fn:toLowerCase()
− converts all the characters of a string to lowercase.
Final string : ${string2}
51
fn:toUpperCase()
− converts all the characters of a string to uppercase.
Final string : ${string2}
Final string : THIS IS FIRST STRING.
52
fn:trim()
− removes white space from both ends of a string.
String (1) Length : ${fn:length(string1)}
String (2) Length : ${fn:length(string2)}
Final string : ${string2}
 String (1) Length : 29 
String (2) Length : 20 
Final string : This is first String

File đính kèm:

  • pdfbai_giang_cong_nghe_java_bai_4_jsp_standard_tag_library_jstl.pdf