Nghiên cứu nền tảng Java cơ bản và tìm hiểu Struts Framework

MỤC LỤC

Nghiên cứu công nghệ Java

Lớp cơ sở dẫn xuất

Một lớp được xây dựng thông qua kế thừa từ một lớp khác gọi là lớp dẫn xuất (hay còn gọi là lớp con, lớp hậu duệ ), lớp dùng để xây dựng lớp dẫn xuất được gọi là lớp cơ sở ( hay còn gọi là lớp cha, hoặc lớp tổ tiên ). Một lớp dẫn xuất ngoài các thành phần của riêng nó, nó còn được kế thừa tất cả các thành phần của lớp cha.

Thành phần protected

Trong một vài bài trước ta đã làm quen với các thành phần private, public, sau khi đã học về kế thừa thì từ khoá protected cuối cùng đã có ý nghĩa. Từ khoá protected báo cho java biết đây là thành phần riêng tư đối với bên ngoài nhưng lại sẵn sàng với các con cháu.

Từ khóa final

Một phương thức bình thường có thể bị ghi đè ở lớp dẫn xuất, đôi khi ta không muốn phương thức của ta bị ghi đè ở lớp dẫn xuất vì lý do gì đó, mục đích chủ yếu của các phương thức final là tránh ghi đè, tuy nhiên ta thấy rằng các phương thức private sẽ tự động là final vì chúng không thể thấy được trong lớp dẫn xuất lên chúng không thể bị ghi đè, nên cho dù bạn có cho một phương thức private là final thì bạn cũng chả thấy một hiệu ứng nào. Chú ý: do một lớp là final (tức không thể kế thừa )do vậy ta không thể nào ghi đè các phương thức của lớp này, do vậy đừng cố gắng cho một phương thức của lớp final là final.

Giới thiệu

Nếu bạn không muốn người khác kế thừa từ lớp của bạn, thì bạn hãy dùng từ khoá final để ngăn cản bất cứ ai muốn kế thừa từ lớp này.

UML và các giai đoạn phát triển phần mềm

Trong những giai đoạn trước, mô hình được sử dụng để dễ hiểu, dễ giao tiếp và tạo nên cấu trúc của hệ thống; vì vậy, vội vàng đưa ra những kết luận về việc viết code có thể sẽ thành một trở ngại cho việc tạo ra các mô hình chính xác và đơn giản. Các nhóm sử dụng nhiều loại biểu đồ UML khác nhau làm nền tảng cho công việc của mình: Thử nghiệm đơn vị sử dụng biểu đồ lớp (class diagram) và đặc tả lớp, thử nghiệm tích hợp thường sử dụng biểu đồ thành phần (component diagram) và biểu đồ cộng tác (collaboration diagram), và giai đoạn thử nghiệm hệ thống sử dụng biểu đồ Use case (use case diagram) để đảm bảo hệ thống có phương thức hoạt động đúng như đã được định nghĩa từ ban đầu trong các biểu đồ này.

Các thành phần của ngôn ngữ UML

Trong giai đoạn xây dựng (giai đoạn lập trình), các lớp của giai đoạn thiết kế sẽ được biến thành những dòng code cụ thể trong một ngôn ngữ lập trình hướng đối tượng cụ thể (không nên dùng một ngôn ngữ lập trình hướng chức năng!). Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét bổ sung, các thông tin cũng như các quy tắc ngữ pháp chung về một phần tử mô hình; chúng còn cung cấp thêm các cơ chế để có thể mở rộng ngôn ngữ UML cho phù hợp với một phương pháp xác định (một quy trình, một tổ chức hoặc một người dùng).

