Thứ Hai, 29 tháng 9, 2014

MVC Design Pattern


I. Vấn đề :

_Khi chúng ta lập trình,trong 1 trang JSP ta thường xen lẫn những đoạn code HTML cũng vs mã JSP.Điều này sẽ dẫn đến những vấn đề sau :
  • Người thiết kế giao diện cũng cần phải biết các ngôn ngữ lập trình, hoặc bạn phải trực tiếp thiết kế chúng.
  • Việc bảo trì chúng thường rất khó khăn, vì một phần các mã chương trình lẫn lộn với mã html.
  • Khi có lỗi xảy ra, việc tìm ra lỗi là một vấn đề khó khăn.
  • Bên cạnh đó Việc để tái sử dụng phần mềm là 1 việc rất phức tạp.Bởi vậy mà chúng ta cần phải sử dụng mô hình lập trình sao cho việc tái sử dụng trở nên dễ dàng hơn và khoa học hơn.MVC (Model–view–controller) là 1 trong những mẫu thiết kế phổ biến sẽ hỗ trợ thực hiện việc đó.Vậy mô hình MVC là gì? Chúng ta sẽ cùng tìm hiểu về mô hình này.

II. Mô hình MVC


1.Mô hình được chia ra làm 3 phần: View, Model và Controller:
  • Model là nơi lưu trữ những logic nghiệp vụ và dữ liệu 
  • View là nơi hiển thị cho người dùng
  • Controller là nơi nhận các tương tác của người dùng
2.Quan hệ giữa các thành phần :
_Khi người dùng muốn tương tác nhằm thay đổi hay xử lý bất cứ thao tác gì theo mong muốn thì sẽ phải gửi yêu cầu đến Controller:


_Sau khi Controller xử lí yêu cầu từ người dùng sẽ chuyển dữ liệu đó sang cho Model:


_Sau đó sẽ hiện thị lên View:



_Ưu điểm của mô hình MVC:

  •  Linh hoạt trong việc phát triển và dễ dàng cho việc mở rộng dự án.
  • Các bộ phận tách rời nhau vì vậy dễ dàng cho việc fix.




Thứ Bảy, 13 tháng 9, 2014

Custom tag

Custom tag :Như chúng ta được biết thì trong 1 số trang jsp đôi khi ta phải nhúng code java .Và việc nhúng code java vào 1 trang jsp lại trở thành 1 vấn đề lớn.Việc đọc hiểu code của ta sẽ trở nên rất khó khăn.Them vào đó là vấn đề tái sử dụng cũng khó hơn.Sau đây ta cùng tìm hiểu kĩ hơn về Custom Tag

  • Customtag cho phép lập trình viên nhúng các đoạn code java vào trang jsp
  • Cung cấp cơ chế để tái sử dụng và bao gói code, lệnh phức tạp trong jsp
  • Làm đơn giản hóa, tái sử dụng java code
  • JSP 1.0 không hỗ trợ tag libraries
  • JSP 1.1 hỗ trợ lưu trữ các custom tag của người dùng đã tạo trong jsp
  • Cấu trúc của custom tag trong jsp giống như xml tag
Các loại của custom tag: 



Thành phần của một custom tag:




_Custom tag gồm 2 phần : tag handler và tag library descriptor.Trong đó :
  • Tag Handler : Đoạn code thực sự xử lý công việc
  • Tag Library descriptor: Nơi mô tả custom tag.


Quá trình xử lý của custom tag :


Khi gặp một custom tag ,client request lên server, jsp engine sẽ tìm tag library descriptor file để tìm hiểu mô tả về cái tag đó, sau khi có tag đó thì nó sẽ biết được tag đó được xử lý thực sự ở đâu bởi cái tag Handler nào  nó sẽ gọi tag handler tương ứng và nó sẽ yêu cầu tag Handler đó xử lý .Tag Handler xử lý xong sẽ trả kết quả cho jsp engine , rồi jsp engine trả về kết quả cho trình duyệt .Công việc xử lý được lưu trữ ở nơi riêng đó là Tag Handler chứ không được lưu trữ trên jsp nữa.Đó là 1 vòng đời của Custom tag.

Các loại custom tag:


+Classic tag : nó cho phép ta sử dụng các cripting elements.Trong các body của tag đó ta có thể những đoạn code : biểu thức,khai báo,..vv

+Simple tag : Có cấu trúc đơn giản hơn.Trong simple tag ta cũng có 2 loại : dùng code java và Tag file(giả giao diện) tức là code bằng chính code JSP.



Expression Language

