Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng.. Service Service là một t
Trang 1GI O Ụ V O T O TRƯỜNG I HỌ NH TR NG KHO NG NGH TH NG TIN
N T T NGHI P I HỌ
XÂY DỰNG ỨNG DỤNG TỔNG HỢP TIN TỨC
TỪ TR NG TIN V HƯƠNG TRÌNH
ỌC TIN TRÊN THIẾT BỊ ANDROID
Th ng 6
Trang 2LỜI MỞ ẦU
Công nghệ trên thế giới đang phát triển từng ngày với tốc độ vũ bão Xu hướng hiện nay của ngành công nghệ thông tin không chỉ gói gọn trong việc làm việc với các ứng dụng trên máy tính mà đang chuyển dịch dần thành công nghệ thông tin
và truyền thông Những chiếc máy tính để bàn trở thành những chiếc laptop cơ động Chưa dừng lại ở đó, con người lại kết hợp máy tính với chiếc điện thoại di động để cho ra những thiết bị di động thế hệ mới, có sức mạnh của chiếc máy tính lại nhỏ gọn, cơ động
Đi kèm với sự phát triển của phần cứng như vậy, phần mềm cũng đang phát triển nhanh chóng để phù hợp với các thiết bị thế hệ mới Quan trọng nhất đó chính là các hệ điều hành cho các thiết bị di động Nổi bật nhất gần đây là hệ điều hành hành Android của Google Nó được đánh giá là một hệ điều hành tốt, nhiều tiềm năng phát triển và sẽ có những bước nhảy vọt trong thời gian tới
Nhờ những thiết bị di dộng mạnh mẽ, nhu cầu của con người đối với các thiết
bị di động cũng không còn giới hạn trong việc nghe gọi và nhắn tin như trước, mà vươn cao hơn tới các nhu cầu giải trí, cập nhật thông tin, nhất là trong thời đại bùng
nổ thông tin hiện nay Từ nhu cầu đó, dưới sự hướng dẫn của thầy Trần Minh Văn,
em đã chọn đề tài “Xây dựng ứng dụng tổng hợp tin tức từ các trang tin và chương
trình đọc tin trên thiết bị Android” làm đề tài tốt nghiệp
Trang 3LỜI CẢM ƠN
Trải qua bốn tháng thực hiện, vận dụng những gì đã được học và cũng học thêm được nhiều điều, đồ án tốt nghiệp cũng đã hoàn tất Để có được kết quả này, đó không phải là công sức của cá nhân em, mà còn có sự hỗ trợ hết mình từ gia đình, thầy cô và bạn bè Trước hết, em xin gửi lời tri ân sâu sắc đến tất cả những “người đồng hành” đã luôn ở bên em trong suốt thời gian qua
Lời cảm ơn đầu tiên, em xin gửi đến những người thân yêu trong gia đình, những người luôn luôn ủng hộ em không chỉ trong thời gian qua mà còn cả chặng đường tương lai phía trước
Kế đến, em xin gửi lời cảm ơn chân thành nhất đến thầy Trần Minh Văn, thầy
đã tận tình hướng dẫn em trong suốt quá trình thực hiện đồ án
Bên cạnh đó, em cũng xin bày tỏ lời cảm ơn sâu sắc đến những thầy cô giáo đã giảng dạy em trong hành trình bốn năm, những kiến thức mà em nhận được trên giảng đường đại học sẽ là hành trang giúp em vững bước trên con đường em sắp đi qua
Cuối cùng, em muốn gửi lời cảm ơn sâu sắc đến tất cả bạn bè, những người luôn kịp thời động viên và giúp đỡ em vượt qua những khó khăn, cũng là những thành tố quan trọng mang đến cho em những ý nghĩa tốt đẹp của cuộc đời sinh viên
Em xin chân thành cảm ơn!
Nha Trang, ngày 26 tháng 06 năm 2013
Trang 4NHẬN XÉT Ủ GIẢNG VIÊN HƯỚNG ẪN
Trang 5
NHẬN XÉT Ủ GIẢNG VIÊN PHẢN I N
Trang 6
MỤ LỤ
LỜI MỞ ẦU 1
HƯƠNG TỔNG QUAN 1
ặt vấn đề 1
1.1 Mục tiêu nghiên cứu 2
1.2 Phạm vi nghiên cứu 2
1.3 1.3.1 ối tượng nghiên cứu 2
1.3.2 Phạm vi đề tài 2
HƯƠNG H IỀU HÀNH ANDROID 3
Giới thi u h điều hành Android 3
2.1 Những đặc trưng của h điều hành Android 3
2.2 c tính năng hỗ trợ sẵn trong h điều hành Android 4
2.3 Kiến trúc và các thành phần trong h điều hành Android 5
2.4 2.4.1 Linux kernel (nhân Linux) 5
2.4.2 Libraries 5
2.4.3 Android runtime 6
2.4.4 Application framework 6
2.4.5 Applications 7
Các khái ni m cơ bản trong lập trình ứng dụng Android 7
2.5 2.5.1 Activity 7
2.5.2 Service 10
2.5.3 Content provider 10
2.5.4 Broadcast Receiver 10
2.5.5 View 11
2.5.6 Intent 11
Các thành phần trong một project ứng dụng Android 12
2.6 2.6.1 AndroidManifest.xml 12
2.6.2 File R.java 14
2.6.3 Thư mục src 14
2.6.4 Thư mục res 15
HƯƠNG XML, JSON, SQLITE 16
Sơ lược về công ngh XML 16
3.1 3.1.1 Lịch sử ra đời chuẩn XML, XML là gì? 16
Trang 73.1.3 ặc điểm của XML 17
3.1.4 So sánh XML và HTML 18
Sơ lược về JSON 18
3.2 3.2.1 Giới thi u 18
3.2.2 Các kiểu dữ li u 19
3.2.3 So sánh JSON với XML 19
SQLite 20
3.3. HƯƠNG 4 J V WEB SERVICE 22
Tổng quan về Web Service 22
4.1 4.1.1 Khái ni m 22
4.1.2 ặc điểm của Web service 22
4.1.3 Ưu và nhược điểm của Web service 22
4.1.4 Ưu điểm 22
4.1.5 Nhược điểm 23
Tổng quan về REST 23
4.2 4.2.1 Giới thi u REST 23
4.2.2 c phương thức HTTP 24
4.2.3 Các nguyên tắc của kiến trúc RESTful 24
4.2.4 RESTful Web service 25
JAX-RS và Jersey 25
4.3 4.3.1 Giới thi u JAX-RS 25
4.3.2 Các annotation của JAX-RS 26
4.3.3 Giới thi u Jersey 27
Xây dựng một RESTful Web Service đơn giản với JAX-RS Jersey 27
4.4 4.4.1 Yêu cầu ban đầu 27
4.4.2 Xây dựng Web service đơn giản 27
4.4.3 Chạy thử Web service 30
HƯƠNG 5 NG NGH RSS, ATOM 32
RSS 32
5.1 5.1.1 RSS là gì ? 32
5.1.2 Những điểm mạnh của RSS 32
5.1.3 Cấu trúc của file RSS 33
Atom 35
5.2 5.2.1 Giới thi u 35
5.2.2 So sánh Atom với RSS 2.0 36
Trang 85.2.3 Ví dụ của Atom 1.0 37
CHƯƠNG 6 ỨNG DỤNG ỌC TIN TỨC 38
Kiến trúc tổng thể của ứng dụng 38
6.1 Web service thu thập tin tức 38
6.2 6.2.1 Mô hình thực thể kết hợp 38
6.2.2 Mô hình vật lý dữ li u 39
6.2.3 Hoạt động của Web service 48
6.2.4 Sử dụng Web service 48
hương trình đọc báo NewsFeed trên Android 51
6.3 6.3.1 Mô hình thực thể kết hợp 51
6.3.2 Mô hình vật lý dữ li u 52
6.3.3 Hoạt động của chương trình đọc tin tức 57
6.3.4 Giới thi u chức năng và hướng dẫn sử dụng 58
HƯƠNG 7 KẾT LUẬN V HƯỚNG PHÁT TRIỂN 66
TÀI LI U THAM KHẢO 67
Trang 9NH MỤ ẢNG, SƠ , HÌNH
Hình 2.1 Kiến trúc và các thành phần trong h điều hành Android 5
Hình Vòng đời của một Activity 8
Hình 3.1 Cấu trúc của một tài li u XML 17
Hình 3.2 Giao di n của SQLite manager trong firefox 21
Hình 4.1 Tạo một Dynamic Web Project 28
Hình 4.2 Kết quả truy vấn Web service từ trình duy t 31
Hình 5.1 Ví dụ đọc file RSS bằng chương trình Snarfer 35
Hình 6.1 Kiến trúc tổng thể của ứng dụng 38
Hình 6.2 Mô hình thực thể kết hợp của Web service 39
Hình 6.3 Mô hình vật lý dữ li u của Web service 40
Hình 6.4 Kết quả truy vấn từ trình duy t 50
Hình 6.5 Mô hình thực thể kết hợp của client 51
Hình 6.6 Mô hình vật lý dữ li u của client 52
Hình 6.7 Giao di n chính của chương trình 57
Hình 6.8 Các thành phần trên giao di n chính 58
Hình 6.9 Các thao tác trên giao di n thêm chủ đề 59
Hình 6.10 Các thao tác trên giao di n thêm báo 60
Hình 6.11 Các thao tác trên giao di n quản lý chuyên mục báo 61
Hình 6.12 Các thao tác trên giao di n danh sách tin 62
Hình 6.13 Các thao tác trên giao di n tin chi tiết 63
Hình 6.14 Các thao tác trên giao di n bình luận 64
Hình 6.15 Giao di n xem ảnh 65
Bảng 3.1 So sánh XML và HTML 18
Bảng 4.1 Các annotation của JAX-RS 27
Trang 11Tuy nhiên, việc đọc báo mạng bằng điện thoại di động qua trình duyệt web
có khá nhiều hạn chế như:
Trang báo chứa nhiều thông tin không cần thiết (quảng cáo, header, )
Màn hình điện thoại kích thước nhỏ không phù hợp để hiển thị cả trang báo
Không lưu được tin tức để đọc lại khi không có kết nối mạng,
Từ những hạn chế trên, việc xây dựng một ứng dụng đọc báo riêng trên điện thoại được đặt ra Một số ứng dụng đọc báo trên thị trường hiện nay có chất lượng khá tốt có thể kể đến như Báo Mới, Pega,
Việc lấy tin tức từ trang tin được hầu hết các báo mạng hiện nay hỗ trợ bằng công nghệ RSS, cho phép người sử dụng nhanh chóng lấy được danh mục tin tức mới nhất Tuy nhiên, việc tải cũng như xử lý RSS ở trên điện thoại sẽ gây tiêu tốn tài nguyên, ứng dụng chậm đáp ứng nhất là với điện thoại cấp thấp Từ đó, vấn đề đặt là ra cần xây dựng một server đảm nhận việc thu thập tin tức, ứng dụng sẽ truy vấn dữ liệu trực tiếp từ server
Một số phương pháp trao đổi dữ liệu giữa server và client hiện nay như socket, HTTP request/response Và phương pháp trao đổi dữ liệu bằng giao thức HTTP thông qua một RESTful Web service được chọn bởi những ưu điểm như:
Dễ dàng thao tác, xử lý ở cả client và server
Truy vấn dữ liệu bằng các phương thức HTTP, hỗ trợ nhiều định dạng dữ liệu khác nhau, trong đó nổi bật nhất là JSON và XML
Từ những vấn đề đặt ra kể trên, ý tưởng xây dựng một RESTful Web service thực hiện thu thập tin tức và ứng dụng đọc báo sử dụng Web service này trên điện thoại Android đã ra đời
Trang 12Mục tiêu nghiên cứu
1.2.
Những mục tiêu đặt ra khi nghiên cứu thực hiện đề tài:
Nắm chắc lý thuyết phân tích thiết kế hệ thống
Hoàn thiện kỹ năng lập trình trên môi trường Java cũng như Android SDK trên Java
Xây dựng một Java RESTful Web service thu thập tin tức từ các báo mạng
và đáp ứng các yêu cầu từ người dùng
Xây dựng một ứng dụng đọc báo sử dụng Web service là nguồn cung cấp tin trên điện thoại Android Ứng dụng đáp ứng nhu cầu đọc tin tức cơ bản, cung cấp tin theo các chủ đề, báo, chuyên mục
Web service đảm bảo chức năng:
Thu thập tin tức từ các trang báo tự động
Nhận và đáp ứng các truy vấn dữ liệu từ người dùng
Ứng dụng Android đảm bảo chức năng:
Nhận yêu cầu lấy tin tức từ người dùng và gửi yêu cầu cho Web service
Trang 13CHƯƠNG 2 H IỀU HÀNH ANDROID
Giới thi u h điều hành Android
2.1.
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Như một phần chiến lược của mình để lấn sâu vào lĩnh vực di động, Google đã mua về toàn
bộ quá trình phát triển cũng như đội phát triển nó Đây là con át chủ bài của Google
để cạnh tranh thị phần hệ điều hành di động với Apple
Android là mã nguồn mở và miễn phí, điều này tương đương với việc bất cứ
ai muốn sử dụng Android có thể sử dụng bằng cách tải về mã nguồn android đầy đủ Hơn nữa các nhà cung cấp (thường là những nhà phát triển phần cứng) có thể thêm phần mở rộng và tùy biến cho Android để phân biệt sản phẩm của họ với sản phẩm của những người khác Điều này làm cho mô hình phát triển Android trở nên hấp dẫn và do đó khơi dậy sự quan tâm của nhiều nhà cung cấp Những nhà sản xuất coi Android như một giải pháp – họ sẽ tiếp tục thiết kế phần cứng của riêng mình và sử dụng Android như một hệ điều hành chính
Ưu điểm chính của việc áp dụng Android là nó cung cấp một cách tiếp cận thống nhất để phát triển ứng dụng Các nhà phát triển chỉ cần phát triển cho Android
và các ứng dụng của họ có thể chạy trên nhiều thiết bị khác nhau, miễn là các thiết
bị được hỗ trợ bằng cách sử dụng Android Trong thế giới smartphone, ứng dụng là một phần quan trọng nhất của chuỗi thành công Do đó các nhà sản xuất thiết bị coi Android như là hy vọng tốt nhất để thách thức sự tấn công của Apple
Những đặc trưng của h điều hành Android
2.2.
Application framework: cho phép sử dụng lại và thay thế các thành phần
trong lập trình ứng dụng
Dalvik virtual machine: tối ưu hóa cho thiết bị di động
Intergrated browser: trình duyệt tích hợp, dựa trên cơ chế WebKit mã
nguồn mở
SQLite: cơ sở dữ liệu trong môi trường di động
Media support: hỗ trợ các định dạng audio, video và hình ảnh thông dụng
Trang 14 GSM Telephony: mạng điện thoại di động (phụ thuộc vào phần cứng)
Bluetooth, EDGE, 3G và WiFi: các chuẩn kết nối dữ liệu (phụ thuộc vào
phần cứng)
Camera, GPS, la bàn và gia tốc kế: (phụ thuộc vào phần cứng)
Môi trường ph t triển phong phú: bao gồm thiết bị mô phỏng, công cụ cho
việc dò tìm lỗi, bộ nhớ và định hình hiệu năng và một plugin cho Eclipse IDE
c tính năng hỗ trợ sẵn trong h điều hành Android
2.3.
Các tính năng được hỗ trợ tùy thuộc vào cấu hình phần cứng và phần mềm
Storage: Sử dụng SQLite, một cơ sở dữ liệu quan hệ nhẹ cho việc lưu trữ dữ
liệu
Connectivity: Hỗ trợ GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,
Bluetooth (bao gồm AD2P và AVRCP), Wifi, LTE và WiMAX
Messaging: hỗ trợ cả SMS và MMS
Web browser: Dựa trên mã nguồn mở Webkit, cùng với công nghệ
JavaScrip V8 của Chrome
Media support: Bao gồm hỗ trợ các phương tiện truyền thông sau: H.263,
H.264 (Trong 3GP hoặc MP4 container), MPEG-4 SP, AMR, AMR-WB (3GP container), AAC, HE-AAC (MP4 hoặc 3GP container), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF và BMP
Hardware support: Accelerometer Sensor, Camera, Digital Compass,
Proximity Sensor và GPS
Multi-touch: Hỗ trợ màn hình cảm ứng đa điểm
Multi-tasking: Hỗ trợ ứng dụng đa tác vụ
Flash support: Android 2.3 hỗ trợ Flash 10.1
Tethering: Hỗ trợ kết nối internet không dây hoặc có dây
Trang 15Kiến trúc và các thành phần trong h điều hành Android
2.4.
Hình 2.1 Kiến trúc và các thành phần trong hệ điều hành Android
2.4.1 Linux kernel (nhân Linux)
Kernel Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và tầng dưới của phần mềm Lớp này chứa tất cả các thiết bị mức thấp điều khiển các thành phần phần cứng khác nhau của một thiết bị Android
2.4.2 Libraries
Libraries bao gồm một tập hợp các thư viện lập trình chứa mã lệnh cung cấp những tính năng và thao tác chính trên hệ điều hành Một số các thư viện cơ bản được liệt kê dưới đây:
System C library: BSD-derived triển khai các thư viện hệ thống ngôn ngữ C
chuẩn, được nhúng vào các thiết bị dựa trên hệ điều hành Linux
Media Libraries: Dựa trên PacketVideo's OpenCORE: thư viện này hỗ trợ
cho việc chơi nhạc, quay phim, chụp hình theo các định dạng file MPEG4, H.264, MP3, AAC, AMR, JPG và PNG
Trang 16 Surface Manager: Quản lý truy cập đến các hệ thống con hiển thị cũng như
các lớp đồ họa 2D, 3D từ tầng ứng dụng
LibWebCore: Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng
SGL: Thư viện hỗ trợ đồ hoạ 2D
3D libraries: Thư viện đồ họa 3D
FreeType: bitmap và vector font rendering
SQLite: Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ nhớ
hạn chế SQLite không có quan hệ như các cơ sở dữ liệu khác
2.4.3 Android runtime
Tại cùng một tầng với Libraries, Android runtime cung cấp một bộ lõi thư viện cho phép các nhà phát triển viết các ứng dụng Android bằng cách sử dụng ngôn ngữ lập trình java Android runtime cũng bao gồm các máy ảo Dalvik, cho phép mọi ứng dụng Android chạy trong tiến trình riêng của mình Dalvik là một máy ảo chuyên dụng được thiết kế đặc biệt cho Android và tối ưu hóa cho các thiết
bị điện thoại di động với giới hạn bộ nhớ và CPU
2.4.4 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kì phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo động, thêm các thông báo để ở các thanh trạng thái, và nhiều, nhiều hơn nữa
Nhà phát triển có thể truy cập vào các API được sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các API Đưa ra những khả năng khác nhau của hệ điều hành Android vào ứng dụng để sử dụng chúng trong các ứng dụng của mình
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm: các View (dùng để hiển thị thông tin và để người dùng thao tác), Content Provider (để chia sẻ dữ liệu giữa các ứng dụng), Resource Manager (truy xuất tài nguyên
Trang 17không mã nguồn), Notifycation Manager (hiển thị các thông báo), Activity Manager (quản lý chu trình sống của ứng dụng và điều hướng Activity)
2.4.5 Applications
Tại lớp trên cùng sẽ là các ứng dụng cho Android (như điện thoại, danh bạ, trình duyệt,…) cũng như các ứng dụng được tải về và cài đặt từ Android Market hay bất kỳ ứng dụng nào bạn viết được tại tầng này
Các khái ni m cơ bản trong lập trình ứng dụng Android
2.5.
2.5.1 Activity
Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào Thuật ngữ activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng Android Do gần như mọi activity đều tương tác với người dùng, lớp activity đảm nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện UI với setContentView(View) Một activity có thể mang nhiều dạng khác nhau: Một cửa sổ toàn màn hình (full screen window), một cửa sổ floating (với windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với ActivityGroup)
Để có thể sử dụng trong ứng dụng, mọi activity đều phải được khai báo trong tệp AndroidManifest.xml với một thẻ <activity>
Vòng đời của một Activity
Toàn bộ trạng thái của Activity được biểu diễn trong sơ đồ sau:
Trang 18Hình 2.2 Vòng đời của một Activity
Các activity được quản lí trong một stack chứa activity (Cơ chế vào trước ra sau):
Khi ứng dụng được mở lên thì activity chính sẽ được tạo ra, nó sẽ được thêm vào stack
Khi một activity mới được khởi tạo, nó sẽ được đặt lên trên cùng của stack Lúc này chỉ có duy nhất activity trên cùng là hiển thị nội dung đến
Trang 19người dùng Tất cả các activity còn lại đều chuyển về trạng thái dừng hoạt động
Khi một activity bị đóng nó sẽ bị loại khỏi stack Lúc này activity nằm dưới đó sẽ chuyển từ trạng thái tạm dừng sang trạng thái hoạt động
Một activity có bốn trạng thái:
Active hay Running: Activity đang chạy trên màn hình
Paused: Khi một Activity mất focus nhưng vẫn đang chạy trên màn hình
(Activity bị một activity trong suốt (transparent) hoặc một Activity không chiếm toàn bộ màn hình thiết bị (non-full-sized) đè lên) Tuy vẫn còn tồn tại, nhưng các “paused activity” này sẽ bị hệ thống bắt chấm dứt khi thiếu
bộ nhớ trầm trọng
Stopped: Khi một activity bị che khuất hoàn toàn bởi một activity khác
Tuy vẫn tồn tại, nhưng các “stopped activity” này sẽ thường xuyên bị hệ thống bắt chấm dứt để dành bộ nhớ cho các công việc khác
Killed hay Shutdown: Khi một activity đang Paused hay Stopped,
hệ thống sẽ xóa activity ấy ra khỏi bộ nhớ
Ba vòng đời quan trọng trong Activity:
Vòng đời toàn di n (Entire Lifetime): Diễn ra từ lần gọi
onCreate(Bundle) đầu tiên và kéo dài tới lần gọi onDestroy() cuối cùng
Vòng đời thấy đƣợc (Visible Lifetime): Diễn ra từ khi gọi onStart() và
kéo dài tới khi gọi onStop() Ở vòng đời này, activity được hiển thị trên màn hình mặc dù có thể nó không thể tương tác với người dùng (Activity
có thể bị đè bởi một activity trong suốt hoặc một activity không chiếm toàn bộ màn hình thiết bị (non-full-sized)) Giữa hai phương thức này cần giữ lại các tài nguyên dùng để hiển thị nội dung lên màn hình activity VD: Bạn có thể đăng kí (register) một Broadcast Receiver để theo dõi
“những thay đổi” có ảnh hưởng đến phần giao diện của bạn trong phương thức onStart() và hủy đăng kí (unregister) BroadcastReceiver trong phương thức onStop() Các phương thức onStart() và onStop() có thể được gọi nhiều lần
Trang 20 Vòng đời tr n nền (Foreground Lifetime): Diễn ra từ khi gọi
onResume() và kéo dài tới khi gọi onPause() Ở vòng đời này, activity nằm trên mọi activity khác và tương tác được với người dùng Một activity có thể liên tục thay đổi giữa hai trạng thái Paused và Resumed (VD: Chẳng hạn khi thiết bị sleep)
2.5.2 Service
Service là một thành phần dùng để thực thi một công việc dưới dưới nền hệ điều hành (công việc được thực thi ẩn với người dùng) Thành phần này được dùng cho các công việc cần nhiều thời gian để thực thi hoặc dùng để điều khiển thực thi các công việc từ xa bởi một tiến trình khác
VD: Ứng dụng A chạy trên tiến trình pA kết nối đến ứng dụng B hiện đang chạy trên tiến trình pB để yêu cầu B thực hiện một công việc nào đó
2.5.3 Content provider
Một content provider dùng để quản lý việc chia sẻ một tập dữ liệu ứng dụng nào đó Bạn có thể lưu trữ dữ liệu trên file, trên SQLite database, trên web hoặc trên bất kì nơi lưu trữ nào mà ứng dụng có thể truy xuất Thông qua việc sử dụng content provider một ứng dụng khác có thể truy vấn, chỉnh sửa tập dữ liệu đó
VD: Ứng dụng Contact tích hợp sẵn trong Android cung cấp một content provider dùng để quản lý danh sách contact trên ứng dụng Bằng cách này, bất kì chương trình nào cũng có thể truy xuất danh sách contact này mặc cho “nguyên tắc đặc quyền tối thiểu” đã đề cập ở trên (Lưu ý: Nếu không cung cấp một content provider thì dữ liệu contact chỉ có thể được sử dụng bởi ứng dụng Contact và không thể được truy xuất bởi ứng dụng nào khác)
2.5.4 Broadcast Receiver
Broadcast Receiver là một thành phần hồi đáp những tín hiệu được phát ra trên toàn hệ thống Có rất nhiều Broadcast Receiver được xây dựng sẵn trên hệ điều hành Android
VD: Có Broadcast Receiver dùng để bắt tín hiệu tắt màn hình, tín hiệu pin yếu… Người phát triển có thể tự xây dựng một Broadcast Receiver để bắt các tín hiện cần thiết cho ứng dụng VD: Bắt tín hiệu để biết một dữ liệu nào đó đã được tải
về thiết bị và sẵn sàng để sử dụng Mặc dù một Broadcast Receiver không hiển thị
Trang 21giao diện cho người dùng quan sát nhưng nó có thể tạo các thông báo trên thanh trạng thái Trong một số trường hợp Broadcast Receiver có thể khởi động một service để thực thi một số công việc nào đó
2.5.6 Intent
Một đối tượng Intent là một gói thông tin Nó chứa thông tin có ích cho các component tiếp nhận intent (chẳng hạn như các hành động được thực hiện và các dữ liệu với hoạt động trên) cộng với các thông tin liên quan đến hệ thống Android (như các chủng loại thành phần nên xử lý các intent và hướng dẫn làm thế nào với khởi động một activity mục tiêu)
Ba trong số bốn loại thành phần chính của một ứng dụng Android (Activity, Service, Broadcast Receiver) có thể được khởi động bởi một đối tượng Intent Trong đó đối tượng Intent có ý nghĩa gần giống như một đường dẫn đến một địa chỉ web (URLs) mà hàng ngày mọi người vẫn sử dụng Định dạng URLs được Tim Berners phát minh để sử dụng trong giao thức Hypertext Transfer Protocol (HTTP) Định dạng này là một hệ thống các động từ đi kèm các địa chỉ Địa chỉ sẽ xác định nguồn tài nguyên như Web page, hình ảnh Động từ sẽ xác định cần phải làm cái gì với nguồn tài nguyên đó: GET để lấy dữ liệu về, POST để đưa dữ liệu lên để thực thi một công việc nào đó Khái niệm Intent cũng tương tự, Intent là một mô tả trừu tượng của một hành động được thực thi Trong đó đối tượng Intent sẽ xác định thành phần nào (Activity, Service, Broadcast Receiver) sẽ được khởi động, dữ liệu cũng như hành động cần thực thi với dữ liệu đi kèm
VD: Để hiển thị thông tin của một contact Ta cần tạo một đối tượng kiểu Intent xác định hành động là “xem thông tin contact”, thành phần Android sẽ được
Trang 22khởi động để thực thi hành động là activity “Contact details” của ứng dụng Contact (Ứng dụng tích hợp sẵn trong hệ điều hành Android) và dữ liệu đi kèm sẽ là id của contact cần xem thông tin
Có thể sử dụng Intent để:
Khởi động một Activity
Khởi động một Service
Kết nối đến một Remote service
Khởi động một Broadcast Receiver
Thực thi một câu truy vấn dữ liệu trên Content Provider
Các thành phần trong một project ứng dụng Android
2.6.
2.6.1 AndroidManifest.xml
Trước khi hệ điều hành Android có thể khởi động một thành phần (Activity, Services, Broadcast Receiver) thì hệ thống phải biết thành phần này có tồn tại hay không bằng cách đọc file AndroidManifest.xml của ứng dụng Mỗi ứng dụng phải khai báo mọi thành phần (Activity, Services, Broadcast Receiver) trong file này và phải đặt ở thư mục gốc của ứng dụng
Mỗi file manifest có những khai báo chứa thông tin về ứng dụng Android:
Permission: Định danh xác định các quyền của người sử dụng như truy xuất
internet, truy xuất danh sách contact…
Version: Xác định phiên bản API tối thiểu mà ứng dụng có thể thực thi
Phiên bản API này tương ứng với các phiên bản của hệ điều hành Android
Application: Các tính năng phần cứng cần thiết cho ứng dụng như GPS,
camera, Bluetooth… Các bộ API liên kết sử dụng trong ứng dụng (VD: Google map…)
Một file AndroidManifest.xml (do Eclipse tự tạo, khi lập trình tùy theo tình huống ta thêm vào các tính năng) có cấu trúc như sau:
Trang 23<?xml version ="1.0" encoding ="utf-8" ?>
sử dụng các thẻ:
<activity>: Khai báo một Activity
<service>: Khai báo một Service
<receiver>: Khai báo một Broadcast Reciever
<provider>: Khai báo một Content Provider
Ngoài việc khai bao các thành phần tồn tại trong ứng dụng còn có các khai báo:
<supports-screens>: Khai báo loại màn hình mà ứng dụng hỗ trợ
<uses-configuration>: Khai báo phần cứng nhập liệu cần thiết cho ứng dụng
(VD: Bàn phím, trackball, phím bấm năm chiều…)
Trang 24 <uses-feature>: Các tính năng phần cứng cần thiết cho ứng dụng
<uses-sdk>: Phiên bản API tối thiểu
2.6.2 File R.java
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được
sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy ra làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quá trình xây dựng ứng dụng
Dưới đây là nội dung của một file R.java:
package com.hongngoan.newsfeed;
public final class R {
public static final class anim {
public static final int anim_zone=0x7f040000;
public static final int slide_in_from_bottom=0x7f040001; public static final int slide_in_from_left=0x7f040002; public static final int slide_in_from_right=0x7f040003; public static final int slide_in_from_top=0x7f040004; public static final int slide_out_to_bottom=0x7f040005; public static final int slide_out_to_left=0x7f040006; public static final int slide_out_to_right=0x7f040007; public static final int slide_out_to_top=0x7f040008;
}
public static final class attr {
public static final int actionBarDivider=0x7f01002f;
public static final int actionBarSize=0x7f01002e;
public static final int SlidingMenu_viewBehind = 2;
Trang 252.6.4 Thƣ mục res
Ở đây ta có thể lưu trữ các file tài nguyên như hình ảnh, các file XML để định nghĩa các layout và hơn nữa Trong thư mục này có các thư mục khác như Drawable, Layout và Values
Drawable: Ở đây lưu trữ các file đồ họa khác nhau Ta có thể nhìn thấy ba
loại thư mục drawable Bởi vì có rất nhiều thiết bị Android với độ phân giải màn hình khác nhau Theo mặc định, có một số phiên bản của thư mục này như: drawable-mdpi, drawable-hdpi, Nó được yêu cầu để thích ứng với các độ phân giải màn hình khác nhau
Layout: Đây là nơi chứa các file XML layout Các file layout là các file
XML trong đó định nghĩa các đối tượng Android khác nhau (chẳng hạn như TextBox, Buttons, …) được tổ chức như thế nào trên màn hình
Values: Các file XML lưu trữ các giá trị chuỗi khác nhau (các title, label,…)
Trang 26CHƯƠNG 3 XML, JSON, SQLITE
Công nghệ XML ra đời là kết quả của các nghiên cứu về dạng biểu diễn thông tin khi cần trao đổi giữa các hệ thống tin học
Dạng biểu diễn cần thỏa mãn các yêu cầu sau:
Cho phép trao đổi trên phạm vi rộng (Internet)
Dễ dàng trong việc kết xuất và tiếp nhận khi trao đổi
Tuân theo một định chuẩn chung được chấp nhận và hỗ trợ của nhiều môi trường phát triển phần mềm
XML là ngôn ngữ đánh dấu chuẩn do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet Các ngôn ngữ dựa trên XML (ví dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đổi
và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng
Một file XML gồm có 2 phần:
Trang 27Hình 3.1 Cấu trúc của một tài liệu XML
Document Prolog: lưu trữ metadata của XML gồm 2 phần: khai báo XML
và khai báo kiểu dữ liệu trong XML Phần khai báo XML (XML declararion) bao gồm các thông tin về phiên bản (version) của XML, charset, encoding… Phần khai báo kiểu dữ liệu trong XML (DTD) dùng để khai báo cấu trúc của các thẻ dùng trong XML
Root element hay còn gọi là Document Element: chứa tất cả các phần tử và
nội dung của nó Một phần tử của XML phải có thẻ mở và thẻ đóng
Liên kết tài liệu với nhau: XLink and Xpointer
Có khả năng tạo định dạng mới (Stylability)
XSL - Extensible Stylesheet Language
Các định dạng XSL khác nhau có thể được dùng để biểu diễn dữ liệu theo nhiều cách khác nhau
Trang 28 Tái sử dụng (Inline Reusability): Có thể kết hợp từ nhiều thực thể riêng biệt nhau
Phân cấp (Hierarchical): Truy cập nhanh hơn và sắp xếp lại dễ dàng hơn
Dùng để mô tả dữ liệu và chú trọng vào
nội dung của dữ liệu
Hiển thị thông tin Mô tả thông tin
Bảng 3.1 So sánh XML và HTML
Sơ lƣợc về JSON
3.2.
3.2.1 Giới thi u
JSON (JavaScript Object Notation) là một chuẩn mở dạng text được thiết
kế để trao đổi dữ liệu “con người đọc được” (human-readable) Định dạng JSON được định nghĩa bởi Douglas Crockford, và được mô tả chi tiết theo RFC 4627
JSON được phát triển từ ngôn ngữ Javascript để biểu diễn các kiểu dữ liệu đơn giản và mảng, chủ yếu được dùng để vận chuyển thông tin giữa các thành phần của một chương trình Mặc dù có liên quan với Javascript, JSON là một ngôn ngữ độc lập, có bộ phân tích ở rất nhiều ngôn ngữ JSON cũng như XML, nó chỉ mô tả
dữ liệu, không có khả năng trình bày, không có khả năng "chạy", nói chung là thụ động.
Ví dụ về JSON sau mô tả 2 gia đình và các thành viên:
{
giaDinhChuChin: [
{ lam: " Cha ", ten: " Chín ", tuoi: 50, nam: true, nhomMau: " O " }, { lam: " Mẹ ", ten: " Tái ", tuoi: 49, nam: false, nhomMau: " A " }, { lam: " Con ", ten: " Tèo ", tuoi: 15, nam: true, nhomMau: " AB " },
Trang 29 Number: Kiểu số bao gồm số nguyên và số thực
String: Kiểu chuỗi, nội dung bao bởi cặp dấu nháy kép “”, những ký tự đặc biệt được escape bởi dấu \ Theo chuẩn JSON thì không sử dụng dấu nháy đơn như Javascript để bọc chuỗi
Boolean: Kiểu luận lý bao gồm true và false
Array: Kiểu mảng, gồm các phần tử phân cách nhau bởi dấu phẩy, mảng được bao bởi cặp dấu [ ]
Object: Kiểu đối tượng, gồm những cặp giá trị đi cùng nhau, mỗi cặp phân cách bởi dấu phẩy, đối tượng được bao bởi cặp dấu { }, cặp giá trị bao gồm tên và giá trị được phân cách bởi dấu hai chấm “:”
Null: Giá trị null, không có gì cả
3.2.3 So sánh JSON với XML
Giống nhau và khác nhau so với XML :
Giống nhau:
JSON là văn bản trơn (không có định dạng (màu sắc, cỡ chữ,…))
JSON là ngôn ngữ "tự mô tả" (người dùng có thể hiểu được)
JSON có cấu trúc phân cấp (có cấu trúc cây)
JSON có thể được phân tích cú pháp bởi JavaScript
Dữ liệu JSON có thể được truyền đi bằng AJAX
Khác nhau:
JSON không có thẻ kết thúc
Trang 30 JSON ngắn hơn XML
JSON đọc, ghi và xử lý với tốc độ nhanh hơn
JSON có thể được phân tích cú pháp bằng hàm dựng sẵn trong JavaScript
SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa tầm thì SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ Với các đặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm, và là
sự lựa chọn phù hợp cho những người bắt đầu học database Hiện nay thì SQLite đã được ứng dụng vào smartphone như iPhone và Android để lưu trữ dữ liệu
Để có thể dễ dàng thao tác với SQLite chúng ta có thể sử dụng trình duyệt FireFox và tải về plugin SQLite tại link sau: http://code.google.com/p/sqlite-manager/
Sau khi tải về file xpi, kéo file này vào cửa sổ Firefox để cài đặt plugin Sau khi cài đặt plugin xong thì vào Menu_Tools trong Firefox sẽ có chức năng SQLite Manager Hình 3.2 là giao diện tool SQLite Manager trên trình duyệt Firefox
Trang 31Hình 3.2 Giao diện của SQLite manager trong firefox.
Trang 32CHƯƠNG 4 JAVA WEB SERVICE
Tổng quan về Web Service
4.1.
4.1.1 Khái ni m
Nói một cách đơn giản, Web service là một ứng dụng, một tiện ích mà các nhà phát triển muốn cung cấp rộng rãi cho nhiều người, nhiều tổ chức có thể sử dụng, tương tự như khi chúng ta xây dựng một trang web để cả thế giới có thể vào xem Web service là những ứng dụng chạy trên nền web, điều khác biệt so với các ứng dụng web bình thường khác là người dùng (client) của các Web service không chỉ là trình duyệt web (web browser) mà còn có thể là những ứng dụng chạy trên máy tính cá nhân (desktop) hay trên các thiết bị di động (mobile device)
4.1.2 ặc điểm của Web service
Theo đặc tả của W3C (World Wide Web Consortium), Web service có khả năng tương tác với các hệ thống khác thông qua một giao diện chung được mô tả bằng XML
Web service cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
Một Web service bao gồm nhiều module và được công bố trên mạng Internet
để người dùng có thể sử dụng
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server
Nó có thể được triển khai bởi một phần mềm ứng dụng phía server, ví dụ như PHP, Java, Oracle Application server hay Microsoft.NET…
4.1.3 Ưu và nhược điểm của Web service
Trang 33 Thúc đẩy phát triển các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web service và công bố rộng rãi trên mạng Internet
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong
hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành dịch vụ, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
Ở góc độ doanh nghiệp, Web service là một công nghệ phục vụ rất tốt trong việc quảng bá dịch vụ của mình cho đa dạng khách hàng
4.1.5 Nhƣợc điểm
Có quá nhiều chuẩn cho Web service khiến cho người dùng khó nắm bắt cũng như gây khó khăn cho các nhà phát triển
An toàn và bảo mật thông tin là một vấn đề nan giải của Web service
Có nhiều vấn đề về các tác vụ đòi hỏi transaction (ví dụ như chuyển tiền qua lại giữa các ngân hàng) chưa được giải quyết hoàn chỉnh
Tốc độ thực thi (performance) của Web service phụ thuộc rất nhiều vào tốc
độ đường truyền Internet và nhìn chung các Web service thực thi chậm hơn các ứng dụng bình thường khác
Vấn đề chất lượng dịch vụ (Quality of Service - QoS) còn chưa được đảm bảo, nhất là khi Web service bị rơi vào tình trạng quá tải và có thể gây ra những thiệt hại lớn cho phía máy khách
Tổng quan về REST
4.2.
4.2.1 Giới thi u REST
REST là một kiểu kiến trúc dựa trên chuẩn web và giao thức HTTP REST lần đầu tiên được mô tả bởi Roy Fielding vào năm 2000
Trong một kiến trúc dựa trên REST, mọi thứ đều là tài nguyên Một tài nguyên được truy cập thông qua một giao diện thông thường dựa trên các phương thức theo chuẩn HTTP
Trang 34Trong một kiến trúc dựa trên REST, thông thường sẽ có một REST server để cung cấp sự truy cập tới tài nguyên và một REST client để truy cập và chỉnh sửa các tài nguyên REST
Mỗi tài nguyên nên được hỗ trợ bởi các phương thức HTTP phổ biến Các tài nguyên được xác định bởi các ID, điển hình là các URI
REST cho phép các tài nguyên có các kiểu trình bày khác nhau, ví dụ text, xml, json, … REST client có thể yêu cầu một kiểu trình bày cụ thể thể thông qua giao thức HTTP (yêu cầu nội dung)
PUT thường được sử dụng trong thao tác insert hoặc update tài nguyên Nó cũng là một thao tác không thay đổi Khi sử dụng PUT, client biết trước định danh của tài nguyên đó Không đổi ở chỗ thao tác PUT nếu được thực hiện lại thì sẽ không gây ra thêm thay đổi nào cho server Một ví dụ tương tự là một tài liệu Word
mà bạn đang chỉnh sửa, bạn nhấp vào nút "lưu" bao nhiêu lần thì tài liệu vẫn không thay đổi
DELETE là thao tác thường được dùng để xóa tài nguyên
POST là thao tác duy nhất không có tính không đổi và không an toàn của HTTP Nó được hạn chế tính không đổi để tạo cảm giác linh hoạt cho người sử dụng Trong một hệ thống RESTFul, POST thường được sử dụng để tạo tài nguyên
mà bạn không biết rõ định danh Với PUT bạn biết chính xác đối tượng bạn đang tạo
4.2.3 Các nguyên tắc của kiến trúc RESTful
REST không phải là giao thức cụ thể, nhưng khi người ta nói về REST họ
Trang 35ngặt như một giao thức truyền tải và do đó sử dụng một tập hợp con rất nhỏ các khả năng của HTTP Nhiều người sẽ nói rằng Web Service sử dụng HTTP chỉ để tạo đường hầm thông qua tường lửa HTTP thực sự là một giao thức ứng dụng rất phong phú mang đến cho chúng ta những thứ như đàm phán nội dung và bộ nhớ đệm phân tán Các RESTful Web service cố gắng tận dụng HTTP bằng cách sử dụng nguyên tắc kiến trúc cụ thể của nó Các nguyên tắc của RESTful Web service:
Địa chỉ hóa các tài nguyên Mỗi thứ trên mạng của bạn sẽ có một ID Với REST qua HTTP, mỗi đối tượng sẽ có URI cụ thể của riêng mình
Một giao diện hạn chế, không thay đổi Khi áp dụng REST qua HTTP, phải bám vào các phương thức được cung cấp bởi HTTP Điều này có ý nghĩa phải sử dụng đúng ý nghĩa các phương thức GET, POST, PUT và DELETE
Hướng trình diễn Một đối tượng được tham chiếu bởi một URI có thể có các kiểu trình bày nội dung khác nhau Các nền tảng khác nhau cần các định dạng khác nhau AJAX có thể cần JSON Một ứng dụng Java có thể cần XML
Giao tiếp phi trạng thái Các ứng dụng phi trạng thái dễ dàng hơn khi mở rộng
4.2.4 RESTful Web service
Một RESTful Web service dựa trên các phương thức HTTP và khái niệm của REST Một RESTful Web service thường xác định URI cơ sở cho các dịch vụ, hỗ trợ các loại MIME (XML, Text, JSON, người dùng định nghĩa, …) và một tập các thao tác (POST, GET, PUT, DELETE) được hỗ trợ
JAX-RS và Jersey
4.3.
4.3.1 Giới thi u JAX-RS
Java hỗ trợ REST thông qua đặc tả Java Specification Request 311 (JSR) Đặc tả này được gọi là JAX-RS (Java API for RESTful Web Service) JAX-RS sử dụng các annotation để định nghĩa tính liên quan với REST của các lớp Java
Jersey là một cài đặt cụ thể của đặc tả này Jersey cơ bản bao gồm một REST server và một REST client Client được cung cấp một thư viện để giao tiếp với server
Trang 36Ở phía server, Jersey sử dụng một servlet có thể quét các lớp được xác định trước để xác định tài nguyên RESTful Các lớp được quét được định nghĩa thông qua các tập tin cấu hình web.xml
URL cơ sở của servlet là:
4.3.2 Các annotation của JAX-RS
Các annotation quan trọng nhất trong JAX-RS được liệt kê trong bảng 4.1
@PATH(your_path) Thiết lập đường dẫn cơ sở URL + /your_path
@POST Chỉ ra rằng phương thức dưới đây sẽ trả lời cho một yêu
@Produces(type [, type]) @Produces xác định loại MIME nào sẽ được đáp ứng
khi đi với phương thức có annotation với @GET
Trang 37@Consumes(type[,type]) @Consumes xác định loại MIME được nhận từ client
bởi phương thức có annotation này
@PathParam Được sử dụng để đưa các giá trị từ URL vào một tham
số của phương thức
@QueryParam Đưa giá trị của một tham số truy vấn HTTP tham số vào
giá trị của một biến trong phương thức
Bảng 4.1 Các annotation của JAX-RS
4.3.3 Giới thi u Jersey
Jersey là thư viện mã nguồn mở cài đặt chi tiết đặc tả JAX-RS (JSR 311) Là cài đặt tham chiếu để xây dựng các RESTful Web service Ngoài việc là bản cài đặt tham chiếu, Jersey cung cấp một API để các nhà phát triển có thể mở rộng Jersey cho phù hợp với nhu cầu của họ
Xây dựng một RESTful Web Service đơn giản với JAX-RS Jersey 4.4.
4.4.1 Yêu cầu ban đầu
Trước khi tiến hành xây dựng một RESTful Web Service đơn giản, máy tính cần được chuẩn bị sẵn một số thành phần sau:
JDK hoặc JRE 7 Tải về và cài đặt JDK hoặc JRE tại địa chỉ sau:
4.4.2 Xây dựng Web service đơn giản
Tạo một Dynamic Web Project mới
Trang 38Hình 4.1 Tạo một Dynamic Web Project Copy tất cả các tập tin trong thư viện Jersey vào trong thư mục WEB-INF/lib
Tạo một lớp tài nguyên như sau
public class Hello {
// Phương thức được gọi nếu yêu cầu kiểu TEXT
@GET