jersey学习:开发环境搭建(系列二)

概述

该篇给大家讲述下jersey开发环境的搭建过程,我所使用的工具清单:

服务器:tomcat 8.0.30

jdk: 1.7

jersey : 2.22.1(点击下载)

eclipse : Mars.2

servlet : 2.5

搭建步骤

  1. 使用eclipse创建一个web project
  2. 将jersey包下的lib、api、ext(选择性添加,比如osgi相关包不必添加),添加到WEB-INF/lib下
  3. 配置web.xml,这一步很关键,具体的配置如下
    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>
          org.glassfish.jersey.servlet.ServletContainer
        </servlet-class>
        <init-param>
          <!-- 指定jersey的配置 -->
          <param-name>javax.ws.rs.Application</param-name>
          <param-value>com.bella.jersey.config.ApplicationConfig</param-value>
         </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping>
  4. 编写ApplicationConfig,设置资源的初始化配置
    package com.bella.jersey.config;
    
    import org.glassfish.jersey.server.ResourceConfig;
    
    
    public class ApplicationConfig extends ResourceConfig{
    	public ApplicationConfig () {
    		
    		// 设置resource资源所在包路径
    		packages("com.bella.jersey.resource");
    		
    	}
    }
  5. 编写Pojo,我这里写个Person,这里所用的注解是基于JAXB的
    package com.bella.jersey.domain;
    
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    
    
    @XmlRootElement
    public class Person{
    
    	@XmlElement
    	private int age;
    	
    	@XmlElement
    	private String name;
    
    	public int getAge() {
    		return age;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    }
    

     

  6. 编写resource

    package com.bella.jersey.resource;
    
    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;
    
    @Path("/person")
    public class PersonResource {
    
    	@GET
    	@Path("/{id}")
    	@Produces(MediaType.APPLICATION_XML)
    	public Person get(@PathParam("id")Long id) {
    		Person p = new Person();
    		p.setAge(21);
    		p.setName("kevin");
    		return p;
    	}
    }
    

     

  7. 启动tomcat

  8. 地址栏请求测试http://localhost:9090/jersey/person/1
    结果报500错误,解决办法是将person中get方法全部删除
    修改后的Person

    package com.emin.jersey.domain;
    
    import java.io.Serializable;
    
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlRootElement;
    
    
    @XmlRootElement
    public class Person{
    	@XmlElement
    	private int age;
    	
    	@XmlElement
    	private String name;
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    }
    

      

  9. 重新启动,地址栏输入http://localhost:9090/jersey/person/1得到期望的结果

    <person>
         <age>21</age>
         <name>kevin</name>
    </person>

总结

  1. web.xml需要设置javax.ws.rs.Application,指定resource的配置
  2. resource配置中package方法指定resource的包路径
  3. pojo类中不需要get方法,不然application/xml输出格式会报错
posted @ 2016-03-02 18:17  贝拉巴拉  阅读(748)  评论(0)    收藏  举报