TiiL Tutorials
@TinhocTiiL

Bài 1 – Tổng quan vể phát triển ứng dụng web với Java EE

Mục tiêu bài học:

  • Giới thiệu Java EE
  • Mô hình web service trên Java EE
  • Web application,components, và Web container
  • Cấu hình ứng dụng Web
  • Quá trình phát triển của kiến trúc ứng dụng Web
  • Một số web application framework

MỞ ĐẦU

Sự phát triển như vũ bão của công nghệ thông tin, nhất là mạng Internet đã khiến cho mô hình lập trình ứng dụng thay đổi rất nhiều. Các chương trình cần phải tương tác được với người dùng, chia sẻ tài nguyên, kết nối từ xa, phân tán dữ liệu …Với những yêu cầu trên mô hình khách/chủ (client/server) đã ra đời và tỏ ra rất hiệu quả trong thời gian dài

Tuy nhiên cả máy khách và máy chủ ngày càng trở nên quá tải bởi độ phức tạp và yêu cầu của người dùng. Từ đó phát sinh mô hình phát triển ứng dụng đa tầng (multi-tier).

Mục tiêu là làm cho máy khách trở nên gọn nhẹ, dễ cấu hình. Tất cả mã nguồn lõi, cài đặt, xử lý đều thực hiện trên máy chủ, do đó chương trình trở nên dễ quản lý, các máy khách luôn được phục vụ với phiên bản chương trình mới nhất

Web là một ví dụ điển hình nhất của mô hình ứng dụng đa tầng

Mô hình ứng dụng đa tầng đáp ứng được nhu cầu về mặt tốc độ, bảo mật, cũng như sự đáng tin cậy của ứng dụng


Java EE là gì

Java EE là viết tắt của Java Platform, Enterprise Edition là nền tảng tiêu chuẩn và mở để xây dựng, phát triển các ứng dụng doanh nghiệp lớn, bao gồm: ứng dụng mạng, web, đa tầng, phân tán… J2EE là mở rộng của J2SE.

Các phiên bản: • J2EE 1.2 (December 12, 1999); • J2EE 1.3 (September 24, 2001); • J2EE 1.4 (November 11, 2003); • Java EE 5 (May 11, 2006); • Java EE 6 (December 10, 2009);  Java EE 7 (May 28, 2013), và   Java EE 8 (August 31, 2017),     Jakatar EE 9

J2EE cung cấp các API cho việc phát triển ứng dụng nhằm: Giảm thời gian phát triển ứng dụng; Giảm độ phức tạp của ứng dụng; Tăng hiệu suất ứng dụng

Là kiến trúc ứng dụng đa tầng với ưu điểm:  Khả năng mở rộng; Khả năng truy cập; Khả năng quản lý


Java EE Server?

Là một ứng dụng phía máy chủ thực thi các Java EE platform APIs như Servlet, JSP, JSF, EJB .. và cung cấp các dịch vụ Java EE như SOAP, Restful … Java EE servers cũng được gọi là các server ứng dụng bởi vì chúng có thể cung cấp dữ liệu ứng dụng các các clients khác nhau như: Java desktop clients, Web based Client on web browser, Mobile clients, applet,, và cũng chạy cả các EJB Components.
Dưới đây là một số Java ee Servers nổi tiếng.
1- Oracle GlassFish Application Server
2- Oracle Weblogic Application server
3- IBM Websephere Application server
4- Apache Tomcat Application Server  (tham khảo Cài đặt và cấu hình Eclipse IDE)
5- Jboss Application Server

Java EE servers cung cấp dịch vụ lưu trữ cho một số thành phần ứng dụng và sử dụng các containers khác nhau để cung cấp dịch vụ cho các thành phần này.

Java EE containers act as an interface between different components like EJB, JSP, JSF, Java mail etc to provide desired functionality. The platform defined the functionality of the containers which are different for different containers. These server containers allows different components to work togethers to provide required functionality of Java EE applications.
There are mostly three different types of containers used in Java EE Servers which are Web Container, EJB Container and Application Client Container

1- The Web Container

Cung cấp giao diện giao tiếp giữa webserver và các thành phần web như Serlet và JSP. Trách nhiệm chính của web container là

  • quản lý vòng đời các thành phần web.
  • gửi các yêu cầu đến các thành phần ứng dụng
  • và cung cấp interfaces to context data.

Servlet và JSP – đây là Web-based component chạy ở bên trong Web container, được hỗ trợ bởi Web Server. Web
container là một môi trường run-time cho servlet và jsp. Serlet và JSP cung cấp một cơ chế cho việc chuẩn bị, xử lý, định dạng nội dung động

2- The EJB Container

Enterprise JavaBean (EJB) – EJB component là business component chạy bên trong EJB container. EJB component là phần nhân, cốt lõi của ứng dụng J2EE. EJB container cung cấp các dịch vự quản lý transaction, bảo mật, quản lý trạng thái, quay vòng tài nguyên (resource pooling).


