Thứ Năm, 22 tháng 12, 2016

Asynchronous Servlet Communication

1:Giới thiệu.
-kiến trúc của Servlet dựa trên Multithreaded model. 
-Web container create Servlet threads trong quá trình client request.
-mỗi 1 client request và respon trở lại là một luồng riêng biệt.
-Mỗi 1 xử lí của client sẽ không được xử lý trong một thời gian nào nó và phải chờ vì
 +Servlet có thể mất 1 thời gian rât lâu để thực hiện như gọi đến database thực hiện query và gọi từ xa tới Web service 
 +Servlet phải chờ cho 1 vài  dependent event  trong quá trình cho respon generation 
*quá trình xử lý Asynchronous trong servlet 
-Client request tới servlet sẽ bị chặn bởi Filter dể xử lí 1 vài yêu cầu cho servlet 
-Sau đó servlet nhận request và xử lý chúng.
-Servlet request cho kết nối bên ngoài hặc xử lí dữ liệu.VD JDBC connection
-Sau dó servlet trả lại cho pool mà không sinh ra respon.(Vì VD hệ thống cho phép xử lý 1000 request mà bây h lại có 1001 request thì request  thứ 1001 sẽ được nhảy vào một cái poll khác để chứa.tránh chậm server )
-Sau đó JDBC connection sẽ truy xuất tới  asynchronous context để xử lý request trong background thread. 
-Khi JDBC đã sắn sàng  asynchronous context object  có connection object và thông báo servlet container cho Servlet thread xử lí connection 
2:AsyncContext
-là class cung cấp các phương thức có thể sử dụng được của AsyncContext nằm trong phương thức servive của Servlet 

JSP

1:Giới thiệu

-JSP là 1 công nghệ để phát triển web cung cấp cung cấp server-side cho Aplication
-Nó thực hiện như một vai trò tương tác với giao diện người dùng của java web 

2:Tại sao chúng ta sử dụng jsp

-JavaServer Pages thường phục vụ mục đích tương tự như các chương trình được thực hiện bằng cách sử dụng Common Gateway Interface(CGI).Nhưng jsp cung cấp một số lợi thế so với CGI
+hiệu suất tốt hơn đáng kể vì jsp cho phép nhúng động yếu tố trong trang html riêng của mình thay vì có 1 file CGI riêng biệt
 +JSP luôn được biên dịch trước khi nó được xử lý bởi các máy chủ không giống như CGI/Perl đòi hỏi máy chủ để tải một thông dịch viên và kịch bản mục tiêu mỗi khi trang web được yêu cầu.
 +JSP đươc xây dựng trên API Servlet,Do đó như Servlet jsp cũng có quyền truy cập vào tất cả các API java doanh nghiệp mạnh mẽ bao gồm JDBC,JNDI,EJB..
+kết hợp Servlet xử lí logic của bài toán theo mô hình MVC

3:Vòng đời JSP

-Đầu tiên file jsp translater thanh file servlet file .Sau đó file servlet sẽ được compiler thanh class file.Sau đó gọi đến phuwong thức init để khởi tạo và được gọi bởi jsp container.Sau đó phuwong thức service sẽ được nhận để gọi các phương thức doX() để xứ ly. và sau đó respon về lại cho người dùng. 

3:Scripting element 

*Scriptlet tag
-Trong Jsp,java code có thể viết trong jsp bởi sử dụng scriptlet tag.VD
-Chúng ta có thể viết bất cứ cái gì code java mà chúng ta muôn vào trong dấu <% %>
*expression tag
-Dùng để hiển thị kết quả của java code ra bên ngoài màn hình client bằng phương pháp:  <%="welcome jsp" %>
*Declaration Tag
-Dùng để gọi các trường hay các phương thức bên ngoài phương thức Service() của Servlet.

4:JSP Implicit Object

-chúng ta có 9 implicit Object và được tạo bởi web container
-Những đối tượng này chúng ta có thể gọi trực tiếp trên trang jsp luôn mà không cần khởi tạo.


5:Scripting element 

