
Restful 服务端
1 创建好pojo、dao、service, dao进行数据库操作,service提供服务
@Path("/roomservice")
@Produces("application/xml")
public class RoomService { @GET
@Path("/room/{id}")
@Consumes("application/xml")
public Room getRoom(@PathParam("id")String id )
{
System.out.println("get room by id= "+id);
Room room=RoomDAO.getRoom(id);
return room;
} @POST
@Path("/room")
@Consumes("application/xml")
public void addRoom(Room room)
{
... 通常需要使用注解: GET/POST/PUT/DELETE, Path, Consumes, 有参数的方法需要加上 @PathParam
2 通过JAXRSServerFactoryBean来发布服务 —— 一个类即可!
public class Server { public static void main(String[] args) {
RoomService service = new RoomService(); // Service instance
JAXRSServerFactoryBean restServer = new JAXRSServerFactoryBean();
restServer.setResourceClasses(Room.class,Person.class,Room.class);
restServer.setServiceBean(service);
restServer.setAddress("http://localhost:9999/");
restServer.create();
}
}
restful 客户端
使用一个类即可:org.apache.cxf.jaxrs.client.WebClient ! 非常方便
public class Client {
static WebClient client; public static void main(String[] args) {
client = WebClient.create("http://localhost:9999/");
put();
} static void get() {
Room room = client.path("roomservice/room/001")
.accept("application/xml").get(Room.class);
System.out.println("get the room which id is:" + room.getId());
} static void post() {
Room room = new Room();
room.setId("");
client.path("roomservice/room").accept("application/xml")
.post(room, Room.class);
} static void delete() {
client.path("roomservice/room/002").accept("application/xml").delete();
} static void put() {
Room room = new Room();
room.setId("");
client.path("roomservice/room/003").accept("application/xml").put(room);
}
}
总结:
服务端开发:
1 创建web项目
2 写好接口、实现类
3 通过与spring集成或者直接发布、或者启动server类
客户端开发:
1 根据服务器发布的服务,使用wsdl2java创建客户端代码stub
2 通过cxfapi访问,服务端的服务
参考
http://borissun.iteye.com/blog/765869
http://www.cnblogs.com/i-bugs/p/3755615.html
疑问:
如果是js端访问呢?