Jersey使用总结一(jersey初步使用和简单post请求几种参数传递,String方式,不含对象操作)
2012-07-16 20:19
896 查看
首先说明一下,jersey是干什么的呢,我个人的理解就是类似于一种webservice技术或框架
jersey-rest为service端,其它的jersey请求为客户端,客户端发送一个请求(带参或不带参)调用service端的方法,方法返回结果给客户端。
如以下使用步奏:
一.建立服务器端:
1.下载jersey的相关jar
2.建立一个web project,并导入相关jar包
2.1 配置xml配置文件:使用jersey 相关jar包中提供的servlet,默认请求为/rest/*的都通过这里
2.2 编写配置文件中配置的servlet请求对应的操作类或访问方法
到此,service工程可以结束了,只等编写客户端进行对应的请求进行访问了:
2.3 编写客户端请求类进行测试:
另外:貌似从spring 3才开始支持整合这个东西,所以很多的(属性注入之类)new 对象的在spring 2.X必须自己手动获取
如果要和spring 整合使用,那么上面的web.xml中的servlet就必须使用和spring相对应的servlet了,至于是哪个,直接到jar包中找就明白了
jersey-rest为service端,其它的jersey请求为客户端,客户端发送一个请求(带参或不带参)调用service端的方法,方法返回结果给客户端。
如以下使用步奏:
一.建立服务器端:
1.下载jersey的相关jar
2.建立一个web project,并导入相关jar包
2.1 配置xml配置文件:使用jersey 相关jar包中提供的servlet,默认请求为/rest/*的都通过这里
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.rest.jersey.first</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
2.2 编写配置文件中配置的servlet请求对应的操作类或访问方法
package com.rest.jersey.first; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import com.sun.jersey.api.client.ClientResponse; /** * 设定客户端请求访问的路径为:“hello” * 实际上类上的面这个path(hello)是针对整个类生效的 * 在类中的每个方法中可以继续设置进一步的path * @author xianbo * */ @Path("/hello") public class HelloResource { /** * *客户端请求方式为: *service.path("rest").path("hello").accept(MediaType.TEXT_PLAIN).get(String.class) * @return */ @GET @Produces(MediaType.TEXT_PLAIN) public String sayPlainTextHello() { return "Hello Jersey"; } /** * 客户端请求方式为: * service.path("rest").path("hello").accept(MediaType.TEXT_XML).get(String.class) * @return */ @GET @Produces(MediaType.TEXT_XML) public String sayXMLHello() { return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>"; } /** * 客户端请求方式为 * service.path("rest").path("hello").accept(MediaType.TEXT_HTML).get(String.class) * @return */ @GET @Produces(MediaType.TEXT_HTML) public String sayHtmlHello() { return "<html> " + "<title>" + "Hello Jersey" + "</title>" + "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> "; } /** * 客户端发送post请求 * service.path("rest").path("hello").accept(MediaType.TEXT_PLAIN_TYPE).post(String.class) * service.path("rest").path("hello").post(String.class,"9999999") */ @POST public String sayStringHellp(String str){ System.out.println(str); return "success"; } /** * 也可以在“hello” 的路径下继续添加访问路径 * 此时的访问路径就是/hello/first * service.path("rest").path("hello").path("first").post(String.class,"9999999") * @return */ @Path("/first") @POST public String sayPathHelp(String str){ System.out.println("first:"+str); return "success"; } /** * 也可以以传递的参数作为访问路径,起到动态路径设定 * 此时的访问路径就是"/hello/变量str" * "@PathParam("str")String str"说明这个“String str”参数的来源是包含在请求路径中的请求参数 * service.path("rest").path("hello").path(param).post(String.class) * @return */ @Path("/{str}") @POST public String sayParamHelp(@PathParam("str")String str){ System.out.println("first/"+str+":"+str); return "success"; } /** * 也可以以传递的参数作为访问路径,起到动态路径设定 * 此时的访问路径就是"/hello/变量str" * "@PathParam("str")String str"说明这个“String str”参数的来源是包含在请求路径中的请求参数 * service.path("rest").path("hello").path("123").path("456").post(String.class) * @return */ @Path("/{str}/{str2}") @POST public String sayManyParamHelp(@PathParam("str")String str,@PathParam("str2")String str2){ System.out.println("first/"+str+":"+str+":str2"+str2); return "success"; } }
到此,service工程可以结束了,只等编写客户端进行对应的请求进行访问了:
2.3 编写客户端请求类进行测试:
package com.rest.jersey.first; import java.net.URI; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriBuilder; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.ClientConfig; import com.sun.jersey.api.client.config.DefaultClientConfig; /** * @Author:xianbo */ public class HelloClient { public static void main(String[] args) { ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); WebResource service = client.resource(getBaseURI()); // Fluent interfaces System.out.println("1:"+service.path("rest").path("hello").accept( MediaType.TEXT_PLAIN).get(ClientResponse.class).toString()); // Get plain text System.out.println("2:"+service.path("rest").path("hello").accept( MediaType.TEXT_PLAIN).get(String.class)); // Get XML System.out.println("3:"+service.path("rest").path("hello").accept( MediaType.TEXT_XML).get(String.class)); // The HTML System.out.println("4:"+service.path("rest").path("hello").accept( MediaType.TEXT_HTML).get(String.class)); System.out.println("5:"+service.path("rest").path("hello").accept(MediaType.TEXT_PLAIN_TYPE).post(String.class)); System.out.println("6:"+service.path("rest").path("hello").post(String.class,"9999999")); System.out.println("7:"+service.path("rest").path("hello").path("first").post(String.class,"9999999")); String param = "test"; //传递单个参数param变量作为动态路径并且作为参数 System.out.println("8:"+service.path("rest").path("hello").path(param).post(String.class)); //多个参数包含在路径中传递到方法中作为参数使用 ,123,456作为参数 System.out.println("9:"+service.path("rest").path("hello").path("123").path("456").post(String.class)); } private static URI getBaseURI() { return UriBuilder.fromUri( "http://192.168.13.84:8088/TestJerseyRest/").build(); } }
另外:貌似从spring 3才开始支持整合这个东西,所以很多的(属性注入之类)new 对象的在spring 2.X必须自己手动获取
如果要和spring 整合使用,那么上面的web.xml中的servlet就必须使用和spring相对应的servlet了,至于是哪个,直接到jar包中找就明白了
相关文章推荐
- Retrofit简单封装使用--Post请求封装请求体、Get请求通过参数、map方式构建url
- volley框架下,使用post方式请求服务器,传递参数和头
- c#使用线程传递参数的主要几种方式
- 表单提交和超链接请求传递参数的几种方式
- JavaScript中的String对象的常用方法、文本框对象的常用方法和事件、正则表达式的概念、正则表达式的几种构造方式、RegExp对象使用什么方法匹配正则表达式、
- 用于string对象中字符截取的几种函数总结——语法、参数意义及用途举例
- .net中几种传递参数的方式的总结
- servlet(三)-如何使用传参-三种转发方式、传递参数以及对象中数据的范围
- 初学者---Android (简单总结)Retrofit请求方式之get,post
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
- 使用 RestTemplate 发送 post 请求传递参数
- ExtJs store传递给后台的参数使用POST方式
- 使用SmartUplaod实现图片上传,并给上传图片添加水印后将请求参数以对象的方式返回
- jsp中使用POST的方法在网页之间传递参数的简单方法
- Vue------第五天(Vue的Ajax请求,使用Axios,目前熟悉了一下,主要包括GET请求、POST请求、并发请求、请求参数的配置、服务器响应的结构以及对服务器响应错误的简单处理)
- WebMagic中使用POST请求并传递参数
- Java 客户端后台使用HTTP POST传递对象参数到服务器端
- servlet(三)-如何使用传参-三种转发方式、传递参数以及对象中数据的范围
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式