*JSP page directive 
-Có thể sử dụng để import những Class từ packges.,set ngôn ngữ cho page,set content type cho page
-Định nghĩa và thao tác một số thuộc tính ảnh hưởng tới toàn bộ trang.
-Nó được viết vào đầu của trang jsp
*Một vài atribute của page directive.
-Import:import cho những class hay interface mà chúng ta sử dụng
-contentType:định nghĩa MiME,xét kiểu http respon default "text/html"
-extends:định nghĩa lớp cha mà nó thừa kế bởi servlet đc tạo.Nó rât it khi được sử dụng.
-info:Sét thông tin của trang jsp page.
-bufer:nó sét size kilobyte mà xử lí out put mà jsp tạo ra.mặc định là 8kb;
-language:sét ngon ngữ sử dụng jsp page
-errpage:định nghĩa trang bị lỗi,nếu exception xảy ra trang hiện tai thì nó sẽ ném tới trang đó.
-Iserrpage:nó sẽ khai báo rằng trang hiện tai đang bị lỗi.

*JSP inclue directive 

-Nó sẽ lấy nội dung của trang khác đặt vào trang bạn muốn nó thêm vào.
VD bạn có 1 trang jsp a và một trang jsp b.Bạn muốn trang jsp a có tât cả nội dung của trang jspb và thêm một số html nữa.bạn có thể viết trên trang jspa
<jsp:inclue page="jspb.jsp"></jsp:inclue>

*JSP taglib directive 

-Nó giúp cho jsp tạo ra những custom tag.Nó được định nghĩa bởi user.
-







Thứ Bảy, 17 tháng 12, 2016

Filter And Annotation

1:Filter
-Nó như một bộ lọc của Servlet.Muốn request đến được servlet thì ó phải đi qua bộ lọc này.Nó sẽ xử lí những cái thứ cần thiết trước khi tới servlet,và lọc lại những kết quả từ respon trước khi trả về cho client.

*Một số tính năng mà filter cung cấp cho web aplication như.
 -tối ưu hóa thời gian send respon về cho client
-Nén nội dung file từ Web Server về cho user trên internet.
-chuyển đổi image,text,video theo format yêu cầu.
-Tối ưu hóa băng thông trên network
-tăng độ an toàn của trang web 

-Fitter change:chúng ta có thể lọc qua nhiều filter như từ filter 1 chúng ta lọc tới filter2 rồi filter3 hoặc nhiều hơn rồi đến servlet xử lý.Nhưng nếu lọc qua nhiều filter như vậy tốc độ thời gian mà từ request dến servlet và từ servlet respon về cho client là rât chậm.
*Một vài thể loại filter như.
*Filter API
-Filter interface,FilterConfig interface,Filterchain interface đều nằm trong gói javax.Servlet.
*Filter interface
-Nó cung cấp các phuwong thức cho vòng đời của filter.
  +init():Nó được gọi bởi servlet container dùng để khởi tạo filter.Nó chỉ được gọi 1 lần duy nhất.như    init() của servlet .
   +doFilter():xử lí các request và respon theo yêu cầu và cũng được gọi bởi servlet container.
   +destroy():gọi bởi servlet container khi mà không còn yêu cầu xử lí nào tới nữa.Và nó cũng chỉ được gọi 1 lần duy nhất.
*Configuring filter
-dùng để cấu hình filter bên trong file web.xml
-Được định nghĩa bởi thẻ <filter> </filter> và một số các element định nghĩa bên trong như:
<display-name> 
<description> :Miêu tả cho filter
<filter-name> :Tên của filter
 <filter-class> :nằm trong file packages nào. 
<init-param> :khởi tạo tham số cho filter.
*filter Mapping
  -<filter-name>:Miêu tả tên của filter 
 -<servlet-name>:tên của setvlet mà sở hữu request và respon sẽ modified by the filter.
<url-patern>:URL mà để map tới filter.

-phương thức init() khởi tạo filter.Nó sẽ nhận đối tượng FilterConfig được tạo bởi Web container.
-Một số phương thức của FilterConfig.
 +getFilterName():trả về tên của filter được dịnh nghĩa trong web.xml
 +getInitParameter(String name):trả về value thông qua name của parameter.
+getServletContext():trả về đối tượng Servlet Context sử dụng gọi giao tiếp Servlet container và filter.

