Cú pháp trong JSP
Chương này trình bày về cú pháp đơn giản (ví dụ: các phần tử) liên quan tới lập trình JSP.
Scriptlet trong JSP
Scriptlet có thể chứa bất kỳ số lượng lệnh, biến, khai báo phương thức hoặc Expression của ngôn ngữ Java nào mà là hợp lệ trong ngôn ngữ Scripting.
Sau đây là cú pháp của Scriptlet trong JSP:
<% code fragment %>
Bạn có thể viết XML tương đương với cú pháp trên như sau:
<jsp:scriptlet> code fragment </jsp:scriptlet>
Bất kỳ text, thẻ HTML, hoặc phần tử JSP nào bạn viết phải ở bên ngoài Scriptlet đó. Sau đây là ví dụ đơn giản cho JSP:
<html> <head><title>Hello World</title></head> <body> Hello World!<br/> <% out.println("Your IP address is " + request.getRemoteAddr()); %> </body> </html>
Ghi chú: Giả sử rằng Apache Tomcat được cài đặt trong C:\apache-tomcat-7.0.2 và môi trường của bạn được cài đặt theo hướng dẫn.
Bạn giữ code trên trong JSP file là hello.jsp và đặt file này bên trong thư mục C:\apache-tomcat-7.0.2\webapps\ROOT và thử nó bằng việc cung cấp địa chỉ URL là http://localhost:8080/hello.jsp. Nó sẽ cho kết quả sau:
Declarations trong JSP
Một Declaration khai báo một hoặc nhiều biến hoặc phương thức mà bạn có thể sử dụng trong Java code và sau đó trong Java file. Bạn phải khai báo biến hoặc phương thức trước khi bạn sử dụng nó trong JSP file.
Sau đây là cú pháp của JSP Declaration:
<%! declaration; [ declaration; ]+ ... %>
Bạn có thể viết XML tương đương với cú pháp trên như sau:
<jsp:declaration> code fragment </jsp:declaration>
Dưới đây là ví dụ đơn giản cho JSP Declaration:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
Expression trong JSP
Một phần tử Expression trong JSP chứa một biểu thức ngôn ngữ Scripting mà được tính toán, được biến đổi thành một String, và được chèn tại nơi Expression đó xuất hiện trong JSP file.
Bởi vì giá trị của một Expression được biến đổi thành một String, bạn có thể sử dụng một Expression bên trong một dòng text, có hoặc không nó được tag với HTML, trong một JSP file.
Phần tử Expression có thể chứa bất kỳ expression nào mà là hợp lệ với Java Language Specification, nhưng bạn không thể sử dụng một dấu chấm phảy ở phần cuối của một expression.
Sau đây là cú pháp cho Expression trong JSP:
<%= expression %>
Bạn có thể viết XML tương đương với cú pháp trên như sau:
<jsp:expression> expression </jsp:expression>
Dưới đây là ví dụ đơn giản về Expression trong JSP:
<html> <head><title>A Comment Test</title></head> <body> <p> Today's date: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>
Nó sẽ cho kết quả sau:
Today's date: 11-Sep-2010 21:24:25
Comment trong JSP
Comment trong JSP đánh dấu text hoặc các lệnh mà JSP container nên bỏ qua. Một JSP comment là hữu ích khi bạn muốn ẩn hoặc bỏ qua phần đó trong JSP page.
Sau đây là cú pháp của Comment trong JSP:
<%-- This is JSP comment --%>
Ví dụ đơn giản sau minh họa Comment trong JSP:
<html> <head><title>A Comment Test</title></head> <body> <h2>A Test of Comments</h2> <%-- This comment will not be visible in the page source --%> </body> </html>
Nó sẽ cho kết quả sau:
A Test of Comments
Có một số chỉ lệnh đặc biệt mà bạn có thể sử dụng trong nhiều trường hợp khác nhau để chèn các comment hoặc các ký tự mà được đối xử một cách đặc biệt. Sau đây là liệt kê các chỉ lệnh này:
Cú pháp | Mục đích |
---|---|
<%-- comment --%> | Một JSP comment. Được bỏ qua bởi JSP engine |
<!-- comment --> | Một HTML comment. Được bỏ qua bởi trình duyệt |
<\% | Biểu diễn một static <% literal. |
%\> | Biểu diễn một static %> literal. |
\' | Một trích dẫn đơn trong một thuộc tính mà sử dụng các trích dẫn đơn |
\" | Một trích dẫn kép trong một thuộc tính mà sử dụng các trích dẫn kép |
Directive trong JSP
Một directive trong JSP ảnh hưởng tới cấu trúc tổng thể của lớp Servlet. Nó thường có form sau:
<%@ directive attribute="value" %>
Có 3 loại thẻ directive trong JSP:
Directive | Miêu tả |
---|---|
<%@ page ... %> | Định nghĩa một thuộc tính page-dependent (phụ thuộc trang), như ngôn ngữ scripting, trang lỗi và các yêu cầu bộ đệm |
<%@ include ... %> | Include một file trong suốt giai đoạn phiên dịch |
<%@ taglib ... %> | Khai báo một thư viện thẻ, chứa các action tùy biến, được sử dụng trong trang đó |
Chúng tôi sẽ giải thích JSP Directive trong chương riêng sau: Directive trong JSP
Action trong JSP
Action trong JSP sử dụng các chỉ lệnh trong cú pháp XML để điều khiển hành vi của Servlet engine. Bạn có thể chèn động một file, tái sử dụng các thành phần JavaBeans, chuyển người sử dụng tới trang khác, hoặc tạo HTML cho Java Plugin.
Chỉ có một cú pháp cho phần tử action trong JSP, khi nó phù hợp tiêu chuẩn XML:
<jsp:action_name attribute="value" />
Về cơ bản, các phần tử action trong JSP là các hàm được định nghĩa trước và có các JSP action sau:
Cú pháp | Mục đích |
---|---|
jsp:include | Include một file tại thời điểm trang đó được yêu cầu |
jsp:useBean | Tìm kiếm hoặc thuyết minh một JavaBean |
jsp:setProperty | Thiết lập thuộc tính của một JavaBean |
jsp:getProperty | Chèn thuộc tính của một JavaBean vào trong output |
jsp:forward | Chuyển người yêu cầu tới trang mới |
jsp:plugin | Tạo code cho trình duyệt riêng mà tạo một thẻ OBJECT hoặc EMBED cho Java plugin |
jsp:element | Định nghĩa động các phần tử XML |
jsp:attribute | Định nghĩa động thuộc tính của phần tử XML đã được định nghĩa |
jsp:body | Định nghĩa động phần thân của phần tử XML đã được định nghĩa |
jsp:text | Sử dụng để viết template text trong các JSP page và tài liệu JSP |
Chúng tôi sẽ giải thích JSP action trong chương riêng Action trong JSP
Các đối tượng ẩn (Implicit) trong JSP
JSP hỗ trợ 9 biến được định nghĩa tự động, mà cũng được gọi là các đối tượng ẩn (implicit object). Các biến đó là:
Đối tượng | Miêu tả |
---|---|
request | Đây là đối tượng HttpServletRequest mà liên kết với Request |
response | Đây là đối tượng HttpServletResponse mà liên kết với Response tới Client |
out | Đây là đối tượng PrintWriter được sử dụng để gửi output tới Client |
session | Đây là đối tượng HttpSession mà liên kết với Request |
application | Đây là đối tượng ServletContext mà liên kết với application context |
config | Đây là đối tượng ServletConfig mà liên kết với page |
pageContext | Sự gói gọn này sử dụng các đặc trưng Server-Spcific giống như hiệu năng cao JspWriters. |
page | Được sử dụng để gọi các phương thức được định nghĩa bởi lớp Servlet đã được phiên dịch |
Exception | Đối tượng Exception cho phép dữ liệu exception để được truy cập bởi JSP đã chỉ rõ |
Chúng tôi sẽ giải thích các Đối tượng ẩn trong JSP trong chương: Đối tượng ẩn (Implicit) trong JSP.
Điều khiển luồng trong JSP
JSP cung cấp đầy đủ tính năng của Java để được nhúng trong các Web application. Bạn có thể sử dụng tất cả APIs và xây dựng tất cả các khối Java trong chương trình JSP của bạn, bao gồm các lệnh điều khiển luồng, vòng lặp, …
Các lệnh điều khiển luồng trong JSP
Các khối if...else khởi đầu giống như một Scriptlet thông thường, nhưng Scriptlet được đóng tại mỗi dòng với HTML text được bao giữa các thẻ Scriptlet.
<%! int day = 3; %> <html> <head><title>IF...ELSE Example</title></head> <body> <% if (day == 1 | day == 7) { %> <p> Today is weekend</p> <% } else { %> <p> Today is not weekend</p> <% } %> </body> </html>
Nó sẽ cho kết quả sau:
Today is not weekend
Bây giờ, bạn xem xét khối switch...case mà có một chút khác biệt bởi sử dụng lệnh out.printIn() và bên trong các Scriptlet:
<%! int day = 3; %> <html> <head><title>SWITCH...CASE Example</title></head> <body> <% switch(day) { case 0: out.println("It\'s Sunday."); break; case 1: out.println("It\'s Monday."); break; case 2: out.println("It\'s Tuesday."); break; case 3: out.println("It\'s Wednesday."); break; case 4: out.println("It\'s Thursday."); break; case 5: out.println("It\'s Friday."); break; default: out.println("It's Saturday."); } %> </body> </html>
Nó sẽ cho kết quả sau:
It's Wednesday.
Các lệnh vòng lặp trong JSP
Bạn có thể sử dụng 3 kiểu khối vòng lặp cơ bản trong Java là: for, while, và do…while trong chương trình JSP.
Dưới đây là ví dụ về vòng lặp for trong JSP:
<%! int fontSize; %> <html> <head><title>FOR LOOP Example</title></head> <body> <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %> <font color="green" size="<%= fontSize %>"> JSP Tutorial </font><br /> <%}%> </body> </html>
Nó sẽ cho kết quả sau:
JSP Tutorial
JSP Tutorial
JSP Tutorial
Ví dụ trên có thể được viết bởi sử dụng vòng lặp while trong JSP như sau:
<%! int fontSize; %> <html> <head><title>WHILE LOOP Example</title></head> <body> <%while ( fontSize <= 3){ %> <font color="green" size="<%= fontSize %>"> JSP Tutorial </font><br /> <%fontSize++;%> <%}%> </body> </html>
Nó sẽ cho kết quả sau:
JSP Tutorial JSP Tutorial JSP Tutorial
Các toán tử trong JSP
JSP hỗ trợ tất cả toán tử logic và toán tử số học được hỗ trợ bởi Java. Bảng sau cung cấp danh sách tất cả toán tử với quyền ưu tiên cao nhất được liệt kê ở trên cùng, và quyền thấp nhất là ở dưới cùng.
Bên trong một expression, toán tử có quyền ưu tiên cao hơn sẽ được tính toán trước.
Loại | Toán tử | Thứ tự ưu tiên |
---|---|---|
Postfix | () [] . (toán tử dot) | Trái sang phải |
Unary | ++ - - ! ~ | Phải sang trái |
Tính nhân | * / % | Trái sang phải |
Tính cộng | + - | Trái sang phải |
Dịch chuyển | >> >>> << | Trái sang phải |
Quan hệ | > >= < <= | Trái sang phải |
Cân bằng | == != | Trái sang phải |
Phép AND bit | & | Trái sang phải |
Phép XOR bit | ^ | Trái sang phải |
Phép OR bit | | | Trái sang phải |
Phép AND logic | && | Trái sang phải |
Phép OR logic | || | Trái sang phải |
Điều kiện | ?: | Phải sang trái |
Gán | = += -= *= /= %= >>= <<= &= ^= |= | Phải sang trái |
Dấu phảy | , | Trái sang phải |
Literal trong JSP
JSP Expression Language (EL) định nghĩa các literal sau:
Boolean: true và false
Integer: như trong Java
Floating point: như trong Java
String: với các trích dẫn đơn và kép; " được thay thế bởi \", ' được thay thế bởi \', và \ được thay thế bởi \\.
Null: null
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.
Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack
Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học JSP khác tại VietJack:
- JSP - Cấu trúc
- JSP - Vòng đời (Life Cycle)
- JSP - Cú pháp
- JSP - Directive
- JSP - Action
- JSP - Đối tượng ẩn (Implicit)