Tuesday, July 29, 2014

Advanced of SAX (Thành phần nâng cao của SAX)

SAX (Simple API for XML) có API đơn giản cho XML, đây là một trong ba giao diện đơn giản sử dụng trong XML

Minh họa về SAX trong XML


Điều này mình đã nhắc đến ở các bài trước về chính khái niệm về SAX. Ngày hôm nay chúng ta sẽ tiếp tục học tiếp về Validate XML, DTD Handler, Lexical Event, EntityResolver, Filter.

1. Khái niệm:

   a. Handling Errors:

Handling Errors được hiểu là bộ xử lý lỗi có trong Java web.xml, như "Error or exception handling" (Xử lí những lỗi ngoài lề) là một phần quan trọng trong XML.

Sơ đồ minh họa trong Handling Errors

Trong ứng dụng thì code của Handling Errors bao gồm: <error-page> và <error-code>404</error-code>

  * Using non- validating parser:

 Sử dụng cú pháp không-xác nhận. Như trong sơ đồ ở trên của Using non- validating parser, khi gặp lỗi trong quá trình mà không quan trọng, nó sẽ xử lí lỗi mặc định rồi gửi đến Stack Trace.

  * Using validating parser:

Sử dụng cú pháp xác nhận, quá trình của nó được hình thành theo hình bậc thang tam giác, tức là sẽ bù trừ đẩy cho nhau.

Trước hết tạo SAX Parser, sau đó thiết đặt mode cho quá trình xác nhận để báo cáo về lỗi. Sau khi so sánh, nó sẽ tạo ErrorHandler trong SAX Parser để nếu có lỗi nó sẽ trả lại kết quả.

 b. DTDHandler:

DTD Handler là một định dạng interface để nhận thông báo của các sự kiện liên quan đến DTD. Đại loại nó sẽ cung cấp thông tin ứng dụng với SAX parser cho SAX.

 c. Lexical Event:

  Lexical Event hoặc LexicalHandler được dùng để xác định comments, CDATA, cũng như parsed entities (các đơn vị phân tích cú pháp).




Ở trong demo, để sử dụng được LexicalHandler thì yêu cầu sử dụng method strart và end DTD, Entity CDATA

Minh họa với code trong ứng dụng



 d. EntityResolver: 

  Giống như DTDHandler, đây cũng là một định dạng interface. EntityResolver sẽ tung ra tùy biến set để xử lí các entities mà SAX yêu cầu.

Sơ đồ minh họa cách làm việc qua EntityResolver

 e. Filter:

Filter không đơn giản chỉ là một phần trong XML, hãy xem sơ đồ này để thấy được tầm quan trọng của nó. Từ một mã nguồn qua XML filter, bạn mới có thể tạo một ứng dụng XML hoàn chỉnh.

Sơ đồ làm việc của Filter trong XML

Filter có thể là một SAX interface với nhiệm vụ chính là tạo event từ SAX driver và nhận các yêu cầu xử lí từ chính SAX driver đó.
    

3. Nhận xét:

   Như mình đã nói Filter có thể rất quan trọng nhưng không thể không quên 4 thành phần còn lại, nó là những đóng góp để tạo ra một XML hoàn hảo. Đây là công cụ giúp cho bạn tạo một ứng dụng XML.


   Và như đúng tiêu đề, đây là những yêu cầu nâng cao của chính SAX, đến đây chưa hiểu SAX là gì thì bạn có thể kéo lên đầu trang và xem sơ đồ của nó.

Monday, July 28, 2014

Working with SAX (Làm việc với SAX)

Ngày hôm nay chúng ta sẽ tiến hành làm việc với SAX trong XML, bạn có thể tìm hiểu lại SAX là gì qua bài - Giới thiệu về JAXP

1. Khái niệm:

SAX (Simple API for XML) có API đơn giản cho XML, đây là một trong ba giao diện đơn giản sử dụng trong XML

Minh họa về SAX trong XML


 2. Thực hành:

a. Ví dụ 1:

   Trước hết hãy tạo một chương trình cho phép chấp nhận file tomcat-users.xml như dạng tham số dòng lệnh và đếm số lượng người sử dụng trong file config. Ở cuối trình xử lí, nó sẽ in (hoặc hiển thị) được số người sử dụng trên giao diện điều khiển của bạn. Trích:

