Cơ bản JSP trong lập trình java
Nội dung bài học
JSP là gì?
- Vòng đời của một JSP
- Mối quan hệ giữa JSP và Servlet
- Kỹ thuật sinh nội dung động với JSP
- Gọi mã nguồn Java sử dụng JSP scripting elements
- Xử lý lỗi
Thế nào là Static & Dynamic Contents?
Static contents:
Điển hình là các trang
HTML tĩnh
Hiển thị như nhau cho tất cả mọi người
Dynamic contents:
Nội dung được sinh tự động theo 1 số conditions
Các Conditions có thể là Tài khoản người dùng Thời gian
Giá trị User nhập vào trên forms hoặc qua lựa chọn
Trang JSP là gì?
Thiết kế các trang web sử dụng HTML chuẩn
Vị trí nào cần tạo ra nội dung động chỉ cần chèn các thẻ Java vào bên trong HTML.
Toàn bộ trang JSP được thông dịch sang Servlet (một lần) và Servlet được thực thi khi yêu cầu của client gửi đến
Ví dụ:
<html>
<bodY>
Hello World!
<br>
Current time is <%= new java.util.Date() %> </body>
</html>
JSP và Servlet
* Servlet:
+) Thuận lợi:
- Đọc dữ liệu từ Form
- Đọc các HTTP Request Header
- Gán HTTP Status Code và Response Header -Sử dụng Cookie và Session
- Chia sẽ dữ liệu giữa các Servlet
- Xử lý cơ sở dữ liệu, ...
+) Bất lợi:
- Sử dụng câu lệnh println để phát sinh HTML
- Khi thay đổi, phải biên dich lại, (đóng gói lại), deploy lại
=> Servlet rất mạnh về xử lý và điều phối, nhưng Servlet lại rất yếu về tạo giao diện và bảo trì web
* JSP:
Đơn giản hóa việc phát triển ứng dụng Web với JSP,
JavaBeans và custom tags
Hỗ trợ tái sử dụng phần mềm qua các components (JavaBeans, Custom tags)
Tự động triển khai
Tự biên dịch lại các trạng JSP khi có thay đổi
Độc lập playform
=> JSP mạnh về xử lý hiển thị nhưng lại yếu về xử lý nghiệp vụ và điều phối
Trong thực tế, chúng ta kết hợp sức mạnh của Servlet và JSP vào mô hình MVC (Model-View-Controller)
• Các Servlet đóng vai trò làm Controller
• Các trang JSP đóng vai trò làm View
• Model: sử dụng các công nghệ sẵn có khác (JDBC, hibernate, ...)
Vòng đời của một trang JSP
Các giai đoạn trong vòng đời trang JSP
• Translation
• Compile
• Execution
Giai đoạn Translation/Compilation
• Các file JSP được dịch thành mã Servlet. Sau đó mã này mới được biên dịch tiếp
• Thực hiện tự động nhờ container, ở lần đầu tiên trang JSP được truy cập (hoặc khi chỉnh sửa)
• Với trang JSP tên là "pageName", mã dịch sẽ nằm ở
<AppServer_HOME>/work/Standard Engine/localhost/context_root/pageName$jsp.java
• Ví dụ:
• <AppServer_HOME>/work/Standard Engine/localhost/date/mdex$jsp.java
• Dữ liệu tính được chuyển thành mã Java, tác động tới output stream trả dữ liệu về cho client
• Các phần tử JSP được xử lý khác nhau:
• Các chỉ dẫn (Directives) được dùng để điều khiển Web container biên dịch và thực thi trang JSP
• Phần tử Scripting được thêm vào lớp servlet tương ứng của trang JSP
• Phần tử dạng <jsp:xxx .../> được chuyển thành lời gọi phơng thức tới JavaBeans components
Các phương thức trong giai đoạn thực thi
Khởi tạo trang JSP
• Có thể khai báo phương thức khởi tạo thực hiện nhiệm vụ
• Đọc tham số cấu hình
• Khởi tạo tài nguyên
• Thực hiện bất kỳ công việc khởi tạo nào khác bằng việc override phương thức jspInit() của giao diện JspPage
Kết thúc trang JSP
• Khai báo phương thức thực hiện nhiệm vụ
• Đọc tham số cấu hình
• Giải phóng tài nguyên
• Thực hiện bất kỳ công việc dọn dẹp nào bằng cách override phương thức jspDestroy() của giao diện JspPage
Các bước phát triển ứng dụng Web với JSP
Viết code (và biên dịch) cho các Web component (Servlet or JSP), các helper classes sử dụng trong web component
Tạo các tài nguyên tĩnh (Images, các trang HTML)
Viết file deployment descriptor (web.xml)
Build úng dụng Web (Tạo file *.war hoặc thư mục dạng chưa đóng gói nhưng triển khai được)
Triển khai ứng dụng Web trên 1 Web container
• Web clients có thể truy cập ứng dụng qua URL
JSP "là" Servlet!
Các trang JSP được dịch thành servlet
Tomcat biên dịch greeting.jsp thành greeting$jsp.java
Scriptlet (Java code) trong trang JSP sẽ được chèn vào trong phương thức jspServiceQ của servlet tương ứng
Các đối tượng Servlet có thể được truy cập từ trang JSP, mã nguồn phát triển JavaBeans, hoặc custom tag.
Kỹ thuật sinh nội động trong JSP
Có thể áp dụng các kỹ thuật khác nhau, tùy các yếu tố sau
• Kích thước, độ phức tạp của project
• Yêu cầu về tái sử dụng code, bảo trì, ...
Có đầy đủ các kỹ thuật từ đơn giản tới phức tạp
Gọi mã Java trực tiếp trong JSP
Gọi mã Java gián tiếp trong JSP
Sử dụng JavaBeans
Tự phát triển và sử dụng các custom tags
Sử dụng 3rd-party custom tags hoặc JSTL (JSP Standard Tag Library)
Sử dụng mẫu thiết kế MVC
Sử dụng Model2 frameworks đã được kiểm chứng
Gọi mã nguồn Java sử dụng JSP Scripting elements
Cho phép chèn các đoạn mã nguồn java vào bên trong trang JSP
Khi trang JSP thông dịch các đoạn mã nguồn này sẽ được
chèn vào bên trong phương thức _jspService của Servlet.
Có 3 dạng:
• Expressions: <%= Expressions %>
• Scriptlets: <% Code %>
• Declarations: <%! Declarations %>
JSP Expression
Định dạng:
• JSP : <%= Java Expression %>
Lưu ý:- Không được phép sử dụng dấu ; trong các
Expression
JSP Expression Kết quả
Expression sau tính toán ra kết quả sẽ được chuyển thành một String
String được chèn trực tiếp vào bên trong Ouput Stream của Servlet.
Kết quả tương tự như:
• out.println(Expression);
Trong Expression có thể sử dụng các biến:
• Các biến được định nghĩa tường minh
• Các đối tượng được tạo sẵn ngầm định
JSP Scriptlet
Định dạng:
• JSP : <% Java Code %>
JSP Scriptlet
Kết quả:
• Sau khi trang JSP được thông dịch sang Servlet, mã nguồn java trong scriptlet được chèn tương ứng vào bên trong phương thức _jspServiceO
Trong Scriptlet có thể sử dụng các biến:
• Các biến được định nghĩa tường minh
• Các đối tượng được tạo sẵn ngầm định
Trong scriptlet được phép khai báo biến, sử dụng các câu
lệnh điều kiện, vòng lặp, gọi phương thức,...
Sử dụng Scriptlet + Expression + HTML
JSP Declaration
Định dạng:
• JSP : <%! Khai báo các thuộc tính
• Định nghĩa các phương thức %>
JSP Declaration
Sau khi trang JSP được thông dịch thành Servlet thì các khai báo thuộc tính và định nghĩa phương thức được chèn vào bên trong Servlet.
JSP Declaration được sử dụng với Scriptlet và Expression
JSP Declaration được sử dụng với Scriptlet và Expression
JSP Declaration cho phép -Định nghĩa phương thức mới
Cài đặt lại các phương thức jspInit(), jspDestroy
Không được phép cài đặt lại phương thức _jspService()
JSP Declaration không được phép sử dụng các đối tượng được định nghĩa ngầm định
Khai báo JSP Declaration
Post a Comment