2:Annotation
-phát triển từ javaEE 5.0. sử dụng để cấu hình server components.
-Nó được gắn vào các yếu tố bên trong code để miêu tả về nó.
-Đơn giản hóa công việc của nhà phát triển bằng cách giảm số lượng mã được viết bằng cách di chuyển metadata information vào trong source code của nó.
-Có thể add  program element như classes,methods,fields,parameters, local variable ,packages.
-Nó không bao giờ được thực thi.
-Nó là quá trình khi code chứa nó sẽ được biên dịch hoặc thông dịch bởi compilers, deployment tools.
*Những thuận lợi sử dụng annotation
 -dễ dàng sử dung.
-Có tính di động cao.
-Type Checking:
-hướng dẫn cho trình biên dịch,
-chỉ dẫn trong lúc biên dịch(Complier-time)
-chỉ dẫn trong lúc chạy(Runtime)
-Runtime Reflection:lưu trong class file ,truy xuat luc runtime
*Annotation Servlet 
-name:Chỉ định tên của servlet
-description:Miêu tả về servlet
-displayname:hiển thị tên của servlet.
-urlPatterns:url để truy xuất đến servlet
-asyncSupported:support asynchronous cho quá trình xử lý.Value có thể là true hoặc false.
-initParams:truy xuất tới parameter trong servlet config .
-smallIcon:set kick cỡ image nhỏ cho servlet   
-largeIcon:set kick cỡ image lớn cho servlet   
*Listener Annotation
-Cung cấp những cái kiểu khác nhau của listener interface để xử lý các event khác nhau.
-Để khai báo listener class,the @WebListener annotation có thể được sử dụng
 +Một số @WebListener annotation register 
  -Context Listener:
  -Context Attribute Listener
  -Servlet Request Listener
  -Servlet Request Attribute Listener
  -Http Sesion Listener 
  Http Sesion Attribute Listener 



















Thứ Tư, 14 tháng 12, 2016

Session Tracking
1:Protocol
-Nó là cài đặt những quy tắc,cú pháp ngữ nghĩa giao tiếp máy tính.
-Protocal nói nó là stateless khi:
+ cài đặt cấu hình,giao dịch và thông tin không được theo dõi bởi protocal
+các kết nối cuối cùng chỉ có duy nhất 1 lần giao dịch.
-Http ám chỉ như là một Stateless Protocol vì
+ http client mở kết nối và send request message tới HttpServer  và sau đó server gửi trả dữ liệu về cho client và khi trả về xong thì server sẽ đóng kết nối và không lưu bât kì thông tin gì.
2:Sesion Trackinh
-Nó có thể cho phép Web aplication duy trì thông tin tới server miễn là customer không log out ra khỏi trang web.
-Nó sẽ theo dõi client Identity  và thông tin yêu cầu khác thông qua sesion.
* Những kĩ thuật của sesion tracking.
 -URL Writing 
-Hidden field 
-Cookie
*URL Writing. 
 - Disadvantages 
+Nó chỉ có thể được send thông qua hypelink trên Web pages.
+Nó không thể lưu được  nhiều thông tin vì nó bị giới hạn bởi độ dài của URL.
+Độ bảo mật không được cao về an toàn dữ liệu.  

Thứ Hai, 12 tháng 12, 2016

Servlet Life cycle,Gia phả

1:Servlet API
-Tất cả những class liên quan để phát triển và quản lí servlet đều được cung cấp bởi 2 gói đó là:
 -javax.servlet 
   +Nó cung cấp những class và interface chung dùng để kế thừa và implement hầu hết tất cả servlet 
   +Nó cung cấp các frameword 
   +Nó định nghĩa các phương thức cho vòng đời servlet 
    +hầu hết các servlet đều implement trực tiếp hoặc gián tiếp interface javax.servlet.Servlet
-javax.servlet.Http 
 +Nó chứa những class hay interface sử dụng cho phát triển servlet mà làm việc với http protocol.
