请先看汇总篇「Web Service入门及实践」,学习前面的基础知识和例子再来看这篇!
在使用Web Service时,XML是经常用到的数据交换格式。这个例子就是演示如何将Java对象转换为XML格式,并返回给Web Service客户端。
首先增加一个实体类User:
package com.demo2.bean;
import javax.xml.bind.annotation.XmlRootElement;
/**
* 用户实体类
*
* XmlRootElement表示将bean转换为xml,用在实体类中,
* 如果要将bean以xml或json的格式返回,必须要这个注解
*/
@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;
}
}
然后增加一个resource
package com.demo2.resources;
import com.demo2.bean.User;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Path("/userresource")
public class UserResource {
private static Map<String,User> userMap = new HashMap<String,User>();//存储用户
/**
* 查询所有用户
* Get表示查询检索
* Produces表示指定将要返回给客户端的数据类型表示
* @return
*/
@GET
@Path("/allUsersXml")
@Produces(MediaType.APPLICATION_XML)
public List<User> getAllUsers(){
List<User> users = new ArrayList<User>();
User u1 = new User("001","WayLau","26");
User u2 = new User("002","King","23");
User u3 = new User("003","Susan","21");
userMap.put(u1.getUserId(), u1);
userMap.put(u2.getUserId(), u2);
userMap.put(u3.getUserId(), u3);
users.addAll( userMap.values() );
return users;
}
@GET
@Path("/singleUserXml")
@Produces(MediaType.APPLICATION_XML)
public User getUserXml() {
User user = new User();
user.setAge("21");
user.setUserId("004");
user.setUserName("Amand");
return user;
}
}
这个resource,实现了两个功能,allUsersXml
返回多个用户的xml,singleUserXml
返回单个用户的xml。
结果截图
源码
参考文章: