Giáo trình Lập trình Java - Bài 4: EL và JSTL
Truy xuất attribute trong các scope
Truy xuất thuộc tính bean
Truy xuất phần tử mảng và tập hợp
Truy xuất phần tử của map
Truy xuất tham số, cookie
JSTL
Core
Format
Function
36 trang |
Chia sẻ: huongthu9 | Lượt xem: 624 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Giáo trình Lập trình Java - Bài 4: EL và JSTL, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LẬP TRÌNH JAVA 5
BÀI 4: EL & JSTL
MỤC TIÊU
Nắm vứng kỹ thuật lập trình giao diện trong JSP
Expression Language (EL)
Java Standard Tag Library (JSTL)
EXPRESSION LANGUAGE
EL là sự rút ngắn tuyệt vời trong việc viết mã làm
việc với các attribute đặt trong các scope (page,
request, session và application)
EL được giới thiệu trong phiên bản JSP 2.0
Trong phần này chúng ta nghiên cứu sử dụng EL
để truy xuất
Attribute trong các scope
Thuộc tính của bean
Phần tử trong Collection
Phần tử trong Map
Tham số, cookie và header
EXPRESSION LANGUAGE
Cú pháp:
${}
là một biểu thức cho một giá trị được
kết xuất tại vị trí đặt biểu thức EL.
Trong biểu thức này có thể có thể chứa attribute,
parameter, cookie hay header
Vídụ:
${salary*2}: nhân đôi giá trị của attribute salary và kết
xuất giá trị của biểu thức
${sessionScope[‘salary']}: kết xuất giá trị của
attribute là salary đặt trong session
${param.salary}: kết xuất giá trị của tham số salary
VÍ DỤ EL
@RequestMapping(“/el/demo1”)
public String sayHello(ModelMap model, HttpSession session){
session.setAttribute(“name”, “Tèo”);
model.addAttribute(“salary”, 2000)
}
name: ${name}
salary: ${salary}
requestScope.name: ${requestScope.name}
requestScope.salary: ${requestScope.salary}
sessionScope.name: ${sessionScope.name}
sessionScope.salary: ${sessionScope.salary}
SCOPE API
Như đã biết trong JSP có 4 scope chia sẻ dữ liệu
Page: pageScope
Request: requestScope
Session: sessionScope
Application: applicationScope
Scope API gồm
setAttribute(name, value)
getAttribute(name)
removeAttribute(name)
getAttributeNames()
Các phương thức này vẫn hữu dụng với viết mã Java. Tuy
nhiên trong JSP, theo phong cách mới thì lập trình viên sử
dụng EL và JSTL.
TRUY XUẤT ATTRIBUTE
Các biểu thức EL sau đây sẽ kết xuất attribute x
đặt trong scope cụ thể
${pageScope[‘x’]} hoặc ${pageScope.x}
${requestScope[‘x’]} hoặc ${requestScope.x}
${sessionScope[‘x’]} hoặc ${sessionScope.x}
${applicationScope[‘x’]} hoặc ${applicationScope.x}
Biểu thức EL sau đây sẽ truy tìm và kết xuất giá
trị của attribute message trong tất cả Scope
${message}
Trình tự tìm kiếm attribute message là
pageScope->requestScope->sessionScope->applicationScope
Nếu tìm thấy thì dừng lại, ngược lại cho giá trị rỗng
TRUY XUẤT THUỘC TÍNH CỦA BEAN
Nếu attribute là một bean thì EL cho phép truy
xuất các thuộc tính một cách đơn giản
Lớp JavaBean là lớp
Phải khai báo là public
Có Constructor mặc định không tham số
Đọc/ghi dữ liệu thông qua phương thức getter/setter
Cú pháp truy xuất thuộc tính bean:
${bean.property}
Kết xuất giá trị của thuộc tính property của attribute bean. Có
nghĩa là kết xuất kết quả của phương thức bean.getProperty()
Vídụ:
${student.mark} ~ xuất student.getMark()
VÍ DỤ TRUY XUẤT THUỘC TÍNH BEAN
@RequestMapping(“/el/demo2")
public String demo2(ModelMap model) {
Student student = new Student("Phương", 10.0, "APP");
model.addAttribute("student", student);
return "el/demo2";
}
name: ${student.name}
mark: ${student.mark}
TRUY XUẤT MẢNG VÀ TẬP HỢP
Nếu attribute là mảng hoặc tập hợp thì EL cho
phép sử dụng chỉ số để truy xuất các phần tử.
@RequestMapping(“/el/demo3")
public String demo3(ModelMap model) {
List list = new ArrayList();
list.add("Phương");
list.add("Cường");
model.addAttribute("items", list);
return "el/demo3";
}
${items[0]}
${items[1]}
TRUY XUẤT MAP
Nếu attribute là Map thì EL cho phép sử dụng
key để truy xuất các phần tử.
@RequestMapping("demo3")
public String demo3(ModelMap model) {
Map map = new HashMap();
map.put("name", "Phương");
map.put("mark", 9.5);
model.addAttribute("student", map);
return "el/demo3";
}
${student[‘name’]}
${student.mark}
Chú ý: Có 2 cách truy xuất
1. Map[key]
2. Map.key
DEMO
Giải thích el/demo1-4.htm
TRUY XUẤT PARAMETER, COOKIE
Với EL, bạn có thể truy xuất tham số và cookie
trong JSP một cách đơn giản
Truy xuất tham số
${param[]}
Hoặc ${param.}
Truy xuất cookie
${cookie[].value}
Hoặc ${cookie..value}
Ví dụ
${param.salary}
DEMO
Giải thích el/login.htm
LẬP TRÌNH JAVA 5
PHẦN 2
JAVA STANDARD TAG LIBRARY
JSTL là bộ thư viện thẻ chuẩn được bổ sung với
mục đích tối ưu lập trình giao diện trong JSP
Các thư viện cần thiết cho JSTL gồm
jstl-api.jar
jstl-impl.jar
Trong JSTL có rất nhiều bộ thẻ để xử lý các vấn
đề khác nhau
Core: chứa các thẻ lệnh điều khiển cơ bản
Format: chứa các thẻ định dạng và đa ngôn ngữ
Xml: chứa các thẻ xử lý xml
Sql: chứa các thẻ làm việc với CSDL
Function: cung cấp các hàm hỗ trợ cho EL
JAVA STANDARD TAG LIBRARY
Trong phạm vi môn học này, các bạn sẽ sử dụng các
bộ thẻ sau
Thư viện cơ bản (core)
Thư viện định dạng (format)
Thư viện hàm (function)
THƯ VIỆN CORE
Core chứa các thẻ thay thế các lệnh cơ bản trong
Java để phù hợp với lập trình giao diện theo cú
pháp thẻ.
Tương tự lệnh if trong java
Tương tự ifelse ifelse trong java
Tương tự for-each trong java
Tương tự: .setAttribute() trong java
Tương tự .removeAttribute() trong java
THẺ
Cú pháp
}”>Nội dung
Nội dung sẽ được kết xuất nếu điều kiện có giá trị là true
Ví dụ
THẺ
Cú pháp
}”>Nội dung 1
}”>Nội dung 2
Nội dung N+1
Diễn giải
Xét các điều kiện từ trên xuống, nếu điều kiện thứ i
đúng thì kết xuất Nội dung i. Nếu không có điều kiện
nào thỏa mãn thì kết xuất nội dung thứ N+1
().
VÍ DỤ
THẺ
Cú pháp
<c:forEach
var=“biến chứa phần tử hiện tại”
items=“tập hợp các phần tử”
begin=“vị trí của phần tử bắt đầu mặc định là 0”
end=“vị trí của phần tử cuối cùng mặc định là vị trí
phần tử cuối cùng”
varStatus=“biến trạng thái”>
Nội dung
Diễn giải
Duyệt các phần tử từ vị trí begin đến end trong tập
hợp items. Var sẽ nắm phần tử hiện tại còn varStatus
sẽ nắm thông tin trạng thái của phần tử hiện tại.
VÍ DỤ 1 -
Vòng lặp trên sẽ kết xuất
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
VÍ DỤ 2 -
Ví dụ trên sẽ kết xuất thông tin của các phần tử từ
10 đến 25 trong tập hợp products. Mỗi phần từ sẽ
xuất vị trí và tên sản phẩm:
Vị trí: 10
Tên hàng hóa: Abc
Vị trí: 11
Tên hàng hóa: Xyz
VÍ DỤ 3 -
&
được sử dụng để tạo một attribute
tương tự .setAttribute(“name”, “value”)
trong java
Cú pháp
value
được sử dụng để xóa một attribute
tương tự .removeAttribute(“name”)
trong java
Cú pháp
DEMO
Giải thích
+ jstl/core-if.htm
+ jstl/core-choose.htm
+ jstl/core-foreach.htm
THƯ VIỆN ĐỊNH DẠNG
Định dạng số
Value: số cần định dạng
Type: kiểu định dạng
Ví dụ
Định dạng thời gian
Value: thời gian cần định dạng
Pattern: mẫu định dạng thời gian
Ví dụ
VÍ DỤ ĐỊNH DẠNG
VÍ DỤ ĐỊNH DẠNG
DEMO
Giải thích
+ jstl/format.htm
THƯ VIỆN HÀM
JSTL cung cấp tập các hàm hỗ trợ xử lý cho biểu
thức EL. Các hàm này tập trung xử lý chuỗi và
tập hợp.
Ví dụ 1:
${fn:substring(0, 100, description)}
Ví dụ này chỉ hiển thị 100 ký tự đầu tiên của attribute
description
Ví dụ 2:
Người này họ Nguyễn
Ví dụ này kiểm tra attribute fullname có phải bắt đầu
bởi chữ “Nguyễn ” hay không
THƯ VIỆN HÀM
THƯ VIỆN HÀM
TỔNG KẾT NỘI DUNG BÀI HỌC
EL
Truy xuất attribute trong các scope
Truy xuất thuộc tính bean
Truy xuất phần tử mảng và tập hợp
Truy xuất phần tử của map
Truy xuất tham số, cookie
JSTL
Core
Format
Function
Các file đính kèm theo tài liệu này:
- giao_trinh_lap_trinh_java_bai_4_el_va_jstl.pdf