*Sơ đồ gia phả servlet
javax.servlet chứa abstract class là genericservlet 
+genericservlet extends object và implement 3 interface
-servlet interface:định nghĩa các phương thức vòng đời servlet
-servletconfig interface:định nghĩa các phương thức được sử dụng bởi servletcontainer để đưa thông tin tới cho Servlet intance trong khi nó được khởi tạo.
-Serializable interface:dùng đẻ serialize trạng thái của object.
2:Vòng đời servlet 
-Toàn bộ vòng đời của servlet được quản lí bởi servlet container
1:Instantiation :Servlet container tạo ra đối tượng servlet 
2:Initialization:Servlet container gọi phương thức init() để bắt đầu vong đời servlet 
3:service --doX():quá trình xử lí request lên server và từ server respon tới client
4:destroy():servlet container destroy servlet trong trường hợp này nhưng chưa được giải phóng bộ nhớ.
5:servlet container giải phóng toàn bộ bộ nhớ của servlet chiếm.
3:Kiến trúc Servlet
-Servlet container chịu trách nhiệm xử lý servlet dựa trên nguyên tắc đa luồng.mỗi 1 request được xử lí một luồng riêng biệt
-Web browser sends Http request tới server thông qua URL.Khi nhận request Web engine nhìn trong web.xml để tìm và kết nối xem có URL servlet đã được đăng kí.Khi tìm thấy được rồi.Web engine sẽ chuyển sang cho Servlet container để chuẩn bị khởi tạo đối tượng servlet.Servlet đó sẽ được chuyển lên vị trí đầu tiên của servlet container,load servlet và tạo bộ nhớ servlet đó.Và sau đó Servlet được load bởi servlet container,khởi tạo đối tượng và xử lí request.
4:Servlet Interface
*phuong thuc nằm trong servlet interface là
+getparameter:trả về giá trị được gửi bởi request information 
+getContentLength():trả về độ dài của nọi dung trong mảng và trả về -1 nếu độ dài không biêt.
+getInputstream():trả về binary data.request bởi client và được lưu trong ServletInputStream
+getServerName():trả về tên server mà client request.
5:HttpServlet interface
-It định nghĩa đối tương HttpServerRequest
-phương thức định nghĩa bởi HttpServerRequest Interface
+getCookies():trả về một mảng các cookei mà từ server gửi về client.
+getHeader ():trả về một value của request header như String
+getMethod():yêu cầu xử lí với phuwong thức nào.
+getPathInfor:trả về đường dẫn thông tin truy xuât URL của client  gửi khi nó yêu cầu servlet .
+getAuthtype:trả về tên của một cơ chế quyền nào đó để bảo vệ servlet.
6:Respon  interface
-Định nghĩa các phương thức cho phép nhận output stream để send data tới client,quyêt định về nội dung của nó.
*Phương thức định nghĩa servlet respon 
-setContenttype():trả về kiểu dữ liệu mà respon tới client.
-getWriter():Dùng để viết dữ liệu bên ngoài hiển thị client.
-getOutputStream:trả về ServletOutStram dùng để viết binary data trong respon
-getContenttype():trả về kiểu nội dung được dùng cho phần mime trong chính cái respon này.
7:HttpRespon  interface
-HttpServletResponse interfec kế thừa từ ServletREspon interface và cung cấp thông tin cho HttpServlet 

*phương thức 
-addCookie():thêm một ccokei nào đó và gửi tới cho client.
-addHeader():sử dụng thêm tên và value tới responheader.
-containsHeader():trả về true nếu respon header có giá trị.
8:Servlet Context
-cung cấp truy xuất đến các tài nguyên,mà dùng chung cho tất cả các servlet trong ứng dụng.
-cung cấp môi trường chạy servlet 
-servlet chạy cùng trong 1 máy chủ đôi khí phải chia sẻ tài nguyên  chia sẻ tài nguyên như jsp.tep ten va các servlet khác.

mot so phuong thuc cua serverletContext interface.
+getInitParameter():lay ra gia tri param value thong  qua name trong web.xml.
+setAtribute():gán chia sẻ tài nguyên.tới file khác.
+getAtribute():nhận về atribute thong qua tên xác định.
+getInitParameter:trả về tên của context khởi tạo parameter.
+removeAtribute:dùng để xóa bỏ một atribute. 











Thứ Năm, 8 tháng 12, 2016

                AsyncTask ,volley ,Retrofit 

1,AsyncTask

*AsyncTask là gì và tại sao phải dùng AsyncTask

