java rs jetty_使用Jersey和Jetty开发RESTful Web service

本文介绍了Jersey RESTful框架和Jetty servlet容器。Jersey实现JAX - RS规范,简化RESTful开发;Jetty为Java的web组件提供运行环境。还给出了两者组合使用的测试代码,包括POM配置、WS实现类和Jetty启动类,最后列举了JAX - RS常用注解。

Jersey RESTful 框架是开源的RESTful框架, 实现了JAX-RS (JSR 311 & JSR 339) 规范,是JAX-RS的参考实现,并且提供了更多的特性和工具,简化了RESTful service 和 client 的开发。

Jetty 是开源的servlet容器,它为基于Java的web组件例如JSP和servlet提供运行环境。用Java编写,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象内嵌在应用中,从而为独立运行(stand-alone)的Java应用提供网络和web连接。

故Servlet是两者组合使用的桥梁,下面是个简单的测试代码:

POM:

8.1.9.v20130131

org.glassfish.jersey.containers

jersey-container-servlet

2.9

org.glassfish.jersey.core

jersey-client

2.9

org.glassfish.jersey.media

jersey-media-json-jackson

2.9

org.eclipse.jetty.aggregate

jetty-webapp

${jetty.version}

org.eclipse.jetty

jetty-jsp

${jetty.version}

---

WS实现类Hello.java

@Path("/hello")public classHello {/*** 接收HTTP的GET请求

*

*@return返回text/plain响应*/@GET

@Produces(MediaType.TEXT_PLAIN)publicString hello() {return "hello world!";

}//访问路径 /hello/text/name123

@GET

@Path("/text/{name}")

@Produces(MediaType.TEXT_PLAIN)public String hello(@PathParam("name") String name) throwsException {return "hello, " +name;

}//访问路径 /hello/json/name123

@GET

@Path("/json/{name}")

@Produces(MediaType.APPLICATION_JSON)public String hello2(@PathParam("name") String name) throwsException {return "hello, " +name;

}//访问路径 /hello/xml/name123

@GET

@Path("/xml/{name}")

@Produces(MediaType.APPLICATION_XML)public String hello3(@PathParam("name") String name) throwsException {return "hello, " +name;

}

}

---

Jetty启动类JerseyTest.java

public classJerseyTest {public static void main(String[] args) throwsException {

Server server= newServer();

SelectChannelConnector serverConnector= newSelectChannelConnector();

serverConnector.setPort(8080);

ResourceConfig resourceConfig= new ResourceConfig(Hello.class);//Jersey类ServletContainer从HttpServlet继承,故可传入Jetty类ServletContextHandler.addServlet方法

ServletContainer servletContainer = newServletContainer(resourceConfig);

server.addConnector(serverConnector);

ServletContextHandler servletContextHandler= newServletContextHandler();

servletContextHandler.addServlet(new ServletHolder(servletContainer), "/*");

server.setHandler(servletContextHandler);

server.start();

server.join();

}

}

---

浏览器访问路径: http://localhost:8080/hello/text/Likai

JAX-RS常用注解:

@GET

@PUT

@POST

@DELETE

@Path  uri路径定义资源的访问路径,client通过这个路径访问资源。如:@Path("user")

@Produces  指定返回MIME格式资源按照那种数据格式返回,如:@Produces(MediaType.APPLICATION_XML)

@Consumes  接受指定的MIME格式只有符合这个参数设置的请求再能访问到这个资源。比如@Consumes("application/x-www-form-urlencoded")

@PathParam  uri路径参数写在方法的参数中,获得请求路径参数。比如:@PathParam("username") String userName

@QueryParam  uri路径请求参数写在方法的参数中,获得请求路径附带的参数。比如:@QueryParam("desc") String desc

@DefaultValue  设置@QueryParam参数的默认值如果@QueryParam没有接收到值,就使用默认值。比如:@DefaultValue("description") @QueryParam("desc") String desc

@FormParam  form传递的参数接受form传递过来的参数。比如:@FormParam("name") String userName

@BeanParam  通过Bena的形式传递参数接受client传递的bean类型的参数,同时这个bean可以在属性上配置@FormParam用以解决client的属性名称和bean的属性名称不一致的问题。比如:@BeanParam User user

@Context  获得一些系统环境信息通过@Context可以获得以下信息:UriInfo、ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse和HttpHeaders等

@XmlRootElement  将bean转换为xml如果要将bean以xml或json的格式返回,必须要这个注解。比如:@XmlRootElement public class User{...}

@XmlElements

@XmlElement

参考

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值