Create a program to accept the tomcat-users.xml file as a command line parameter and count the number of users defined in this configuration file. At the end of processing, it requires to print the number of users on the console.

Tạo một Project mới, lưu ý hãy chọn Java Apps thay vì Java Web như những lần trước đấy




Tạo một file XML và đặt tên cho nó là tomcat-users.xml như đúng yêu cầu của đề. Gõ một số dòng lệnh vào trong file




Tạo một file java có dòng lệnh SAXParser để quét dữ liệu từ chính file tomcat-users.xml




Tiếp theo khai báo các biến trong file Handler




Kết quả khi chạy Project


Bạn có thể tham khảo demo tại đây: CountNumber

     b. Ví dụ 2:

Tạo một file student.xml để lưu trữ danh sách các sinh viên đã đăng kí. Viết chương trình cho phép in ra tên và ID của các sinh viên đã đăng kí trong student.xml. Trích đề:
Create the student.xml file that stores a list of registered students. Write a program for printing the name and ID of all registered students provided in student.xml.

Chuẩn bị trước thông tin sinh viên ở file XML




Tạo một file java có dòng lệnh SAXParser để quét dữ liệu từ chính file Students.xml




Chạy thử kết quả


Bạn có thể tham khảo demo này: View Student


3. Nhận xét:


Code trong XML có thể sẽ khó khăn nếu như bạn không cẩn thận trong việc sắp xếp chúng. Thực ra với XML, bạn có thể tiết kiệm được thời gian do code rất đơn giản dễ sử dụng. Do tốn ít bộ nhớ nên xử lý dữ liệu rất nhanh và lọc dữ liệu.





Saturday, July 26, 2014

Introduction to JAXP (Giới thiệu về JAXP)

Hôm nay chúng ta sẽ bắt đầu học về khái niệm mới về JAXP, nó sẽ giúp bạn hoàn thiện cũng như biết thêm về cách sử dụng file XML

1. Giới thiệu

Java API for XML Processing (hay còn được gọi là JAXP) là một phần của Java XML của giao diện lập trình ứng dụng API (Vậy API là gì?). Nó có khả năng phân tích các tài liệu XML.

Với JAXP, nó có thể giúp XML biến thành chính đối tượng sử dụng, và thay thế việc thao tác dữ liệu, và một số thuộc tính ở các thẻ XML thành các thao tác trên các thuộc tính của đối tượng.


Minh họa hoạt động của JAXP


2. Đặc điểm:

  a. Giao diện:

JAXP có ba giao diện cơ bản mà bạn nên biết đó là:

      - DOM (Document Object Model):  Mô hình đối tượng.
      - SAX (Simple API for XML): API đơn giản cho XML
      - StAX (Streaming API for XML): giống với SAX nhưng có thêm Streaming (Áp dụng JDK 5 hoặc 6)

  b. Lợi ích:

    - Ngôn ngữ độc lập.
    - Code độc lập.
    - Có khả năng linh hoạt, thích nghi tốt.


Các packages của JAXP



Còn đây là một ví dụ về class sử dụng các package và code chi tiết về XML



     c. Lưu ý:

        Việc thao tác dữ liệu trên XML khá khó khăn chứ không dễ như nhiều người nghĩ. Bạn có thể thấy DOM (Document Object Model):  Mô hình đối tượng ở trong phần viết trên. Nếu không cẩn thận với các code bạn viết ra thì việc mã hóa và sắp xếp sẽ rất rối rắm. Các thao tác về đọc và ghi dữ liệu sẽ bị tách biệt hoàn toàn dẫn tới khó đọc.

    À tất nhiên, khó đọc như cái cách mình viết ở trên vậy, không cách dòng nên rất khó đọc. Đó là ví dụ minh họa nhanh nhất.


3. Nhận xét:

  XML là một chuẩn được sử dụng phổ biến ở khắp nơi để trao đổi dữ liệu. Trong Webservice trước kia cũng như Java, nó luôn đóng vai trò quan trọng mặc dù người dùng vẫn không để ý nhiều lắm. Từ bây giờ chúng ta sẽ bắt đầu làm quen dần tới việc sử dụng XML trong Project của mình.

Monday, July 21, 2014

Login Module using jsf

