Thứ Năm, 31 tháng 7, 2014

Validate XML


Module 3.1:Sr. No. Assignment Question Create an application, which demonstrates the generation of an error during parsing an XML document. Write the code for handling different types of errors and exceptions. Define an endDocument() method to override the contentHandler. Declare a method to override the error method of errorhandler.

B1: Tạo java class gồm các  class sau:


B2: Triển khai code cho lớp Handler.java,override method endDocument()


B3:Code cho hàm main


Kết quả:



Module3.2:Create an application, which demonstrates the implementations of DTDHandler interface methods. As the DefaultHandler implements the DTDHandler interface, you need to override the desired methods of DTDHandler interface.

B1: Tạo java class gồm các  class sau:



B2: Tạo file tomcat-users.xml


B3:Triển khai code cho lớp Handler.java,override  các  method endDocument(),notationDecl(),unparsedEntityDecl()


B4:Code cho hàm main

Kết quả:



Module 3.3:Create an XML file Report.xml that contains the sales data for this financial year. 
Create an application that demonstrates the implementations of LexicalHandler interface methods 
The application should display the number of entities, CDATA, and comments in the Report.xml document.

B1: Tạo java class gồm các  class sau:


B2:Tạo file sample.xml


B3:Triển khai code cho lớp Handler.java,override 1 số phương thức


B4:code cho hàm main


Kết quả:



Nhận xét:
-Các advance of SAX giúp cho việc kiểm soát lỗi tốt hơn.
-Giúp cho việc xây dựng ứng dụng đơn giản hơn













Overview DOM


Ta sử dụng DOM vì SAX có nhược điểm là phải đọc lần lượt tuần tự từ trên xuống dưới ,ta không thể truy xuất bất kỳ một điểm nào đó ngay lập tức.
-SAX khó khăn trong việc tìm kiếm và không hỗ trợ DTDHandler... vì vậy ta nên dùng DOM

DOM

DOM cung cấp tham chiếu hoàn thành cấu trúc hình cây của tài liệu XML và lưu trữ chúng trong bộ nhớ.

Lợi ích khi dung DOM :

-Truy xuât nhiều tài liệu
-Quản lý cấu trúc dữ liệu phức tạp
-Cho phép thay đổi tài liệu
-Cho phép truy xuất các thành phần trong xml một cách ngẫu nhiên

Các thành phần của DOM

-XML biểu diễn dữ liệu dưới dạng cây vì vậy DOM cung biểu diễn dữ liệu dưới dạng tương tự.
-DOM tạo cấu trúc cây của tài liệu XML,với mỗi elemen XML được biểu diễn như 1 node.


Làm việc với DOM


DOM làm việc gần tương tự với SAX,trong SAX có parser còn ở đây ta có Documentbuilder,muốn có documentbuilder ta có documetbuilder factory.

 hình của Dom yêu cầu Dom xác đỉnh  parser để quét tài liệu.Nhưng parsersnày sẽ quét tài liệu  lưu trữ  trong bộ  nhớ .Dom làm việc theo những bướcdưới đây:
-Method của class DocumentBuilder  Trong DOM API sẽ tạo ra một cấu trúc cây củatài liệu xml   lặp lại với mỗi thành phần.
-Các method trong các interface của DOMAPI sẽ cung cấp khả năng truy xuất vàotài liệu xml  node của  để  thêm ,sửa xóa các thành phần node trong tài liệu


Các interface mà DOM có:Text,Node,Docunment,Attr,Element,NodeList

Nhận xét:
Việc sử dụng DOM giúp khắc phục triệt để những nhược điểm của SAX
-Các làm việc đơn giản tương tự SAX nhưng hiệu quả cao
-DOM phân tich toàn bộ file XML



What is the difference between SAXParser and XMLReader

SAXParser : 
-Sử dụng mô hình kéo
-các phương thức parser của SAXParser chỉ ủy thác cho một XMLReader nội bộ và thuận tiện hơn
-SAXParser quét file Xml từ trên xuống,nên không tốn nhiều bộ nhớ ,áp dụng được với những file XML có dung lượng lớn.
-Code ít

SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
parser.parse(new File(filename), new DocHandler());


XmlReader:-
-sử dụng mô hình đẩy
 - duyệt qua các phần tử XML một nội dung cùng lúc, trong khi bạn đang xem xét giá trị và chuyển đến các phần tử (element) tiếp theo. Do vậy, nó tiêu thụ bộ nhớ rất ít và chỉ nắm giữ các yếu tố hiện tại và làm cho nó trở nên nhanh hơn.
-Nhiêu code hơn

SAXParserFactory sfactory = SAXParserFactory.newInstance();
SAXParser parser = sfactory.newSAXParser();
XMLReader xmlparser = parser.getXMLReader();
xmlparser.setContentHandler(new DocHandler());
xmlparser.parse(new InputSource("test1.xml"));   

Nhận xét:Tùy vào từng trường hợp mà ta sử dụng SAXParser hay XMLReader ,trong một số trường hợp nâng cao ta phải sử dụng XMLReader như:

-Thiết lập tính năng không đạt tiêu chuẩn để thực hiện
-Thiết lập các lớp khác nhau như ContentHandler, EntityResolver hoặc ErrorHandler
-Chuyển đổi xử lý trong khi phân tích cú pháp





Thứ Ba, 29 tháng 7, 2014

Apply filter

Demo :Create an application to get only name of employees of departmant 24, that has status contact ( using xml  file in sample )


B1:Tạo mới java application,gồm các components sau:



B2:Tạo class DataFilter để tạo ra filter



B3:Tạo file employees.xml có nội dung như sau

B4:Code cho class DataProcess,viết hàm để xử lý lỗi



B5:Code cho hàm main


Kết quả:



Nhận xét:Việc sử dụng filter giúp cho việc kiểm soát dữ liệu tốt hơn,ứng dụng chạy mượt hơn 
-quá trình xử lý lỗi tốt hơn,lỗi ít hơn.
-Filter giúp lọc dữ liệu giữa XML và Handler khi ta không muốn đọc toàn bộ file XML.










Advance topic of SAX



Handling Errors

So sánh non validating parser và validating parser


Non validating parser : Khi chúng ta làm việc parsers không phải được config để validate dữ liệu,validate xem file xml có được check đúng hay không.Thì khi ta gặp lỗi trong quá trình quét dữ liệu,nếu lỗi này nghiêm trọng thì nó sẽ tung ra exception,còn nếu không thì nó sẽ dùng defaulthandler để genrate ra một exception trong trace.


Validating parser : Còn khi chúng ta dùng parsers được config để validate dữ liệu thì chúng ta vẫn làm những bước như bình thường,ta phải tạo ra parser,khác biệt ở đây là ta set mode cho validation có report error,và set XML Schema.Để sử lý lỗi ta phải create va register ErrorHandler vào parser tức là ta implement ErrorHandler.Trong quá trình quét dữ liệu thì ErrorHandler sẽ xử lý.


DTD Handler

DTDHandler là một interface để nhận thông báo của các sự kiện liên quan đến DTD.Nếu ứng dụng SAX cần thông tin về notation và unparsed entities thì ứng dụng sẽ implement và đăng ký một thể hiện với SAX parser sử dụng các phương thức setDTDHandler của parser.Parser sử dụng các thể hiện đó để thông báo  các notations và unparsed entities cho ứng dụng.


 Tất cả được thực  hiện tương tự DefaultHandler ,ta phải overide 2 phương thức của DTD Handler đó là:



 voidnotationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
Nhận về thông báo của một sự kiện notation khai báo .
 voidunparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)
          Receive notification of an unparsed entity declaration event.
Nhận về thông báo của một sự kiện không được parser 



 Lexical Handler

Lexical Handler dùng để xác định các comments,phần CDATA,và những thứ liên quan đến các parserd entities.


Entity Resolver

Nếu một ứng dụng SAX cần thực hiện xử lý tùy biến cho các entities bên ngoài, nó phải implement interface này và đăng ký một thể hiện với SAX driver bằng cách sử dụng phương pháp  setEntityResolver. 



Filter
Là SAX interface đóng vai trò là 2 stream cơ bản:   -  1 là sự kiện  từ  SAX driver (thường là một XMLReader) cho các ứng dụng;
   - 2 là request  từ các ứng dụng tới SAX driver.


Nhận xét:
-Các advance of SAX giúp cho việc kiểm soát lỗi tốt hơn.
-Giúp cho việc xây dựng ứng dụng đơn giản hơn


Thứ Hai, 28 tháng 7, 2014

Working with SAX

Module 2.1: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.

B1:Tạo 1 java application,có các components như sau:




B2:tạo tomcat-user.xml


B3:tạo class CounterHandler


B4:Code cho class DemoSax1