-Asynctask là một lớp trìu tượng được cung cấp bởi android giúp chúng ta sử dụng các thread UI.Lớp này cho phép chúng ta thực hiện các hoạt động dài và hiển thị kết quả của nó trên thread UI mà không cần thao tác
-trong android đôi khi chúng ta thực hiện một số operation mà thời  gian từ lúc gửi request đến lúc nhận response có thể hơi lâu như network operation:download anh ,down phim...database query ...lấy thông tin danh sách ứng dụng trong hệ điều hành,gửi file bluetooh.Người ta gọi chúng là background operations.
-Main Thread(dùng để update giao diện) thì thực hiện công việc theo cơ chế hàng đợi FIFO,do đó nếu thực hiện background operation bằng main thread sẽ dẫn tới hiện tượng đơ treo màn hình do công việc sau muốn chạy phải đợi công việc trước được thực hiện xong.Do đó google làm ra AsyncTask để thực hiện background operation
*Cơ chế hoạt động của AsyncTask
Trong AsyncTask<Params,Progress,Result> có 3 đối số là Generic Type: 
Params:là giá trị biến được truyền vào khi gọi thực thi tiến trình và nó sẽ được truyền vào doInBackground
Progress:Là giá trị biến dùng để update giao diện lúc tiến trình thực thi biến này sẽ được truyền vào hàm onProgessUpdate
Result:là biến dùng để lưu trữ kết quả trả về sau khi tiến trình được thực thi xong
-những đối số nào không sử dụng trong quá trình thực thi thì ta thay bằng Void
*thông thường 1 AsyncTask có 4 hàm:
onPreExcute():tự động được gọi đầu tiên khi tiến trình được kick hoạt.
doInBackground:Được thực thi trong quá trình chạy nền ,thông qua hàm này đẻ ta gọi hàm onProgressUpdate để cập nhật giao diện(Gọi lệnh publishProgress).ta không thể cập nhật giao diên trong hàm doInBackground();
onProgressUpdate:dùng để cập nhật giao diện luc runtime.
onPostExecute():sau khi tiến trình kêt thúc hàm này tự động xảy ra.Ta có thể lấy được kết quả trả về tại đây.
-Trong 4 hàm trên thì hàm doInbackground() băt buộc phải tồn tại.còn các hàm khác có thể khuyêt.
-Đối với AsyncTask thì ta cần tạo ra 1 lớp kế thừa từ AsyncTask.sau đó từ mainactivity   ta goi hàm execute() để thực hiện. 

2,Volley

* Volley là một thư viện mạng(library network ) được google giới thiệu năm 2013 để quản lí các request network và lưu trữ những respon trên các ứng dụng android mà không cần các developer viết nhiều code như trước nữa.Các tools bên trong Volloy cho phép cùng một lúc thực hiện nhiều request trên các thread(Luồng xử lí dữ liệu ) khác nhau với mức độ ưu tiên khác nhau.Tất cả các request được thực hiện và lưu trữ trong bộ nhớ cache giúp cho việc reload lại dữ liệu nhanh hơn ...nhưng lại không pahir là một ý tưởng tôt cho việc sử dụng các dữ liệu lớn như music hay movies.

*Những Class request có trong thư viện Volley này bao gồm:JsonObjectRequest,JsonArrayRequest,String request,ImageLoader kết nối với các contructor đi kèm như POST,GET,PUT,COPY.
*

3,Retrofit

Retrofit là một rest Client cho android và java và được tạo bởi Square.Họ làm cho việc nhận và tải lên Json(hoặc dữ liệu khác ) một cách dễ dàng tới Webservice dựa trên mô hình REST.

Các gói trang bị thêm cho phép sử dụng các bộ chuyển đổi sau đây:
-Gson:com.squareup.retrofit:converter-gson
-Jackson:com.squareup.retrofit:converter-jackson
-Moshi:com.squareup.retrofit:converter-moshi 
-Protobuf:com.squareup.retrofit:converter-protobuf
-Wire:com.squareup.retrofit:converter-wire 
-Simple XML:com.squareup.retrofit:converter-simplexml
*Để làm việc với retrofit bạn cần triển khai 3 lớp cơ bản:
1Model class to map Json Data 
2 Interfaces để định nghĩa API cho Webservice
3 Retrofit.Buider lớp định ngĩa url Endpoint cho các hoạt động liên quan tới HTTP


4:Bai Tap Ve nha

file index.

file result

servlet dang nhap

servlet welcom




Thứ Năm, 1 tháng 12, 2016

WEB SERVICE