Ngày hôm nay chúng ta sẽ thực hiện một bài tập lớn, hay còn gọi là Assignment có sử dụng tất cả chức năng với JSF.

JavaServer Faces (JSF)

1. Giới thiệu

   - Đây là công nghệ được thiết kế để hỗ trợ người sử dụng đơn giản hóa việc phát trên Web trên nền Java.  Cho phép bạn làm giao diện nhanh gọn mà không cần phải gõ lại.

   - Nếu bạn cần thiết kế web nhanh gọn thì JSF là lựa chọn hoàn hảo để giải quyết việc này, tuy không phức tạp hơn so với những cái khác nhưng chất lượng cũng được đánh giá theo điểm ưu.

Sơ đồ minh họa cho Công nghệ viết Web bằng Java.

2. Thực hành


Tiến hành tạo Project như bình thường có sử dụng JavaServer Faces (JSF)





Và đừng quên add thêm SqlJDBC4.jar và nhấn OK để thêm vào Project như những Project trước


Nếu bạn chưa có nó thì có thể download lại tại đây: SqlJDBC4.jar

Trước hết hãy chuẩn bị trước Database với thông tin tài khoản đăng nhập cũng như bài viết trong trang web



Giao diện trang chủ




Giao diện JSP trang đăng kí tài khoản




Giao diện JSP trang Tìm kiếm nơi du lịch mà bạn cần




Code kết nối với database




Và không thể thiếu đó là trang JSF




Và còn rất nhiều class nữa mình không thể show hết (bạn có thể tham khảo ở cuối bài). Giờ là lúc chạy ứng dụng, trang chủ




Khi chưa đăng nhập bạn chỉ xem được các bài viết giới thiệu về các điểm đến 




Bấm vào Click để chọn địa điểm để tìm kiếm, gõ từ khóa bạn muốn tìm, ví dụ ở đây là Hà Nội thì nó sẽ hiển thị ra kết quả




Khi tiến hành đăng nhập thì nó sẽ chi tiết hơn, tìm kiếm dễ dàng, các thanh tab sang thông tin khác hay có thể gửi yêu cầu cho chính chủ website này (vd ở đây là mình)




Ở đây tôi thiết kế thêm cả tính năng tìm kiếm từ trong mô tả, vd tôi gõ nơi nào đẹp ra thì có hai gợi ý trên



Nhấn logout nếu thôi không muốn xem, nó sẽ ko lưu lại tài khoản của bạn đợt sau




Khi thoát ra bạn có thể dễ dàng tạo tài khoản mới với Creat New Account ngay dưới khung đăng nhập



Bạn có thể tham khảo ở demo này tại đây: Assignment Using JSF


3. Nhận xét:

Với JSF và Struts, tôi đã có thể làm dễ dàng một ứng dụng Java Web cho phép đăng nhập, quản lí thông tin tài khoản và truy xuất dữ liệu theo ý mình muốn. Đơn giản và nhanh hơn nhiều so với nhưng mã nguồn trước mà mình được học.




JSF Page comunication using param

JavaServer Faces (JSF)

1. Giới thiệu

   - Đây là công nghệ được thiết kế để hỗ trợ người sử dụng đơn giản hóa việc phát trên Web trên nền Java.  Cho phép bạn làm giao diện nhanh gọn mà không cần phải gõ lại.

   - Nếu bạn cần thiết kế web nhanh gọn thì JSF là lựa chọn hoàn hảo để giải quyết việc này, tuy không phức tạp hơn so với những cái khác nhưng chất lượng cũng được đánh giá theo điểm ưu.

Sơ đồ minh họa cho Công nghệ viết Web bằng Java.


2. Thực hành:

Ở bài trước chúng ta đã tiến hành làm một demo nhỏ sử dụng JSF page trong bài: Tạo Giao Diện Tìm Kiếm Chạy Trên JSF

Tuy nhiên ở bài đó chúng ta chỉ tìm ra được kết quả (đúng keyword) tìm kiếm, để hoàn thiện hơn lần này chúng ta sẽ thiết kế thêm nút Detail (Chi tiết) bên cạnh sản phẩm để khách mua hàng có thể thuận tiện hơn trong việc theo dõi chính xác sản phẩm đó.


Tiến hành tạo Project như bình thường có sử dụng JavaServer Faces (JSF)