Kết quả:


Module2.2: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. Make necessary arrangements to accept a command line parameter from the user to specify the name of the XML document that holds the list of registered students.

B1:Tạo mới java application như bài trên
B2:Tạo student.xml



B3:code cho class StudentHandler


B4:code chạy chương trình


Kết quả:




Module 2.3:Write a program which demonstrates the use of SAX parser for a simple search in XML document. The program searches a specified user in the tomcat-users.xml file andHa prints an the role of the given user on search completion. This program should include two command-line parameters. The first parameter specifies the tomcat-users.xml file and the second parameter specifies the user name to search in the configuration file.

B1:Tạo mới java application như bài trên
B2:Tạo users.xml


B3:code trong class UserHandler


B4:code trong class DemoSax3


Ket quả:



Nhận xét:SAX giúp cho việc lấy dữ liệu tư file xml nhah hơn và đơn giản bao giờ hết,không tốn quá nhiều bộ nhớ cho việc đọc dữ liêu tư file xml















Chủ Nhật, 27 tháng 7, 2014

Describe overview of JAXP

Java API for XML Processing, hay JAXP, là một trong các API cho lập trình Java XML. Nó cung cấp khả năng kiểm chứng và phân tích các tài liệu XML. Hai loại giao diện (interface) để phân tích cơ bản là:
  • Giao diện phân tích dạng Mô hình đối tượng tài liệu (Document Object Model) - viết tắt là DOM
  • Giao diện phân tích API đơn giản dành cho XML (Simple API for XML) - viết tắt là SAX

Parsing XML:XML Parsers là chương trình giúp chúng ta lấy thông tin và điều khiển dữ liệu trong XML.
Lợi ích của Parsing XML:
-Ngôn ngữ không phụ thuộc
-Code không phụ thuộc
-Linh hoạt
-Phù hợp cho  nhiều việc khác nhau.

                            

Parser gồm 2 loại:
-Event-Based Parsers(ví dụ SAX):khi gặp thuộc tính,element parser sẽ tự biết phải làm gì.
-Object-Based Parsers(ví dụ DOM):convert sang object

So sánh SAX và DOM
SAX:phù hợp quét những tài liệu lớn,SAX hữu ích cho việc lấy tập nhỏ trong rất nhiều thông tin,SAX nhanh hơn DOM

DOM:phù hợp với tài liệu nhỏ,xử lý chậm hơn SAX



use of JAXP:
  JAXP không những dùng để chuyển đổi dữ liệu giữa client và server mà còn được dùng rất nhiều việc khác:
    -Chuyển đổi dữ liệu dưới dạng xml
    -Các bộ thư viện có trong SAX được chia thành 5 nhóm:
   +Interfaces làm việc với Parser
   +Interfaces làm việc trng ứng dụng
   +Các lớp chuẩn của SAX
   +Các lớp  giúp đỡ
   +Các lớp java


XSTL
Ngôn ngữ tập tin định dạng XML dành cho việc chuyển đổi - (The XML Stylesheet Language for Transformations, hay XSLT) cho phép biến đổi một bản tài liệu XML sang các dạng thức dữ liệu khác.
-XSL (eXtensible Stylesheet Language) gồm 2 thành phần:
+XSL-T (Transform): chủ yếu được dùng để chuyển đổi cấu trúc văn bản XML.
+XSL-FO (Formating Object) dùng để định dạng văn bản XML

Nhận xét:
XML là một chuẩn phổ biến dùng để trao đổi dữ liệu trong các ứng dụng hiện nay.
XML có cấu trúc chặt chẽ






Thứ Hai, 21 tháng 7, 2014

Login JSF

Login Assignment:

Bước 1: Tạo database, table Account:



Bước 2: Tạo new project , chon JSF,gom cac components sau:





Bước 3: add jdbc4  để kết nối database



Bước 4: Tạo User.java




Bước 5: Tạo database

Code kết nối

                           

 Code ma hoa password  MD5



Code checkLogin


Bươc 6, Tạo JSF ManageBean Login.java








Bước 7: viêt code cho trang index.xhtml và trang protected.xhtml

index.xhtml




 protectd.xhtml



Kết quả:




Nhận xét : 
Ưu điểm:
     làm việc với JSF đơn giản hơn với Struts.
     Cách code đơn giản và dễ hiểu hơn.
Nhược điểm:
     Ít tài liệu trong việc sử dụng các thẻ.
     việc nhúng Css còn khó.