webservice(resteasy demo)
来源:互联网 发布:淘宝卖茶叶要怎么办理 编辑:程序博客网 时间:2024/05/17 12:49
1.建立web工程MyResteasy
2.导入jar包
0.servlet-api-2.5.jar
1.guice-2.0.jar
2.resteasy-guice-2.1.0.GA.jar
3.jaxrs-api-2.1.0.GA.jar
4.resteasy-jaxrs-2.1.0.GA.jar
5.javassist-3.8.0.GA.jar
6.scannotation-1.0.2.jar
客户端额外加上:
7.commons-codec-1.2.jar
8.commons-httpclient-3.1.jar
9.commons-logging-1.0.4.jar
(测试的时候客户端,服务端jar包都全部导入了)
3.配置web.xml
<context-param> <param-name>resteasy.scan(resteasy.resources)</param-name> <param-value>true(*.*.*java)</param-value> </context-param> <listener> <listener-class> org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap </listener-class> </listener> <servlet> <servlet-name>Resteasy</servlet-name> <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher </servlet-class> </servlet> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/resteasy/*</url-pattern> </servlet-mapping>
解释:
<context-param> <param-name>resteasy.scan(resteasy.resources)</param-name> <param-value>true(*.*.*java)</param-value> </context-param>
(1) param-name写resteasy.scan
param-value写true
这是自动的意思。当匹配到resteasy的路径的时候,会自动找适合的资源类。
(2) (括号里的)param-name写resteasy.resources
param-value写具体的服务端的资源类(如后面的com.zhshch.test.Hello)
当匹配到resteasy的路径的时候,会去找指定的资源类
4.编写服务端资源类
接口:
@Path(“resteasy/resource”)
public interface IHello {
@Path("/hello")@GETpublic String hello();@Path("/hello/{name}")@GETpublic String helloName(@PathParam("name") String name);@Path("/obj")@POSTpublic String json(String json);
}
解释:
(1)
web.xml配置了
<servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/resteasy/*</url-pattern> </servlet-mapping>
类上面定义了路径 @Path(“resteasy/resource”)
(一定要写resteasy/,因为要和web.xml匹配,如果直接resource的话,就会找不到)
当url输入http://localhost:8080/MyResteasy/resteasy/resource的时候,就会找这个资源
(2)
@Path("/hello")@GETpublic String hello();
http://localhost:8080/MyResteasy/resteasy/resource/hello,会找这个方法
(@GET注解的,可以直接在浏览器查看,@POST标注的,不可以在浏览器查看)
@Path("/hello/{name}")@GETpublic String helloName(@PathParam("name") String name);{name}这样就作为了参数,@PathParam("name") String name定义使用这个参数
如果URL=http://localhost:8080/MyResteasy/resteasy/resource/hello/zxc
相当于helloName(zxc);把zxc传给了这个方法
@Path("/obj")@POSTpublic String json(String json);
对于传递对象,集合比较复杂的,resteasy有相应的配置,这里是个demo,就不深入研究。
这里对于任何对象,都json化,变成json来传递.
这里是post方法
实现类:
public class Hello implements IHello {
public String hello() { return "hello" ;}public String helloName(String name) { String n = null; try { n = URLDecoder.decode(name,"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return name ;}public String json(String json) { String n = null; try { n = URLDecoder.decode(json,"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return json ;}
}
5.
做好前面几步:
2)导入jar包
3)配置xml
4)配置服务资源类
然后运行web工程,然后在浏览器查看其中的第一个注解的
接口:
@Path(“/hello”)
@GET
public String hello();
实现:
public String hello() {
return “hello” ;
}
一般这个方法就是浏览器测试webservice是否配置成功.
浏览器测试:
http://localhost:8080/MyResteasy/resteasy/resource/hello
如下图
webservice配置成功
6.客户端测试
public class TestClient {
public static void main(String[] args) throws Exception{ testPost();}public static void testGet() throws Exception{ //定义资源访问路径 String url = "http://localhost:8080/MyResteasy/resteasy/resource/hello/zhshch" ; //2.连接目标 ClientRequest client = new ClientRequest(url ) ; //3.getTarget只能访问注解的@GET方法,postTarget访问@POST方法 //String.class是返回的类型 String result = client.getTarget(String.class) ; System.out.println(result);}public static void testPost() throws Exception{ String url = "http://localhost:8080/MyResteasy/resteasy/resource/obj" ; //对于webservice的调用,因为传输数据涉及到中文,所以发的是要转码,那边接的时候要解码 String para = "周星驰" ; para = URLEncoder.encode(para,"utf-8") ; ClientRequest client = new ClientRequest( url ) ; //post参数要用下面这种传输 client.body("text/plain", para) ; String result = client.postTarget(String.class) ; //同理,传过来的是转码的数据,这边接的时候也要解码 result = URLDecoder.decode(result,"utf-8") ; System.out.println(result);}
}
对于对象,集合,想测试的可以自己json化试一下。
demo
- webservice(resteasy demo)
- RestEasy开发WebService一
- RESTEasy和restful WebService
- RestEasy(restful风格的)WebService
- spring+resteasy开发webservice服务
- 利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第四波:resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第二波:使用不同的方式让resteasy发布我们的restful webservice 服务(实例、教程)
- 利用resteasy框架构建rest webservice----第四波:resteasy与spring真正集成发布我们的restful webservice 服务(实例、教程)
- Jetty集成Resteasy发布rest服务Demo
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- 利用resteasy框架构建rest webservice----第一波:快速构建HelloWorld(实例、教程)
- webService demo
- webservice demo
- webservice demo
- webservice-demo
- RESTeasy
- zoj 3041 City Selection yy的题
- Zend framework2 - Zend\Authentication和Zend\Acl 用户身份验证与权限控制-Demo参考OK
- shell 日期加减运算
- QTP中的FireEvent
- 数据链路层帧格式
- webservice(resteasy demo)
- Java中float的取值范围
- Linux 学习笔记---日志
- 输入法任意位置与大小
- TCP/IP数据包格式详解-包括数据链路层的头部
- 【构造】URAL 2004 Scientists from Spilkovo
- jdk api
- iPhone 6出现后,如何将一份设计稿支持多个尺寸?
- ios size class + autolayout在ios8以下死机和cpu占用高的问题