Và đừng quên add thêm SqlJDBC4.jar và nhấn OK để thêm vào Project như những Project trước


Nếu bạn chưa có nó thì có thể download lại tại đây: SqlJDBC4.jar



Vẫn là database cũ mình dùng từ trước đến giờ


Khai báo giao diện tìm kiếm gian hàng truyện tranh



Khai báo các biến có trong database




Code kết nối tới database




Thêm khai báo biến cho ViewDetail qua id




Giao diện JSF của trang ViewDetail





Khởi chạy ứng dụng, ở đây mình đã thêm StyleSheet nên mới có giao diện này



Gõ keyword tìm kiếm, lần này đã có thêm nút Detail bên cạnh


Bạn có thể tham khảo demo ở đây: DemoJSFSearch2


3. Nhận xét:

Qua bài ngày hôm nay, ngoài được sử dụng lại JSF của bài trước để dễ nhớ hơn thì chúng ta đã học được cách xem thông tin chi tiết của sản phẩm.

Từ đó bạn có thể rút ngắn thông tin và giao diện, nếu người dùng cần thì bấm vào nút đó mới hiện thông tin, điều đó có thể tiết kiệm được thời gian tìm kiếm cũng như không gian thông tin.

Sunday, July 20, 2014

Develop Basic Component of jsf

JavaServer Faces (JSF)

1. Giới thiệu

   - Đây là công nghệ được thiết kế để hỗ trợ người sử dụng đơn giản hóa việc phát trên Web trên nền Java.  Cho phép bạn làm giao diện nhanh gọn mà không cần phải gõ lại.

   - Nếu bạn cần thiết kế web nhanh gọn thì JSF là lựa chọn hoàn hảo để giải quyết việc này, tuy không phức tạp hơn so với những cái khác nhưng chất lượng cũng được đánh giá theo điểm ưu.

Sơ đồ minh họa cho Công nghệ viết Web bằng Java.

* Thành phần của JSF:

        - JavaBean (mô hình đối tượng trong công nghệ JSF) 
        - Các event listener.
        - Các class và JSP.
        - Các lớp helper phía server.


* Ưu điểm của JSF:

 - Tách biệt hoàn toàn giữa cách trình bày .
 - Các sự kiện dễ dàng được liên kết với mã phía máy chủ
 - Sử dụng các khái niệm thành phần UI và tầng Web (Web-tier) quen thuộc 
 -  Cung cấp nhiều dụng cụ của nhà sản xuất phần mềm đã tiêu chuẩn hóa 
 - Sự hỗ trợ IDE tuyệt vời.

2. Thực hành:

Sau đây chúng ta sẽ tiến hành làm một demo nhỏ về chức năng tìm kiếm với JSF


Tiến hành tạo Project như bình thường, nhưng chú ý tới đoạn này hãy chọn như trong hình




Và đừng quên add thêm SqlJDBC4.jar và nhấn OK để thêm vào Project như những Project trước


Nếu bạn chưa có nó thì có thể download lại tại đây: SqlJDBC4.jar



Vẫn là database cũ mình dùng từ trước đến giờ


Khai báo giao diện tìm kiếm gian hàng truyện tranh



Khai báo các biến có trong database



Code kết nối tới database



Khởi chạy ứng dụng, ở đây mình đã thêm StyleSheet nên mới có giao diện này



Gõ keyword tìm kiếm, ở đây sẽ chỉ hiện kết quả tìm ở Name vì trong database tôi gợi ý các biến ở cột đó trước. Kết quả:



Nếu bạn thích thêm cả tìm kiếm bên Price hay Author thì hãy thêm những dòng lệnh này vào cuối database (trên hình 1)



Bạn có thể tham khảo demo ở đây: DemoJSFSearch2






3. Nhận xét:


  JSF có thể giúp bạn thiết kế giao diện một cách dễ dàng, nó không giới hạn đối với HTML và HTTP. nếu so với Struts thì ngắn gọn hơn nhưng chất lượng thì cá nhân mình chưa thể đánh giá được ai hơn ai.

Dù sao các bạn cũng có một cách nữa để sử dụng và so sánh để làm với Struts

Dù sao các bạn cũng có một cách nữa để sử dụng và so sánh để làm với Struts