1,Khái niệm
-là một ứng dụng sở hữu những component phát tán ở trên mạng
và gọi thông qua XML message
-server provider and consume provider tương tác với nhau vớigiao thức chuẩn như soap
-giao thức chuẩn và công nghệ sử dụng trong webservice.
 +SOAP:simple object access protocol;
 +WSDL:web service description  language;
 +UDDI:Universal Description,discovery and Intergation;
-Java API forXML va Webservice.
 +Java APi for XML processing(JAXP)
  +java API for XML based RPC(JAX -RPC)
+java API for XML registries(JAXR)
+SOAP with Attachments API for java(SAAJ)
+Java API for XML Messaging(JAXM)
2:thể loại của web service 
-SOAP
-REST
SOAP
-Khái niệm cơ bản nhất của mô hình soap là việc sử dụng các tài liệu xml như những thông điệp trao đổi.Các tài liệu của xml có thể được tông hợp và đọc với một đoạn text đơn giản,ta có thể làm việc với xml hầu hêt trên mọi nền tảng.
*Đặc trưng của soap
-soap được thiết kế đơn giản và dễ mở rộng 
-tất cả message cua soap đều được mã hóa sử dụng xml
-soap sử dụng giao thức truyền dữ liệu riêng 
-soap không bị ràng buộc bởi bất kì ngôn ngữ lập trình nào 
-soap client không giữ bất kì tham chiếu đầy đủ nào đối tượng ở xa.
-vì những đặc trưng này ,nó không quan tâm tới công nghệ gì được dùng để thực hiện  miễn là người dùng sử dụng message theo định dạng xml .Tương tự service có thể được thực hiện trong bât kì ngôn ngữ nào miễn là nó có thể xử lý được message  theo dạng xml 
*Cấu truc soap được định dạng gồm các phần <Envelope>, <Header>  và <Body>.

Envelope là thành phần gốc của soap ,nó chứa các thành phần header và body.thành phần header là mộ cơ chế cho phép thêm các tính năng vào bên trong một thông điệp soap.Mỗi thành phần con của header là một header entry,các header entry dùng để diễn giải quy dịnh một số ngữ nghĩa của thông điệp soap.Các ứng dụng có thể xủa lý và định tuyến các thông điệp dựa trên thông tin header và thông tin bên trong thông điệp đó 
Cấu truc message theo dạng soap 
mesage theo dạng soap là một văn bản xml thường bao gồm các phần sau
-Phần tử gốc -envelop:phần tử bao trùm nội dung message ,khai báo văn bản xml như là một thông điệp soap
-Phần tử đầu trang header .chứa các thông tin tiêu đề trang ,phần tử này không băt buộc khai báo trong văn bản 
-Phần tử khai báo nội dung chính là thông điệp -body chứa các thông tin yêu cầu và phản hồi
-Phần tử phát sinh lỗi(Fault) cung cấp thông tin lỗi xảy ra trong quá trình xử lý thông điệp


RESTFul Web Service
-REST(Representational State Tranafer)
-Nó định nghĩa các quy tắc kiến trúc để bạn thết kế webservice chú trọng vào tài nguyên hệ thống ,bao gồm các trạng thái tài nguyên được dịnh dạng như thế nào và được chuyển tải qua HTTP thông qua số lượng lớn  người dùng  và được viết bởi những ngôn nhữ khác nhau.
-Web service sẽ tuân thủ theo 4 quy tắc sau 
  • Sử dụng các phương thức HTTP một cách rõ ràng
  • Phi trạng thái
  • Hiển thị cấu trúc thư mục như URls
  • Chuyển đổi JavaScript Object Notation (JSON) và XML hoặc cả hai.
  • -*sử dụng các phương thức http một cách rõ ràng
  • -Rest yêu cầu sử dụng các phương thức http một cách rõ ràng tương thich với giao thức chuẩn.Thiết kế rest cơ bản này thiết lập một ánh xạ  1- 1 giữa các hành động tao doc cap nhat và xóa .


  • Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.
  • Để truy xuất một tài nguyên, sử dụng GET.
  • Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.
  • Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.
  • -Thực ra bạn vẫn có thể dùng phương thức get để thêm tài nguyên,nhưng 
  • ở đây chúng ta muốn nó một cách rõ ràng vì vậy có thêm phương thức post
  • chuyển đổi giưa xml va json 
  • khi client gửi yêu cầu tới web service nó thường được truyền tải dưới dạng xml hay json và thông thường nhận về với hình thức tương tự.
  • -

  • -Đôi khi client cũng có thể chỉ định kiểu dữ kiệu nhận về mà nó 
  • mong muốn (Json hoac xml) các chỉ định này được gọi là các
  •  kiểu  mine .nó được gửi kèm trên phần header của request.
  • MIME-TypeContent-Type
    JSONapplication/json
    XMLapplication/xml
    XHTMLapplication/xhtml+xml




