Hướng Dẫn Sử Dụng Java JSP Standard Tag Library (JSTL)
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- JSTL là gì?
- Tổng quan về các chức năng của JSTL
- Download thư viện JSTL
- Tạo WebApp Project
- Khai báo thư viện JSTL
- Cấu hình để chạy Webapp
- Một vài lớp tham gia vào các ví dụ
- Các thẻ JSTL cơ bản (JSTL Core Tags)
- JSTL Formatting and Localization Tags
1. JSTL là gì?
JSP Standard Tag Library (JSTL) là thư viện thẻ chuẩn cung cấp các thẻ để kiểm soát hành vi trang, lặp đi lặp lại 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 và trong hầu hết các container servlet. Nhưng để sử dụng JSTL trong các trang JSP của bạn, bạn cần phải tải về các thư viện JSTL cho bộ chứa Servlet (container servlet) của bạn. Thông thường, bạn có thể tìm thấy chúng trong các dự án ví dụ và bạn có thể sử dụng chúng. Bạn cần phải đặt các các thư viện này vào thư mục WEB-INF/lib của project. Nếu project của bạn là Maven project bạn cần phải khai báo các thư viện này trong pom.xml2. Tổng quan về các chức năng của JSTL
Căn cứ chức năng JSTL, chúng được phân loại thành năm loại.Chức năng | Mô tả / Khai báo |
Cá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),.... Để sử dụng JSTL core tags, bạn cần đưa nó vào trang JSP giống dưới đây: |
Các thẻ cơ bản (Core Tags) |
|
Các thẻ định dạng và địa phương hóa. (Formatting and Localization Tags) | Những thẻ này cung cấp định dạng cho các con số, ngày tháng và hỗ trợ i18n thông qua miền địa phương (locales) và bó tài nguyên (resource bundles). Bạn cần đưa nó vào trang JSP với cú pháp dưới đây. |
Các thẻ định dạng và địa phương hóa. (Formatting and Localization Tags) |
|
Cá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 v..v. Sử dụng thẻ SQL mà bạn có thể chạy các truy vấn cơ sở dữ liệu, bạn đưa nó vào trong JSP với cú pháp dưới đây: |
Các thẻ SQL (SQL Tags) |
|
Cá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. Cú pháp để có thể sử dụng các thẻ XML trong JSP trang là: |
Các thẻ XML (XML Tags) |
|
Các thẻ hàm JSTL (JSTL Functions Tags) | JSTL tags provide a number of functions that we can use to perform common operation, most of them are for String manipulation such as String Concatenation, Split String etc. Syntax to include JSTL functions in JSP page is: 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ử thông dùng, hầu hết trong số đó là cho String như nối chuỗi, phân tách chuỗi, ...Cú pháp: |
Các thẻ hàm JSTL (JSTL Functions Tags) |
|
3. Download thư viện JSTL
Trước hết bạn cần phải download các thư viện JSTL chuẩn. Nếu bạn đã download Tomcat server, các file thư viện này nằm trong thư mục:- <Tomcat>/webapps/examples/WEB-INF/lib
- taglibs-standard-impl-**.jar
- taglibs-standard-spec-**.jar
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 |
- Cung cấp bởi Apache:
- Hoặc cung cấp bởi Glassfish:
- Cung cấp bởi Sun (Hơi cũ, hiện tại ít được dùng).
- http://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec
- http://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl
4. Tạo WebApp Project
Để học JSTL bạn cần tạo một WebApp project để chạy các ví dụ:- File/New/Other..
- JSTLTutorial
5. Khai báo thư viện JSTL
Copy các thư viện JSTL vào thư mục WEB-INF/lib6. Cấu hình để chạy Webapp
Trước hết bạn cần download và khai báo Tomcat Server với Eclipse. Bạn có thể xem hướng dẫn tại.- Cài đặt Tomcat Server cho Eclipse
- Run As/Run on Server
7. Một vài lớp tham gia vào các ví dụ
Bạn cần một số class, các class này tham gia vào các ví dụ trong tài liệu này.Dept.javapackage org.o7planning.jslttutorial.beans; import java.util.HashSet; import java.util.Set; public class Dept { private int deptNo; private String deptName; private String location; private Set<Emp> employees; public Dept() { } public Dept(int deptNo, String deptName, String location) { this.deptNo = deptNo; this.deptName = deptName; this.location = location; } public int getDeptNo() { return deptNo; } public void setDeptNo(int deptNo) { this.deptNo = deptNo; } public String getDeptName() { return deptName; } public void setDeptName(String deptName) { this.deptName = deptName; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public Set<Emp> getEmployees() { return employees; } public void setEmployees(Set<Emp> employees) { this.employees = employees; } public void addEmployee(Emp employee) { if(this.employees== null) { this.employees= new HashSet<Emp>(); } this.employees.add(employee); } }Emp.javapackage org.o7planning.jslttutorial.beans; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Emp { private int empNo; private String empName; private String job; private Date hireDate; private float salary; private static final DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); public Emp() { } // @hireDateStr - phải có định dạng 'MM/dd/yyyy'. public Emp(int empNo, String empName, String job, String hireDateStr, float salary) { this.empNo = empNo; this.empName = empName; this.job = job; this.salary = salary; try { this.hireDate = df.parse(hireDateStr); } catch (ParseException e) { throw new RuntimeException(e); } } public int getEmpNo() { return empNo; } public void setEmpNo(int empNo) { this.empNo = empNo; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Date getHireDate() { return hireDate; } public void setHireDate(Date hireDate) { this.hireDate = hireDate; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } }DBUtils.javapackage org.o7planning.jslttutorial.utils; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.o7planning.jslttutorial.beans.Dept; import org.o7planning.jslttutorial.beans.Emp; public class DBUtils { private static final List<Dept> DEPARTMENTS = new ArrayList<Dept>(); static { initData(); } // Mô phỏng dữ liệu trong Database. private static void initData() { Dept accountingDept = new Dept(10, "ACCOUNTING", "NEW YORK"); accountingDept.addEmployee(new Emp(7782, "CLARK", "MANAGER", "6/9/1981", 2450.00f)); accountingDept.addEmployee(new Emp(7839, "KING", "PRESIDENT", "11/17/1981", 5000.00f)); accountingDept.addEmployee(new Emp(7934, "MILLER", "CLERK", "6/9/1981", 1300.00f)); // Dept reseachDept = new Dept(20, "RESEARCH", "DALLAS"); reseachDept.addEmployee(new Emp(7369, "SMITH", "CLERK", "12/17/1980", 800.00f)); reseachDept.addEmployee(new Emp(7788, "SCOTT", "ANALYST", "4/19/1987", 3000.00f)); reseachDept.addEmployee(new Emp(7876, "ADAMS", "CLERK", "5/23/1987", 1100.00f)); reseachDept.addEmployee(new Emp(7876, "FORD", "ANALYST", "12/3/1981", 3000.00f)); reseachDept.addEmployee(new Emp(7566, "JONES", "MANAGER", "4/2/1981", 2975.00f)); // // Dept salesDept = new Dept(30, "SALES", "CHICAGO"); salesDept.addEmployee(new Emp(7654, "MARTIN", "SALESMAN", "9/28/1981", 1250.00f)); salesDept.addEmployee(new Emp(7499, "ALLEN", "SALESMAN", "2/20/1981", 1600.00f)); salesDept.addEmployee(new Emp(7521, "WARD", "SALESMAN", "2/22/1981", 1250.00f)); salesDept.addEmployee(new Emp(7844, "TURNER", "SALESMAN", "9/8/1981", 1500.00f)); salesDept.addEmployee(new Emp(7900, "JAMES", "CLERK", "12/3/1981", 950.00f)); // Dept openrationsDept = new Dept(40, "OPERATIONS", "BOSTON"); // DEPARTMENTS.add(accountingDept); DEPARTMENTS.add(reseachDept); DEPARTMENTS.add(salesDept); DEPARTMENTS.add(openrationsDept); } // Truy vấn bảng Department. public static List<Dept> queryDepartments() { return DEPARTMENTS; } // Truy vấn bảng Employee. // Lấy ra danh sách các nhân viên của 1 phòng ban. public static Set<Emp> queryEmployees(int deptNo) { for (Dept dept : DEPARTMENTS) { if (deptNo == dept.getDeptNo()) { return dept.getEmployees(); } } return null; } }8. Các thẻ JSTL cơ bản (JSTL Core Tags)
Thẻ | Mô tả |
<c:out> | Để viết một cái gì đó trong trang JSP, bạn có thể sử dụng EL cũng có thẻ này |
<c:import> | Giống với <jsp:include> hoặc chỉ thị include (include directive) |
<c:redirect> | Chuyển hướng (redirect) yêu cầu tới một nguồn dữ liệu khác. |
<c:set> | Sét đặt giá trị biến cho bởi phạm vi. |
<c:remove> | Loại bỏ biến ra khỏi phạm vi đã cho. |
<c:catch> | Bắt ngoại lệ và gói vào một đối tượng. |
<c:if> | Điều kiện logic đơn giản, sử dụng với EL và bạn có thể sử dụng nó để xử lý các trường hợp ngoại lệ từ <c:catch> |
<c:choose> | Tag có điều kiện đơn giản mà thiết lập một bối cảnh cho các trường hợp loại trừ lẫn nhau có điều kiện, đánh dấu bằng <c:when> và <c:otherwise> |
<c:when> | Thẻ con của <c:choose>, khi một điều kiện tại when là đúng. |
<c:otherwise> | Thẻ con của <c:choose>, khi tất cả các điều kiện <c:when> là sai. |
<c:forEach> | Dùng để lặp trên một tập hợp. |
<c:forTokens> | dùng để lặp trên chuỗi (tokens) được phân cách bởi một dấu phân cách. |
<c:param> | Được sử dụng với <c:import> để truyền các tham số. |
<c:url> | Để tạo một URL với các tham số tùy chọn (optional query string parameters). |
Bằng với (equals) | == | eq |
Không bằng (Not equals) | != | ne |
Nhỏ hơn (Less than) | < | lt |
Lớn hơn (Greater than) | > | gt |
Nhỏ hơn hoặc bằng (Less than or equals) | <= | le |
Lớn hơn hoặc bằng (Greater than or equals) | >= | ge |
Khái niệm | Điều kiện EL | Kết quả |
Số nhỏ hơn | ${1 < 2} | true |
Số lớn hơn | ${1 > 2} | false |
Số nhỏ hơn (Less than) | ${1 lt 2} | true |
Số lớn hơn (Greater than) | ${1 gt 2} | false |
Số hơn hơn hoặc bằng | ${1 >= 1} | true |
Số nhỏ hơn hoặc bằng | ${1 <= 1} | true |
Số nhỏ hơn hoặc bằng (Less equals) | ${1 le 1} | true |
Số lớn hơn hoặc bằng (Greater than or equal) | ${1 ge 1} | true |
Số bằng với | ${1 == 1} | true |
Số bằng với (equal) | ${1 eq 1} | true |
Số không bằng với | ${1 != 2} | true |
Số không bằng với (not equal) | ${1 ne 2} | true |
Chữ nhỏ hơn | ${'abe' < 'ade'} | true |
Chữ lớn hơn | ${'abe' > 'ade'} | false |
Chữ bằng với (Equals) | ${'abe' eq 'abe'} | true |
Chữ không bằng với (Not equals) | ${'abe' ne 'ade'} | true |
Toán tử | Mô tả |
&& | Và |
|| | Hoặc |
${(guess >= 10) && (guess <= 20)} | ${ guess >= 10 && guess <= 20 } |
${(guess < 10) || (guess > 20)} | ${ guess < 10 || guess > 20 } |
Trên Servlet bạn có thể lưu trữ dữ liệu vào một thuộc tính (attribute) của request, dữ liệu này chỉ tồn tại trong thời gian request đang diễn ra.// Lấy ra dữ liệu từ DB (Mô phỏng). List<Dept> list = DBUtils.queryDepartments(); // Ghi dữ liệu vào thuộc tính 'departments' của request. request.setAttribute("departments", list);Trên JSP bạn có thể sử dụng dữ liệu đã được lưu trữ trên thuộc tính (attribute) của request.<c:forEach items="${requestScope.departments}" var="dept"> ${dept.deptName} </c:forEach> <!-- Hoặc (Bạn có thể không cần requestScope) --> <c:forEach items="${departments}" var="dept"> ${dept.deptName} </c:forEach>Xem ví dụ đầy đủ.JstlCoreEx01Servlet.javapackage org.o7planning.jslttutorial.servlets; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.o7planning.jslttutorial.beans.Dept; import org.o7planning.jslttutorial.utils.DBUtils; @WebServlet("/jstlCoreExample01") public class JstlCoreEx01Servlet extends HttpServlet { private static final long serialVersionUID = 1L; public JstlCoreEx01Servlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Truy vấn dữ liệu từ DB (Mô phỏng). List<Dept> list = DBUtils.queryDepartments(); // Lưu dữ liệu vào thuộc tính 'departments' của request. request.setAttribute("departments", list); // Tạo đối tượng RequestDispatcher // để Forward (chuyển tiếp) yêu cầu tới jstl_core_example01.jsp RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher("/WEB-INF/jsps/jstl_core_example01.jsp"); // Forward (Chuyển tiếp) yêu cầu, để hiển thị dữ liệu trên trang JSP. dispatcher.forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }/WEB-INF/jsps/jstl_core_example01.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- Khai báo sử dụng JSTL Core Tags --> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL Core Tags Example 01</title> </head> <body> <h2>Departments and Employees</h2> <!-- Dùng for để duyệt trên các phòng ban (departments) --> <c:forEach items="${departments}" var="dept"> <h3>${dept.deptName}</h3> <ul> <!-- Dùng for để duyệt trên các nhân viên thuộc phòng ban hiện tại --> <c:forEach items="${dept.employees}" var="emp"> <li> ${emp.empName} - (${emp.job}) </li> </c:forEach> </ul> </c:forEach> </body> </html>Chạy ví dụ:Nếu bạn không muốn người dùng truy cập trực tiếp vào các trang JSP bạn có thể để chúng trong thư mục WEB-INF hoặc các thư mục con của thư mục này.
- http://localhost:8080/JSTLTutorial/jstlCoreExample01
- http://localhost:8080/JSTLTutorial/jstlCoreExample02
- http://localhost:8080/JSTLTutorial/c_choose.jsp?color=blue
Ví dụ:c_out.jsp<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>c:out example</title> </head> <body> <h2>c:out example</h2> <c:out value="${'This is true: 10 > 1 '}" /> <br/> Tag: <c:out value="${'<atag> , &'}"/> </body> </html>Chạy ví dụ:escape có ý nghĩa là nếu có các ký tự đặc biệt < > hoặc & nằm ở trong <c:out> khi in ra nó sẽ được chuyển thành < và > và &
- Chẳng hạn:
- <c:out value = "${'<atag> &'}" />
- In ra (Xem trong source của trang trên trình duyệt).
- <atag< &
- http://localhost:8080/JSTLTutorial/c_out.jsp
- http://localhost:8080/JSTLTutorial/c_set.jsp
- http://localhost:8080/JSTLTutorial/c_remove.jsp
- http://localhost:8080/JSTLTutorial/c_catch.jsp
- http://localhost:8080/JSTLTutorial/c_forTokens.jsp
- http://localhost:8080/JSTLTutorial/c_url.jsp
9. JSTL Formatting and Localization Tags
Các thẻ định dạng JSTL (JSTL formatting tags) được sử dụng để định dạng và hiển thị văn bản, ngày tháng, thời gian, và số cho các trang web có tính chất quốc tế (Có người dùng đa quốc gia).Tag | Description |
<fmt:formatNumber> | Sử dụng để định dạng số thành một chuỗi theo một quy tắc chỉ định. |
<fmt:parseNumber> | Phân tích các chuỗi đại diện của một số, tiền tệ, hoặc tỷ lệ phần trăm. |
<fmt:formatDate> | Định dạng ngày tháng hoặc thời gian sử dụng một mẫu chỉ định. |
<fmt:parseDate> | Phân tích một String mô tả ngày tháng hoặc thời gian. |
<fmt:bundle> | Tải bó nguồn dữ liệu (resource bundle) để sử bởi thẻ body của nó. |
<fmt:setLocale> | Stores the given locale in the locale configuration variable. |
<fmt:setBundle> | Loads a resource bundle and stores it in the named scoped variable or the bundle configuration variable. |
<fmt:timeZone> | Specifies the time zone for any time formatting or parsing actions nested in its body. |
<fmt:setTimeZone> | Stores the given time zone in the time zone configuration variable |
<fmt:message> | To display an internationalized message. |
<fmt:requestEncoding> | Sets the request character encoding |
Thuộc tính | Bắt buộc | Kiểu | Mặc định | Mô tả |
value | Yes | Number | Giá trị số, sẽ được định dạng. | |
type | String | number | Xác định xem giá trị được định dạng như một số, tiền tệ hoặc tỷ lệ phần trăm. Các giá trị (number, currency, percel). | |
pattern | String | Khuôn định dạng (Formatting pattern). | ||
currencyCode | String | Lấy theo miền địa phương mặc định. | Mã tiền tệ được sử dụng nếu các loại thuộc tính là tiền tệ. | |
currencySymbol | String | Lấy theo miền địa phương mặc định. | Các ký hiệu tiền tệ được sử dụng nếu các loại thuộc tính là tiền tệ. | |
groupingUsed | String | true | Có phân tách nhóm hay không khi định dạng đầu ra. | |
maxIntegerDigits | Integer | Số lượng tối đa các chữ số trong phần nguyên. | ||
minIntegerDigits | Integer | Số lượng tối thiểu của các chữ số ở phần nguyên | ||
maxFractionDigits | Integer | Số lượng tối đa các chữ số trong phần thập phân. | ||
minFractionDigits | Integer | Số lượng tối thiểu các chữ số trong phần thập phân. | ||
var | String | In ra màn hinh. | Tên của biến lưu trữ kết quả đã được định dạng. | |
scope | String | Phạm vi của biến lưu trữ trong var. |
Thuộc tính | Bắt buộc | Kiểu | Mặc định | Mô tả |
value | Yes | String | String được phân tích. | |
type | String | number | Quyết định xem String được cung cấp để phân tích là số, tiền tệ hoặc phần trăm, mặc định là số. (number, currency, percentage). | |
pattern | String | Khuôn mẫu của String đã cho trong thuộc tính value được phân tích. | ||
parseLocale | String | locale mặc định | Locale để sử dụng khi phân tích các giá trị bằng cách sử dụng khuôn mẫu (pattern) đã cho. | |
integerOnly | String | false | Chỉ định có hoặc không, chỉ các phần nguyên của giá trị được phân tích. | |
var | String | In ra trang | Tên của biến để lưu trữ kết quả phân tích, kết quả trả về là một số (java.lang.Number). | |
scope | String | page | Phạm vi của var để lưu trữ. |
Name | Required | Type | Default | Description |
value | True | Date | Ngày tháng hoặc thời gian, dùng để định dạng. | |
type | False | String | date | Quyết định xem giá trị trong thuộc tính value là ngày tháng hoặc thời gian, hoặc cả hai. (date, time, both) |
dateStyle | False | String | default | Cách định dạng kiểu ngày tháng. Định dạng ngày tháng có thể được xác định với ngữ nghĩa tương tự trong class java.text.DateFormat. |
timeStyle | False | String | default | Cách định dạng kiểu thời gian. Định dạng thời gian có thể được xác định với ngữ nghĩa tương tự trong class java.text.DateFormat. |
pattern | False | String | Mô hình được sử dụng cho ngày tháng và thời gian khi định dạng. | |
timeZone | False | String | Múi giờ mặc định | Múi giờ để đại diện cho thời gian định dạng. |
var | False | String | Ghi ra trang | Tên của các biến để lưu trữ kết quả định dạng. |
scope | False | String | page | Phạm vi lưu trữ của biến var. |
Mã | Mục đích | Ví dụ |
G | Định danh cho kỷ nguyên | AD |
y | Năm | 2002 |
M | Tháng | April & 04 |
d | Ngày trong tháng | 20 |
h | Giờ(0-12) | 12 |
H | Giờ (0 - 23) | 0 |
m | Phút | 45 |
s | Giây | 52 |
S | Mili giây | 970 |
E | Ngày trong tuần | Tuesday |
D | Ngày trong năm | 180 |
F | Ngày của tuần trong tháng | 2 (2nd Wed in month) |
w | Tuần trong năm | 27 |
W | Tuần trong tháng | 2 |
a | Ký hiệu a.m./p.m. | PM |
k | The hour(12-hour time) | 24 |
K | The hour(24-hour time) | 0 |
z | Múi giờ | Central Standard Time |
' | The escape for text | |
'' | The single quote |
- http://localhost:8080/JSTLTutorial/fmt_formatDate.jsp
Thuộc tính | Bắt buộc | Kiểu dữ liệu | Mặc định | Mô tả |
value | False | String | Nội dung trong body của thẻ | Chuỗi mô tả ngày tháng được phân tích. |
type | False | String | date | Quết định xem giá trị chỉ định trong value chứa ngày tháng (date) hay thời gian (time) hoặc cả hai (both). |
dateStyle | False | String | default | Chỉ định kiểu ngày tháng (SHORT, LONG, FULL, MEDIUM hoặc DEFAULT). |
timeStyle | False | String | default | Chỉ định kiểu thời gian (SHORT, LONG, FULL, MEDIUM hoặc DEFAULT). |
pattern | False | String | Chỉ định khuôn mẫu của chuỗi thời gian sẽ được phân tích. | |
timeZone | False | String | Múi giờ (time zone) mặc định | Múi giờ để diễn giải nếu chuỗi ngày tháng có chứa thông tin thời gian bất kỳ. |
parseLocale | False | String | Miền địa phương (locale) mặc định | Locale whose date time formatting will be used to parse the date time. Miền địa phương có định dạng ngày tháng thời gian sẽ được sử dụng để phân tích. |
var | False | String | In ra trang | Tên của biến dùng để lưu trữ kết quả phân tích được. |
scope | False | String | page | Phạm vi lưu trữ của biến var. |
- http://localhost:8080/JSTLTutorial/fmt_parseDate.jsp
Name | Required | Type | Default | Description |
baseName | True | String | Tên đầy đủ của gói tài nguyên. Giống với quy ước tên đầy đủ của Java ('.' Được sử dụng để tách các tên package). Ví dụ: org.o7planning.MyBundle | |
prefix | False | String | Khi được sử dụng với <fmt:message>, thuộc tính này là một tiền tố, chỉ định giá trị được thêm vào giá trị của key, để mỗi khi sử dụng bạn không cần phải cung cấp tiền tố lặp đi lặp lại. |
fmt_bundle.jsp<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <c:if test="${not empty param.language}"> <c:set var="language" value="${param.language}" scope="session"/> </c:if> <fmt:setLocale value="${language}" /> <fmt:setBundle basename="org.o7planning.bundles.MyBundle" /> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>fmt:bundle example</title> </head> <body> <h2>fmt:bundle example</h2> <form action=""> <table border="0"> <tr> <td> <fmt:message key="login.label.userName"/> </td> <td> <input type="text" name="userName" /> </td> </tr> <tr> <td> <fmt:message key="login.label.password"/> </td> <td><input type="text" name="userName" /></td> </tr> </table> <input type="submit" value="Submit"/> </form> </body> </html>Chạy ví dụ:Thật không may, khi đọc file .properties thông qua ResourceBundle, nó luôn đọc với mã hóa 'ISO-8859-1'. Bạn không thể sử dụng Unicode trong file properties. Cách tiếp cận thông thường là Escapse các ký tự Unicode trong file Properties. Và khi đó nó sẽ giống dưới đây:
Escapse ===>
- login.label.password=Mật khẩu
Khi bạn gõ chữ Unicode vào file properties trên "Properties File Editor" của Eclipse, nó sẽ tự động thay thế các ký tự không phải ASCII (None-ASCII).
- login.label.password=M\u1EADt kh\u1EA9u
- http://localhost:8080/JSTLTutorial/fmt_bundle.jsp?language=en
- http://localhost:8080/JSTLTutorial/fmt_bundle.jsp?language=vi
Chú ý:<!-- Nếu người dùng đã sử dụng một ngôn ngữ cụ thể khi xem một trang, biến 'language' được sét đặt có phạm vi 'session' giá trị của nó sẽ tồn tại trong suốt quá trình làm việc của người dùng, và website sẽ vẫn hiển thị theo ngôn ngữ đó, nếu trên tham số của trang không chỉ định một ngôn ngữ cụ thể khác. --> <c:set var="language" value="${param.language}" scope="session"/> <fmt:setLocale value="${language}" />fmt:messageThẻ <fmt:message> được sử dụng để hiển thị các thông báo bản địa hóa bằng cách thay thế các key (khóa) bởi các thông điệp thực tế nạp từ file tài nguyên (resource bundle). Thẻ này hoạt động kết hợp với <fmt:bundle> được sử dụng để tải các gói tài nguyên.Cú pháp:<fmt:message key="<string>" bundle="<string>" var="<string>" scope="<string>"/>Thuộc tính:
Thuộc tính | Bắt buộc | Kiểu | Mặc đinh | Mô tả |
key | False | String | Giá trị trong thân thẻ | Khóa của message để tìm kiếm trên bó tài nguyên. |
bundle | False | String | Default bundle | Nguồn tài nguyên để tìm khóa (key). |
var | False | String | Print to Page | Tên của biến, dùng để lưu trữ message tương ứng với key. |
scope | False | String | page | Phạm vi của biến var. |
Hướng dẫn lập trình Java Servlet/JSP
- Cài đặt Tomcat Server cho Eclipse
- Cài đặt Glassfish Web Server trên Windows
- Chạy ứng dụng Java web Maven trên Tomcat Maven Plugin
- Chạy ứng dụng Java Web Maven trên Jetty Maven Plugin
- Ví dụ luồng chạy ngầm trong ứng dụng Java Servlet
- Hướng dẫn lập trình Java Servlet cho người mới bắt đầu
- Hướng dẫn và ví dụ Java Servlet Filter
- Hướng dẫn lập trình Java JSP cho người mới bắt đầu
- Hướng dẫn sử dụng Java JSP Standard Tag Library (JSTL)
- Cài đặt Web Tools Platform cho Eclipse
- Tạo một ứng dụng Login đơn giản và bảo mật với Java Servlet Filter
- Tạo một ứng dụng Java Web đơn giản sử dụng Servlet, JSP và JDBC
- Upload và download file lưu trữ trên ổ cứng với Java Servlet
- Upload và Download file từ Database sử dụng Java Servlet
- Hiển thị ảnh từ database với Java Servlet
- Redirect 301 chuyển hướng vĩnh viễn trong Java Servlet
- Làm sao tự động chuyển hướng http thành https trong ứng dụng Java Web
- Hướng dẫn sử dụng Google reCAPTCHA trong ứng dụng Web Java
- Các hướng dẫn Java Collections Framework
- Các hướng dẫn Java IO
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các hướng dẫn Struts2 Framework
- Các hướng dẫn Spring Boot
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java Web Services
- Các hướng dẫn Java Application Servers
Hướng dẫn lập trình Java Servlet/JSP
- Cài đặt Tomcat Server cho Eclipse
- Cài đặt Glassfish Web Server trên Windows
- Chạy ứng dụng Java web Maven trên Tomcat Maven Plugin
- Chạy ứng dụng Java Web Maven trên Jetty Maven Plugin
- Ví dụ luồng chạy ngầm trong ứng dụng Java Servlet
- Hướng dẫn lập trình Java Servlet cho người mới bắt đầu
- Hướng dẫn và ví dụ Java Servlet Filter
- Hướng dẫn lập trình Java JSP cho người mới bắt đầu
- Hướng dẫn sử dụng Java JSP Standard Tag Library (JSTL)
- Cài đặt Web Tools Platform cho Eclipse
- Tạo một ứng dụng Login đơn giản và bảo mật với Java Servlet Filter
- Tạo một ứng dụng Java Web đơn giản sử dụng Servlet, JSP và JDBC
- Upload và download file lưu trữ trên ổ cứng với Java Servlet
- Upload và Download file từ Database sử dụng Java Servlet
- Hiển thị ảnh từ database với Java Servlet
- Redirect 301 chuyển hướng vĩnh viễn trong Java Servlet
- Làm sao tự động chuyển hướng http thành https trong ứng dụng Java Web
- Hướng dẫn sử dụng Google reCAPTCHA trong ứng dụng Web Java
- Các hướng dẫn Java Collections Framework
- Các hướng dẫn Java IO
- Java cơ bản
- Các hướng dẫn Java Date Time
- Các hướng dẫn Struts2 Framework
- Các hướng dẫn Spring Boot
- Các hướng dẫn Spring Cloud
- Các hướng dẫn Java Web Services
- Các hướng dẫn Java Application Servers
Các bài viết mới nhất
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Radio
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Hướng dẫn và ví dụ Flutter SharedPreferences
- Tạo Module trong Flutter
- Flutter upload ảnh sử dụng http và ImagePicker
- Bài thực hành Dart http CRUD
- Hướng dẫn và ví dụ Flutter image_picker
- Flutter GridView với SliverGridDelegate tuỳ biến
- Hướng dẫn lập trình Java Servlet/JSP
Từ khóa » Thư Viện Trong Jsp
-
Thư Viện Thẻ Chuẩn - Standard Tag Library (JSTL) Trong JSP
-
Java JSP Standard Tag Library (JSTL) Tutorial With Examples
-
Hướng Dẫn Sử Dụng JSP Standard Tag Library (JSTL) Trong Java
-
Download Thư Viện Jstl Trong Jsp Archives
-
Sự Khác Nhau Giữa Jsp Và Jstl Là Gì ? Nếu Khác Người ... - In4tintuc
-
Jsp Standard Tag Library - Tài Liệu Text - 123doc
-
Custom Tag Library – Tạo Ra Tag Library Trong JSP - Kieu Trong Khanh
-
[Update] Hướng Dẫn Sử Dụng Java JSP Standard Tag Library (JSTL)
-
JSTL Functions (TLDDoc Generated Documentation)
-
Lê Lục Bình - HelpEx
-
JavaServer Pages Standard Tag Library (JSTL) - KungFu Tech
-
Sự Khác Nhau Giữa Jsp Và Jstl Là Gì ? Nếu Khác Người Khác ...
-
[Lập Trình Java Web] - Bài 15: JSP Standard Tags Library (JSTL ...
-
[Spring Framework] JSTL - Code Lean