Jersey框架搭建Rest服务

一、Jersey, 一个Java规范下REST风格Web Service开发框架,不同系统之间,数据之间的传输。

二、搭建Jersey-1.18环境,不集成任何框架。三个步骤:

(1)、创建Web项目,引入jar,如:这些jar自己去下载
asm-3.1.jar
jersey-apache-client-1.18.jar
jersey-atom-abdera-1.18.jar(不是必须)
jersey-client-1.18.jar
jersey-core-1.18.jar
jersey-json-1.18.jar
jersey-multipart-1.18.jar(不是必须)
jersey-server-1.18.jar
jersey-servlet-1.18.jar
jersey-spring-1.18.jar(不是必须)
fastjson-1.1.26.jar(不是必须)


(2)、配置Web.xml,如:
<!-- jersey servlet -->
	<servlet>
       <servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <!-- param-value 指定某个包目录下的类是restful服务类,可用逗号分隔,写多个目录 -->
        <init-param>  
        	<param-name>com.sun.jersey.config.property.packages</param-name>  
        	<param-value>com.zj.ec.wechat.member.controller</param-value>  
    	</init-param> 
    	<init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
       <servlet-name>Jersey Web Application</servlet-name>
       <url-pattern>/rs/*</url-pattern>
    </servlet-mapping>


(3)、写Restful服务类与VO类,如:
/**
 * 会员管理类, Restful服务接口类
 * @author Administrator
 *
 */
@Path("memberManage")
public class MemberControllerRestful implements Serializable{
	private static final long serialVersionUID = 1L;
	private Logger logger = LoggerFactory.getLogger(AreaController.class);

	@Autowired
	private MemberService memeberService;
	
	@POST
	@Path("/login")
	@Consumes(value={"application/json"})
	@Produces(value={"application/json"})
	public String login(String in_json, @Context HttpServletResponse response)
	{
		logger.info("login method input param: " + in_json);
		System.out.println("入参json = " + in_json);
		Member member = JSON.parseObject(in_json, Member.class);
		String aa = memeberService.update(member);
		Result result = new Result();
		String out_json = JSON.toJSONString("");
		response.setCharacterEncoding("utf-8");
		System.out.println("出参json = " + out_json);
		return out_json;
	}
}


/**必须注解@XmlRootElement 否则json与java类不能相互转换 */
@XmlRootElement
public class Member {
	// 会员ID
	private String memberID;
	// 会员号
	private String memberNO;



/** 测试类,只写了测试POST请求的方法 */
public class TestMember {
    static String member_url = "http://localhost:8080/ec_wechat/rs/memberManage";
	static String member_url_30 = "http://172.16.12.30:8099/jaxrs/memberManage";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		login();
	}
	
	public static void login(){
		URI u;
		try
		{
			u = new URI(member_url + "/login");
			MultivaluedMapImpl params = new MultivaluedMapImpl();
			//Login login = new Login();
			Member vo = new Member();
			vo.setName("start");
			vo.setPassword("***");
			params.add("vo", vo);
			Client client = Client.create();
			WebResource resource = client.resource(u);
			String response = resource.entity(vo,
					MediaType.APPLICATION_JSON).post(String.class);
			System.out.println(response);// json格式数据
		}
		catch (URISyntaxException e)
		{
			e.printStackTrace();
		}

	}
}


(4)、运行测试类,入参为JSON,出参为JSON,若能正常打印,则说明成功了。


若有不明白的地方,可以加我QQ 251693481,竭诚为你解答。

猜你喜欢

转载自huangliangbao.iteye.com/blog/2201199