Phi trạng thái
Một đặc điểm của Rest là phi trạng thái(Stateless).Có nghĩa là nó không lưu giữ thông tin của client.chẳng hạn bạn vừa yêu cầu xem trang thứ 2 của một tài liệu và bây giờ  bạn muốn xem trang tiêp theo là trang thứ 3 rest khoong lưu giữ thông tin trước đó phcj vụ bạn trang số 2.REST khoogn quản lý các phiên làm việc(Session)
Hiển thị thư mục cấu trúc URL 
-Rest đưa ra một cấu trúc để người dùng có thể truy cập vào tài nguyên của nó thông qua url,tài nguyên ở đây là tât cả những thứ bạn có thể gọi tên được.
-các địa chỉ rét service cần phải trực quan một cách dễ đoán.
-Một vài nguyên tăc bổ sung dể lưu ý  trong khi nói về cấu trúc địa chỉ của Web service restfull la:
 +Giấu các đuôi  tài liệu  mở rộng của bản gôc rong máy chủ nếu có vì vậy bạn có thể giấu một số thứ mà không cần hay đổi địa chỉ URL 
+Để mọi thứ là chữ thường 
+Thay thế các khoảng trống bằng gạch chân hoặc gạch nối 
+tránh các chuỗi yêu cầu càng nhiều càng tôt 
+Thay vì sử dụng mã 404 khi yêu cầu địa chỉ cho một phần đường dẫn ,luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi 



HSự khác nhau giữa Soap va restfull 

STTSOAPREST
1)SOAP là một giao thứcREST là một cách thiết kế kiến trúc
2)SOAP là từ viết tắt của Simple Object Access Protocol(Giao thức truy cập đối tượng đơn giản)REST viết tắt của REpresentational State Transfer
3)SOAP can't use REST because it is a protocolREST có thể dùng các web services sử dụng SOAP vì nó có thể dùng bất kỳ giao thức nào như HTTP, SOAP
4)SOAP cung cấp các giao diện dịch vụ(services interfaces) cho các thành phần bên ngoài sử dụngREST sủ dụng đỉa chỉ URI để cung cấp các dịch vụ
5)JAX-WS là java API cài đặt web services theo giao thức SOAPJAX-RS là java API cài đặt web services theo kiến trúc RESTful
6)SOAP định nghĩa các chuẩn và quy tắc chặt chẽREST không định nghĩa nhiều chuẩn như SOAP
7)SOAP sử dụng băng thông và tài nguyên nhiều hơn RESTREST sử dụng băng thông và tài nguyên ít hơn SOAP
8)SOAP định nghĩa chuẩn bảo mật của riêng nóRESTful kế thừa chuẩn bảo mật tầng vận tải của giao thức mạng
9)SOAP chỉ hỗ trợ định dạng dữ liệu XMLREST hỗ trợ các định dạng dữ liệu khác nhau như text, HTML, XML, JSON
10)SOAP ít được dùng hơn RESTREST được ưa chuộng hơn SOAP
11)Được thiết kế để dùng trong tính toán phân tánThương không được dùng trong môi trường tính toán phân tán
12)Tin cậy hơnÍt tin cậy hơn – chẳng hạn, HTTP DELETE có thể trả về trạng thái OK ngay cả khi tài nguyên không được xóa
13)Hỗ trợ hầu hết các chuẩn bảo mật, tin cậy và giao dịchSử dụng tốt với các giao thức như: HTTP, SSL. Các phương thức DELETE và PUT thường bị vô hiệu hóa bởi tường lửa hoặc vấn đề bảo mật
14)SOAP hỗ trợ cả hai giao thức SMTP và HTTPREST gắn với giao thức HTTP