Hướng nhìn (View)

    Một biểu đồ trong một hướng nhìn cụ thể nào đó cần phải đủ độ đơn giản để tạo điều kiện giao tiếp dễ dàng, để dính liền với các biểu đồ khác cũng như các hướng nhìn khác, làm sao cho bức tranh toàn cảnh của hệ thống được miêu tả bằng sự kết hợp tất cả các thông tin từ tất cả các hướng nhìn. Ngoài ra, cho mục đích quan sát một chức năng sẽ được thiết kế như thế nào, công cụ này cũng phải tạo điều kiện dễ dàng cho bạn chuyển sang hướng nhìn Use case (để xem chức năng này được miêu tả như thế nào từ phía tác nhân), hoặc chuyển sang hướng nhìn triển khai (để xem chức năng này sẽ được phân bố ra sao trong cấu trúc vật lý - Nói một cách khác là nó có thể nằm trong máy tính nào).

    Biểu đồ (diagram)

      Việc nên sử dụng biểu đồ trình tự hay biểu đồ cộng tác thường sẽ được quyết định theo nguyên tắc chung sau: Nếu thời gian hay trình tự là yếu tố quan trọng nhất cần phải nhấn mạnh thì hãy chọn biểu đồ trình tự; nếu ngữ cảnh là yếu tố quan trọng hơn, hãy chọn biểu đồ cộng tác. Mặc dù vậy, trong một mô hình tốt, người ta có thể chỉ tất cả những con đường dẫn từ một nút mạng trong một kiến trúc vật lý cho tới những thành phần của nó, cho tới lớp mà nó thực thi, cho tới những tương tác mà các đối tượng của lớp này tham gia để rồi cuối cùng, tiến tới một Use case.

      Hình 3.2- Biểu đồ use case của một công ty bảo hiểm 3.5.2Biểu đồ lớp (Class Diagram)
      Hình 3.2- Biểu đồ use case của một công ty bảo hiểm 3.5.2Biểu đồ lớp (Class Diagram)

      Multithread trong Java

      Tiếp tục vận hành tuyến nếu như nó đang bị ngưng, nếu tuyến đang thi hành thì phương thức này bị bỏ qua, thông thường phương thức này được dùng kết hợp với phương thức suspend(), kể từ java 2 phương thức này cùn với phương thức suspend()bị từ chối, do vậy bạn nên dùng phương thức notify () thay vì sử dụng phương thức resume(). Bởi trong java không có biến toàn cục, chúng ta chỉ có thuộc tính của đối tượng, tất cả các thao tác có thể dẫn đến hỏng hóc đều thực hiện qua phương thức, do vậy java cung cấp từ khoá synchronized, từ khoá này được thêm vào định nghĩa của phương thức báo cho java biết đây là một phương thức đồng bộ, mỗi đối tượng sẽ có một bộ quản lý khoá, bộ quản lý khoá này chỉ cho 1 phương thức synchronized của đối tượng đó chạy tại một thời điểm Mấu chốt của sự đồng bộ hóa là khái niệm “monitor” (giám sát), hay còn gọi “semaphore” (cờ hiệu).

      Nhóm thread

      Khi hai hoặc nhiều hơn một luồng cần thâm nhập đến một tài nguyên được chia sẻ, bạn cần chắc chắn rằng tài nguyên đó sẽ được sử dụng chỉ bởi một luồng tại một thời điểm. Nhóm tuyến là một tập hợp gồm nhiều tuyến, khi ta tác động đến nhóm tuyến ( chẳng hạn như tạm ngưng, …) thì tất cả các tuyến trong nhóm đều nhận được cùng tác động đó, điều này là tiện lợi khi ta muốn quản lý nhiều tuyến thực hiện các tác vụ tương tự nhau.

      Thiết lập độ ưu tiên trong thread

      Java đưa ra nhiều lớp luồng, để xử lý mọi loại dữ liệu, java chia luồng ra thanh 2 loại: luồng byte ( byte stream) và luồng kí tự (character stream), lớp InputStream và OutputStream là hai lớp cơ sở cho mọi luồng nhập xuất hướng byte, và lớp Reader/ Writer là hai lớp cơ sở cho việc đọc ghi hướng kí tự. Reader và Writer là hai lớp cơ sở trừu tượng cho luồng hướng kí tự, hai lớp này cung cấp một giao diện chung cho tất cả các lớp đọc/ ghi hướng kí tự, mỗi lần đọc/ ghi ra luồng là đọc 2 byte tương ứng với một kí tự unicode, Sau đây là mô hình phân cấp các lớp đọc/ ghi hướng kí tự.

      Lớp File

      • Lớp URL

        Nếu lưu trữ URL dưới dạng một đối tượng String sẽ không có lợi so với việc tổ chức URL như một đối tượng với các trường : giao thức (protocol), hosname, cổng (port), đường dẫn (path), tên tập tin (filename), mục tài liệu (document section), mỗi trường có thể được thiết lập một cách độc lập. Ý tưởng đằng sau các trình quản trị giao thức rất đơn giản: chúng cho phép bạn phân tách các chi tiết xử lý một giao thức với việc xử lý các kiểu dữ liệu cụ thể, cung cấp các giao diện người dùng, và thực hiện các công việc khác mà một trình duyệt thường làm.

        Thiết lập kết nối đến Server sử dụng Stream Socket

          Mỗi khi một Socket đã bị đóng lại, ta vẫn có thể truy xuất tới các trường thông tin InetAddress, địa chỉ cục bộ, và số hiệu cổng cục bộ thông qua các phưong thức getInetAddress(), getPort(), getLocalHost(), và getLocalPort(). Tuy nhiên khi ta gọi các phương thức getInputStream() hoặc getOutputStream() để đọc dữ liệu từ luồng đọc InputStream hoặc ghi dữ liệu OuputStream thì ngoại lệ IOException được đưa ra.

          Lập trình với giao thức UDP

            Khi gửi gói tin, ứng dụng phải tạo ra một DatagramPacket, thiết lập địa chỉ và thông tin cổng, và ghi dữ liệu cần truyền vào mảng byte. Mỗi khi gói tin sẵn sàng để gửi, ta sử dụng phương thức send() của lớp DatagramSocket để gửi gói tin đi.

            Giới thiệu Servlet

            Nếu muốn gửi thông tin phúc đáp thì ta cũng đã biết địa chỉ và số hiệu cổng của gói tin nhận được.

            Lập trình web với Servlet

            • Các mã có thể theo giao thức HTTP hoặc dùng các hằng số trong class HttpServletResponse. • Thông tin có thể dùng để thiếtlập phiên làm việc (session) trong các ứng dụng thương mại điệntử (ecommerce).

              Giới thiệu kiến trúc MVC

              ƒ View (hiển thị) : View trình bày việc hiển thị của ứng dụng và nhận trách nhiệm lấy dữ liệu từ người sử dụng, gửi các yêu cầu đến Controller rồi sau đó nhận trả lời từ Controller và hiển thị kết quả đến người sử dụng. Khi mà yêu cầu đuợc nhận từ Client,Controller sẽ thực thi business logic thích hợp từ Model và sau đó xuất ra dữ liệu cho user sử dụng View component.

              Khái niệm Struts

              Model (mẫu) : Model đảm nhận nhiệm vụ cung cấp dữ liệu từ cơ sở dữ liệu và lưu các thông tin đó ở nơi chứa dữ liệu. Dữ liệu được nhập vào bởi người sử dụng qua View sẽ được kiểm tra ở Model trước khi được lưu vào cơ sở dữ liệu.

              Kiến trúc Struts

              Truy xuất dữ liệu,sự hợp lệ của dữ liệu và data saving logic là các thành phần của Model.  Một lớp ActionForm có thể sử dụng một hoặc nhiều forward được định nghĩa trong thẻ <action>.

              Chương trình Demo

                Để chạy ứng dụng, ta cần thêm vài bước nữa, ta cần copy vài file và folder vào folder webapps trong folder ứng dụng Tomcat. Để chạy được ứng dụng, cần phải khởi động Tomcat, sau đú vào trỡnh duyệt web gừ theo địa chỉ : http://localhost:8080/Login/login.jsp.

                1.7 Cấu hình Eclipse để sử dụng các file thư viện
                1.7 Cấu hình Eclipse để sử dụng các file thư viện