一、rest的介绍
从搜索引擎中可以搜出大量关于rest的概念,比如rest是一个软件架构风格,其中的方法有Get、Put、Post、Delete等,今天我从应用的角度来阐述rest框架,为什么要用rest软件架构风格,如果有两个项目,其中一个项目访问另一个项目中资源,或者说是任何其他的项目来访问此项目中的资源,或者对项目中的资源进行增删改的时候,怎么办?此处就是rest的用武之地。
二、rest的创建
(1)先创建一个bean:user类
package com.rest.bean;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class User {
private String userId;
private String userName;
private String age;
public User() {};
public User(String userId, String userName, String age) {
this.userId = userId;
this.userName = userName;
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
(2)然后创建一个UserResouce类
package com.rest.resources;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import com.rest.bean.User;
@Path("/users")
public class UserResource {
@GET
@Path("/getUser")
@Produces(MediaType.APPLICATION_XML)
public User getUserXml() {
User user = new User();
user.setAge("23");
user.setUserId("1");
user.setUserName("jack");
return user;
}
}
(3)然后对rest框架进行相应的配置,像tomcat一样,在web.xml中
<servlet>
<servlet-name>JAX-RS REST Servlet</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.json</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS REST Servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
(4)在浏览器中对rest进行访问,此处可以获得user对象的xml文件
连接为:http://localhost:8080/项目名/rest/users/getUser
三、rest的访问
当然我们在一个项目中创建出来的rest项目是供其他各种项目访问的,不单单是浏览器访问,那么在另一个项目中怎么访问这个rest项目的呢?
public class HttpClientTest {
public static void main(String args[]) {
//创建HttpClient
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://localhost:8080/项目名/rest/users/getUser");
System.out.println(httpGet.getRequestLine());
try {
//执行get请求
HttpResponse httpResponse = httpClient.execute(httpGet);
//获取响应消息实体
HttpEntity entity = httpResponse.getEntity();
//响应状态
System.out.println("status:" + httpResponse.getStatusLine());
//判断响应实体是否为空
if (entity != null) {
System.out.println("contentEncoding:" + entity.getContentEncoding());
System.out.println("response content:" + EntityUtils.toString(entity));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
//关闭流并释放资源
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
此处是对rest的访问,当然此处需要引入相应的httpClient.jar包,任意项目中要想访问rest项目中的资源,上述代码是最简单可行的方式,而且此jar中还包含httpDel、HttpPost、HttpPut和rest中get、post、put、delete对应。总的来说,rest在项目中的创建和访问已经全部包含,这也是我在工作中的经验之谈。