WebService implementation example based on rest mechanism (Java edition)
Rest is the abbreviation for the Representational state transfer (general Chinese translation is a descriptive status transfer). 2000 Roy Fielding in his Ph. D. thesis "Architectural Styles and the design of network-based Software architectures" Architecture and web-based Software architecture Design "Rest" is proposed.
Rest is an architecture, and HTTP is a protocol that contains rest architecture attributes.
The Rest Foundation concept everything in rest is considered a resource. Each resource has a URI and corresponds to it. Use a unified interface to process resources in rest. As with database crud operations (Create, Read, Update, and delete), you can use post, get, put, and delete to process rest resources. Each rest request is isolated, and the request contains all the information required. The rest service side does not store state. Rest supports different formats for communication data, such as XML, JSON.
RESTful Web Services
RESTful Web Services is widely used because of its simplicity, and it is simpler than soap . This article focuses on creating restful Web Services using the jersey framework . The jersey framework implements the Jax-rs interface. The sample code for this article is written using Eclipse and Java SE 6.
a new project: RESTFULWS, and then create a RESTful Web service server to create a "Dynamic Web project" in Eclipse with the project name set to "RESTFULWS".
Download jersey from here. The sample code uses Jersey 1.17.1. First unzip the jersey to the "jersey-archive-1.17.1" folder. Then copy the jar file inside the Lib folder to the Web-inf-> Lib of the engineering directory. They are then added to the build path. Asm-3.1.jar Jersey-client-1.17.1.jar Jersey-core-1.17.1.jar Jersey-server-1.17.1.jar Jersey-servlet-1.17.1.jar Jsr311-api-1.1.1.jar creates a "Com.eviac.blog.restws" package in the Engineering Java Resources-> SRC and creates a "UserInfo" class in it. Userinfo.java
Package Com.eviac.blog.restws;
Import Javax.ws.rs.GET;
Import Javax.ws.rs.Path;
Import Javax.ws.rs.PathParam;
Import javax.ws.rs.Produces;
Import Javax.ws.rs.core.MediaType;
//Specifies the URI path for the resource class to provide the service.
@Path ("Userinfoservice") public
class UserInfo {
//@GET representation method handles HTTP GET requests
@GET
// Here @path defines the hierarchical path of the class. Specifies the URI path for the resource class to provide the service.
@Path ("/name/{i}")
//@Produces defines the type of media that the resource class method generates.
@Produces (Mediatype.text_xml)
//@PathParam inject the URI parameter values into the expression defined by the @path. Public
string UserName (@PathParam ("I")
string i) {
string name = i;
Return "<User>" + "<Name>" + Name + "</Name>" + "</User>";
}
@GET
@Path ("/age/{j}")
@Produces (mediatype.text_xml) public
String userage (@PathParam ("J")
Int j) {
int age = j;
Return "<User>" + "<Age>" + Age + "</Age>" + "</User>";
}
Finally, the web.xml is copied to the Web-inf directory, and the Web.xml content is:
<?xml version= "1.0" encoding= "UTF-8"?> <web-app id= "webapp_id" version= "2.5" xmlns:xsi= "http://www.w3.org/" 2001/xmlschema-instance "xmlns=" Http://java.sun.com/xml/ns/javaee "xmlns:web=" http://java.sun.com/xml/ns/javaee/ Web-app_2_5.xsd "xsi:schemalocation=" Http://java.sun.com/xml/ns/javaee "> <a href=" http://java.sun.com/xml/ Ns/javaee/web-app_2_5.xsd "> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" </a> <display-name> restfulws</display-name> <servlet> <servlet-name>jersey REST service</servlet-name> <
servlet-class> Com.sun.jersey.spi.container.servlet.ServletContainer </servlet-class> <init-param> <param-name> com.sun.jersey.config.property.packages </param-name> <param-value>com.eviac.b log.restws</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet > <servlet-mapping> <servlet-name>jersey REST service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </ Web-app>
Copy this webservice-url to the browser address bar: Http://localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra
The output results are as follows:
Second, a new project: Resttest, to create the client, using the previous project published WebService service Interface
First create a stand-alone new project:resttest (Create a second Java project).
This also requires a jar package under the Lib directory of the jersey framework. Unzip jersey to the "jersey-archive-1.17.1" folder, and then copy the jar files inside the Lib folder to the Web-inf-> Lib of the engineering directory or add them to build path. Asm-3.1.jar Jersey-client-1.17.1.jar Jersey-core-1.17.1.jar Jersey-server-1.17.1.jar Jersey-servlet-1.17.1.jar Jsr311-api-1.1.1.jar
Create a "com.eviac.blog.restclient" package, and then a new "Userinfoclient" class.
Userinfoclient.java
Package com.eviac.blog.restclient;
Import Javax.ws.rs.core.MediaType;
Import com.sun.jersey.api.client.Client;
Import Com.sun.jersey.api.client.ClientResponse;
Import Com.sun.jersey.api.client.WebResource;
Import Com.sun.jersey.api.client.config.ClientConfig;
Import Com.sun.jersey.api.client.config.DefaultClientConfig; /** * * * @author Pavithra * */public class Userinfoclient {public static final String Base_uri = "Http://localhos
T:8080/RESTFULWS ";
public static final String path_name = "/userinfoservice/name/";
public static final String path_age = "/userinfoservice/age/";
public static void Main (string[] args) {String name = ' Pavithra ';
int age = 25;
ClientConfig config = new Defaultclientconfig ();
Client client = client.create (config);
WebResource resource = Client.resource (Base_uri);
WebResource Nameresource = Resource.path ("rest"). Path (path_name + NAME);
System.out.println ("Client Response \ n" + getclientresponse (Nameresource)); System.out.pRintln ("Response \" + GetResponse (nameresource) + "\ n");
WebResource Ageresource = Resource.path ("rest"). Path (path_age + age);
System.out.println ("Client Response \ n" + getclientresponse (Ageresource));
System.out.println ("Response \ n" + GetResponse (Ageresource)); /** * Returns a client request.
For example: Get * Http://localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra * Returns the request result status "OK". * * @param service * @return/private static String Getclientresponse (WebResource Resource) {return resource.
Accept (Mediatype.text_xml). Get (Clientresponse.class). toString ();
/** * Returns the request result XML such as:<user><name>pavithra</name></user> * * @param service * @return * * private static String GetResponse (WebResource Resource) {return resource.accept (mediatype.text_xml). Get (String.cla
SS); }
}
After you run the client program, you can see the following output:
Client Response Get
Http://localhost:8080/RESTfulWS/rest/UserInfoService/name/Pavithra returned a Response Status of OK
Response
<User><Name>Pavithra</Name></User>
Client Response Get
Http://localhost:8080/RESTfulWS/rest/UserInfoService/age/25 returned a response status OK
Response
<User><Age>25</Age></User>
Give it a try:
Original link: Eviac translation: importnew.com-chen Jie
Translation Links: http://www.importnew.com/7336.html