Java Web Application

Web Application là 1 gói triển khai, gồm:

  • Web components (Servlet và JSP)
  • Tài nguyên tĩnh như images
  • Helper classes (sử dụng bởi web components)
  • Thư viện Libraries
  • Deployment desciptor (web.xml)

Web Application có thể được tổ chức thành:

  • Phân cấp các thư mục và files ( dạng chưa đóng gói)
  • File *.WAR: dạng đóng gói ( bên trong có phân cấp ), sử dụng khi muốn triển khai trên một remote machine

Cấu hình ứng dụng web  (web.xml)

Thông số cấu hình ứng dụng web được đặc tả trong file web.xml, ta sẽ xem xét cụ thể ở bài sau


Quá trình phát triển của kiến trúc ứng dụng Web Java

  1. NoMVC,
  2. MVC model 1 (Page centric),
  3. MVC model 2 (servlet centric),
  4. Web Application frameworks: Struts, String MVC, Hibernate, …
  5. Standard-based Web Application frameworks: JavaServer Faces

MVC model 1 (Page centric)

Servlet và JSP là 2 công nghệ chính để phát triển ứng dụng web.

Servlet được coi là vượt trội hơn so với CGI. Công nghệ Servlet không tạo ra tiến trình (process), thay vào đó nó tạo luồng riêng (thread) để xử lý yêu cầu. Ưu điểm của việc tạo luồng so với tiến trình là nó không phân bổ vùng bộ nhớ riêng biệt. Do đó, nhiều yêu cầu tiếp theo có thể được servlet xử lý dễ dàng.

Tuy vậy, vấn đề trong công nghệ Servlet là:  Servlet cần phải biên dịch lại nếu bất kỳ mã thiết kế nào bị sửa đổi. Nó không cung cấp sự tách biệt của mối quan tâm. Logic nghiệp vụ và trình diễn được trộn lẫn với nhau.

JSP khắc phục hầu hết các vấn đề Servlet. tách biệt presentation và business logic. Ta không cần deploy lại ứng dụng nếu trang JSP được thay đổi

JSP cung cấp hỗ trợ để phát triển ứng dụng web sử dụng JavaBean, custom tagsJSTL để chúng ta có thể đặt tách biệt the business logic ra khỏi JSP giúp việc test và debug trở nên dễ dàng hơn.

 

Hình trên là mô tả kiến trúc model1 architecture.

  1. Trình duyệt gửi yêu cầu một JSP page
  2. JSP truy cập Java Bean và triệu gọi các business logic
  3. Java Bean kết nối tới database và get/save data
  4. Response được gửi về trình duyệt  được tạo ra bởi JSP

Nhận xét:

  • Các trang JSP xử lý tất cả: presentation, control, và business process
  • control, và business process logic được code cứng trong các trang JSP dưới dạng JavaBeans, Scriptlets và Expression
  • việc chuyển trang được thực hiện
    • khi user clik vào một siêu liên kết:
      • ví dụ: <a href = “find.jsp”>
    • hoặc Submit form
      • ví dụ: <form action=”seach.jsp”>

Ưu điểm: Nhanh, dễ

Nhược điểm:

  • Kiểm soát điều hướng phi tập trung vì mỗi trang có chứa các logic để xác định trang kế tiếp. Nếu tên một trang JSP bị thay đổi mà nó lại được tham chiếu tới bởi các trang khác, chúng ta bắt buộc cần đổi tên nó trong tất cả các trang tham chiếu đó, việc này dẫn tới vấn đề maintenance problem.
  • Mất thời gian: Ta phải dành nhiểu thời gian hơn để phát triển các custom tags trong JSP. So that we don’t need to use scriptlet tag.
  • Khó mở rộng  

Model 2 (MVC) Architecture

Model 2 is based on the MVC (Model View Controller) design pattern. The MVC design pattern consists of three modules model, view and controller.

Model The model represents the state (data) and business logic of the application.

View The view module is responsible to display data i.e. it represents the presentation.

Controller The controller module acts as an interface between view and model. It intercepts all the requests i.e. receives input and commands to Model / View to change accordingly.

mvc architecture

Advantage of Model 2 (MVC) Architecture

  • Navigation control is centralized Now only controller contains the logic to determine the next page.
  • Easy to maintain
  • Easy to extend
  • Easy to test
  • Better separation of concerns

Disadvantage of Model 2 (MVC) Architecture

  • We need to write the controller code self. If we change the controller code, we need to recompile the class and redeploy the application.

 

 

Avatar
https://khoacntt.ntu.edu.vn/giang-vien/mai-cuong-tho

một GV Đại học. TiiL đã phụ trách một số môn học như: Lập trình Java, Phát triển web với Java, Lập trình thiết bị di động, Lập trình hệ thống nhúng và IoT.

Comments are closed.