Bài giảng Lập trình Java 5 - Bài 4: EL và JSTL
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
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java 5 - Bài 4: EL và JSTL", để 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 Lập trình Java 5 - Bài 4: EL và JSTL
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
File đính kèm:
- bai_giang_lap_trinh_java_5_bai_4_el_va_jstl.pdf