1. Giới thiệu:
   * Expression Language (EL) là một tính năng mới chỉ bắt đầu có trong JSP 2.0 
   * Dễ dàng viết biểu thức trên trang JSP ngắn hơn, dễ sử dụng hơn
   * Hai biểu thức thông dụng nhất của EL :

              + Static text. (Text tĩnh)
              + Standard and Custom tags. (Tiêu chuẩn và tùy chỉnh thẻ tag)

Cấu trúc của Expression Language  : ${expression} (expression là một đoạn code nào đó)



2. Tính năng:
   * Hỗ trợ sử dụng các đối tượng và các mảng
   * Hỗ trợ cả các đối tượng ẩn

   * Và đặc biệt có thể hỗ trợ toán học.
   * EL sẽ được tính toán trong thời gian chạy (Runtime).

3. Demo :
Ta sẽ thử với 1 ví dụ để hiểu hơn về EL
Đầu tiên ta làm những bước sau:
     * Tạo mới project. (File - New Project)
     * Chọn Java Web
     * Chọn Web Application
     * Đặt tên và chọn đường dẫn lưu project.
Tại trang index ta code ::




 Sau đó ta chạy chương trình để thấy kết quả :


 Sau khi ta nhập giá trị bất kì vào 2 ô trống và nhấn chọn nút sum để tính ta được kết quả :





Java Beans

1. Khái niệm:
Java Bean là một nơi đóng gói và lưu trữ lại các hành động trong Java.Ta có thể hiểu đơn giản là 1 lớp java dùng để giảm code dư thừa.


2. Thành phần:

  a. Thuộc tính của Java Bean:

        * Đóng gói và lưu trữ lại các dữ liệu và chức năng.
        * Cung cấp các dịch vụ liên quan dựa trên các đặc điểm kĩ thuật.
        * Giấu việc thực hiện trong ứng dụng, đóng gói dữ liệu và thiết kế lại giao diện để tái sử dụng.

  b. Cấu trúc của Java Bean:

        * Nó nằm trong một Package, được xác định với java.bean.
        * Bean-class có thể sở hữu một constructor không có đối số.
        * Có hai phương thức trong đó: Set và Get. Getter được sử dụng để lấy các thuộc tính trong một Bean-class. Setter được sử dụng để có được những đặc tính của Bean-class.

 3. Demo: Chúng ta sẽ thử với 1 ví dụ để hiểu hơn về java bean:
Đầu tiên ta làm những bước sau:
  
     * Tạo mới project. (File - New Project)
     * Chọn Java Web
     * Chọn Web Application
     * Đặt tên và chọn đường dẫn lưu project.
Tại trang index :


Tiếp theo ta tạo 1 file java và code như sau :


Tiếp tục tạo thêm 1 file JSP để sử dụng java bean:


Sau cùng ta chạy để thấy kết quả:
+ Giao diện ban đầu khi chạy chương trình :


+ Chọn thêm 1 sinh viên bất kì để add :

Và để tiếp tục add thêm ta chọn back về trang ban đầu.

_Source Code :  https://www.dropbox.com/s/6xv0a3xhcl6t2fm/javaBean.rar?dl=0

Thứ Tư, 10 tháng 9, 2014

Implicit Object in JSP

1. Giới thiệu:

Implicit Object (hay được hiểu là đối tượng ẩn)  là những object mặc định trong JSP,Những đối tượng này được sử dụng trong các biểu thức: Scriptlet hoặc Expressions.
_Scriptlet, nó bắt đầu với <% và kết thúc với %> :


_Expressions, các hàm sẽ được viết trong ${ ...... } :



3. Demo :
 Đề bài : Save username and password in web browser.
Đầu tiên ta làm những bước sau:
  
     * Tạo mới project. (File - New Project)
     * Chọn Java Web
     * Chọn Web Application
     * Đặt tên và chọn đường dẫn lưu project.

Bước 2 tại trang index ta tạo form đăng nhập cho người dùng :



Bước 3: tạo thêm 1 trang jsp code sử dụng phương thức để lưu thông tin và liên kết trang :





Bước 4: Tạo thêm 1 trang jsp nữa để lấy thông tin tử Session :



Bước 5 : Ta chạy chương trình để xem kết quả :

Sau khi đăng nhập :



Sau khi click chọn Details ta được như sau :



_Source Code :  https://www.dropbox.com/s/0haynrkem5tjzeh/SaveUserPassImplicit.rar?dl=0

JDBC


1. Giới thiệu JDBC.

