Vì sao tránh viết code JAVA (Scriptlet) trong file JSP?

Cái tiêu đề nói lên tất cả, vì sao nên tránh viết code JAVA (Scriptlet) trong file JSP? Đây là một trong những câu hỏi phóng vấn kinh điển dành cho các lập trình viên 2-3 năm. Nhiều khi một số lập trình viên lâu năm chưa chắc có thẻ trả lời được câu hỏi này. Đây là câu trả lời dựa theo kinh nghiệm của mình có được, nếu các bạn có góp ý gì vui lòng comment bên dưới bài viết này để mình bổ sung vào bài viết nếu đúng nhé!

Một số bạn nếu đang đọc bài viết này, vẫn chưa biết và tìm hiểu scriptlet trong jsp là gì? Thì mời bạn đọc truy cập vào link này để tìm hiểu thêm.

Thực tế khi dùng code JAVA vào file jsp (Scriptlet):

Đây là một mẫu code đơn giản khi viết code scriptlet trong file jsp :

<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>

Việc sử dụng scriptlets (như cách code <% %>) trong JSP thực sự rất nản lòng kể từ khi bắt đầu các taglibs (như JSTL ) và EL ( Expression Language , cách code bắt đầu bằng ${}).

Vậy lý do vì sao?

Những nhược điểm chính của scriptlet là:

  1. Khả năng sử dụng lại (Reusability: bạn không thể sử dụng lại scriptlets.
  2. Thay thế (Replaceability): bạn không thể sử dụng scriptlets abstract.
  3. OO-ability: bạn không thể sử dụng thừa kế.
  4. Khả năng gỡ lỗi (Debuggability): nếu scriptlet ném một ngoại lệ nửa chừng, tất cả những gì bạn nhận được đều là một trang trống hoặc thông báo lỗi.
  5. Khả năng kiểm tra (Testability): scriptlets không phải là unit-testable.

Bản thân Sun Oracle cũng đề xuất các quy ước mã hóa JSP để tránh sử dụng scriptlets bất cứ khi nào có cùng chức năng bởi các lớp (tag). Dưới đây là một số trích dẫn liên quan:

Từ JSP 1.2 Thông số kỹ thuật, rất khuyến khích sử dụng JSTL Tag Tag Library (JSTL) trong ứng dụng web của bạn để giúp giảm bớt sự cần thiết của các script JSP trong các trang  của bạn. Các trang sử dụng JSTL nói chung dễ dàng đọc và duy trì hơn….

Nếu có thể, tránh scriptlets JSP bất cứ khi nào các thư viện thẻ chuẩn JSTL cung cấp chức năng tương đương. Điều này làm cho các trang dễ dàng hơn trong việc đọc và duy trì, giúp tách logic business riêng biệt từ logic trình bày và sẽ làm cho trang của bạn trở nên dễ dàng phát triển thành các trang dạng JSP 2.0 (JSP 2.0 Specification hỗ trợ nhưng bỏ qua việc sử dụng scriptlets).

Với tinh thần chấp nhận khuôn mẫu thiết kế mô hình model-view-controller (MVC) để giảm sự ghép nối giữa các tầng trình bày từ logic business, các scriptlet JSP không nên được sử dụng để viết logic business. Thay vào đó, các scriptlet JSP được sử dụng nếu cần thiết để chuyển đổi dữ liệu (còn được gọi là “các đối tượng giá trị”- “also called “value objects”) được trả về từ việc xử lý các yêu cầu của người dùng.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x