_JDBC (Java Database Connectivity) là một phương thức để giúp cho các ứng dụng Java (ở đây là NetBeans) kết nối với các dữ liệu khác như Oracle hay SQL Server.
_JDBC cũng có thể được định nghĩa là giao diện nền tảng độc lập giữ 1 cơ sở dữ liệu quan hệ và lập trình java.Nó cho phép chương trình java thực hiện các câu lệnh SQL và lấy kết quả từ cơ sở dữ liệu.

2. Demo :
Đầu tiên ta làm những bước sau:
 
     * Tạo mới project. (File - New Project)
     * Chọn Java Web
     * Chọn Web Application
     * Đặt tên và chọn đường dẫn lưu project.

Với việc sử dụng JDBC thì trước tiên ta phải thêm SqlJDBC4.jar vào trong project để kết nối với database, click chuột phải vào Libraries và chọn:




Sau đó tìm đường dẫn chứa file JDBC và ok để thêm vào project.Nếu chưa có thư viện JDBC thì ta phải down về bằng cách lên Google search từ khóa JDBC.Hoặc bạn có thể vào trang chủ của Oracle để down và chọn  phiên bản mới nhất..
Bước tiếp theo ta phải tạo sẵn 1 csdl đăng nhập trong SQL Server:



Tiếp theo vào lại NetBeans,tạo 1 class java có tên Connect và code những dòng lệnh để kết nối vs csdl vừa tạo:

Tiếp tục ta tạo thêm 2 class java nữa (Product.ListProducts) để khởi tạo constructor và thêm dữ liệu có sẵn :


Sau đó ta tạo thêm 2 Servlet.Servlet Home để hiển thị thông tin sản phẩm Product nếu người dùng đăng nhập đúng tài khoản và Servlet Login :


Tại trang index viết code tạo ra form đăng nhập :


Và sau cùng ta chạy chương trình để xem kết quả :


Sau khi đăng nhập tài khoản ta được như sau :






Thứ Hai, 8 tháng 9, 2014

Servlet Context

1. Giới thiệu
Servlet context dùng để duy trì trạng thái cho ứng dụng web.Mỗi máy ảo Java chỉ có một context. Servlet context lưu lại 1 nội dung dùng chung cho nhiều servlet.



_Servlet Contex có 3 phương thức chính đó là :
  •  getAttribute. 
  •  setAttribute
  •  removeAttribute. 
_Ưu điểm của Servlet Contex là :
  • Cung cấp thông tin liên lạc giữa các servlet
  • Có sẵn cho bất kỳ servlet và JSP là một phần của ứng dụng web
  • Sử dụng để có được thông tin cấu hình web.xml
3. Thực hành:
Đề bài : Implement app that count number of page view
      * Tạo mới project. (File - New Project)
     * Chọn Java Web
     * Chọn Web Application
     * Đặt tên và chọn đường dẫn lưu project.

Trước tiên ta tạo 2 file Servlet với tên là Pic1,Pic2.Tại file Pic 1 ta code như sau :

Tương tự vs file Pic2  ta cũng vậy.Và sau cùng ta chạy chương trình để thấy được kết quả :


Nếu ta load tiếp lần nữa sẽ thấy sự thay đổi .Kết quả sẽ được tăng dần.


Session

1. Giới thiệu:
Trong Java Web, Session được hiểu như một khoảng thời gian, một chu kì kết nối giữa người dùng với một trang web (hoặc một ứng dụng). Nó sẽ bắt đầu khi bạn truy cập, và kết thúc khi bạn đóng trình duyệt hoặc thoát khỏi trang đó.

2. HttpSession:
Nếu Session là nói về khoảng thời gian truy cập và kết thúc phiên kết nối của người dùng thì HttpSession được sử dụng để lưu trữ phiên đó
_1 số phương thức chính vi dụ như : getSession (), getValueName(), getValue() ..vv..




Cơ chế hoạt động của HttpSession

3. Demo:
Đề bài: Develope user story "Login" with mock data instead of database
Đầu tiên ta làm những bước sau:
     *Tạo mới Project(File - New Project)
     
*Chọn Java Web
     *Chọn Web Application
     
*Đặt tên và chọn đường dẫn lưu Project
Bước đầu tiên tại trang index ta tạo ra form cho người dùng đăng nhập:


Tiếp theo ta tạo 2 file Java class chứa thông tin và tài khoản: UserDetails và Infomation
Tại file UserDetails ta khai báo các biến về tài khoản :


Tại class Infomation ta thêm thông tin để đăng nhập :


Tiếp theo ta tạo 1 Servlet với tên SessionServlet và code như hình :


Và sau cùng ta chạy chương trình để xem kết quả :



Còn đây là sau khi đăng nhập :



_Source Code: https://www.dropbox.com/s/9ss450uyhcxg1jq/DemoSession.rar?dl=0