两个@Path和@Get相同的方法,

其中一个使用@Pathparam时,WebService可以有效区分两者的区别,认为是两个不同的方法

而其中一个使用@Queryparam,WebService无法区别两者的区别,且会认为这是两个相同的方法

具体示例代码及注解如下:

此为接口类

package cn.itcast.cxf.service;import java.util.List;import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import cn.itcast.cxf.domain.User;//创建服务接口
//设置接口路径,因为applicationCcontext中的路径重合,所以注释掉
//@Path("/userService")
//设置生产者,即出来的数据路径,因为每个方法都要设置具体的生产者,所以也注释掉
//@Produces("*/*")
public interface IUserService {//设置post方法:增加@POST//设置方法路径@Path("/user")//设置入参类型:消费者:参数是数组@Consumes({"application/xml","application/json"})public void post(User user);//设置delete方法:删除@DELETE//参数可以用路径参数的方式注入@Path("/user/{id}")@Consumes({"application/xml","application/json"})public void delete(@PathParam("id") Integer id);//设置put方法:修改@PUT@Path("/user")@Consumes({"application/xml","application/json"})public void update(User user);//设置get方法:全查询@GET@Path("/user")@Produces({"application/xml","application/json"})public List<User> findAll();//设置get方法:根据id查询,使用@PathParam传参@GET@Path("/user/{id}")@Produces({"application/xml","application/json"})@Consumes({"application/xml","application/json"})public User findByIdPathParam(@PathParam("id") Integer id); //设置get方法:根据id查询,使用@QueryParam传参//★★★???使用Queryparam时,只有把路径名称@Path改为users,才能访问,而使用@PathParam时,则不需要改变路径名称@Path,仍可用/user//因为当使用@Queryparam时,findAll和findById两个方法都是一样的路径http://localhost:9995/cxf_rs_spring/services/userService/user//只不过findById的路径后面多加了一个参数http://localhost:9995/cxf_rs_spring/services/userService/user?id=1,//这个参数并不能算路径的一部分,且访问方式都是get,那么webService会认为它们是同一个方法,//而使用@PathParam时,因为访问时要在路径后加上参数/1,localhost:9995/cxf_rs_spring/services/userService/user/1//这个参数构成了路径的一部分,所以使得findById的访问路径与findAll的访问路径有所区别,webService认为它们不是同一个方法,所以不要修改路径@Path为users@GET@Path("/users")@Produces({"application/xml","application/json"})@Consumes({"application/xml","application/json"})public User findByIdQueryParam(@QueryParam("id") Integer id);
}

此为实现类:

package cn.itcast.cxf.service;import java.util.ArrayList;
import java.util.List;import cn.itcast.cxf.domain.Car;
import cn.itcast.cxf.domain.User;public class UserServiceImpl implements IUserService {public void post(User user) {System.out.println(user+"执行保存方法成功");}public void delete(Integer id) {System.out.println(id+"执行删除方法成功");}public void update(User user) {System.out.println("update user:" + user);}public List<User> findAll() {List<User> users = new ArrayList<User>();User user1 = new User();user1.setId(1);user1.setUsername("小明");user1.setCity("北京");List<Car> carList1 = new ArrayList<Car>();Car car1 = new Car();car1.setId(101);car1.setCarName("保时捷");car1.setPrice(1000000d);carList1.add(car1);Car car2 = new Car();car2.setId(102);car2.setCarName("宝马");car2.setPrice(400000d);carList1.add(car2);user1.setCars(carList1);users.add(user1);User user2 = new User();user2.setId(2);user2.setUsername("小丽");user2.setCity("上海");users.add(user2);return users;   }public User findById(Integer id) {if (id == 1) {User user1 = new User();user1.setId(1);user1.setUsername("小明");user1.setCity("北京");return user1;}return null;}@Overridepublic User findByIdPathParam(Integer id) {if (id == 1) {User user1 = new User();user1.setId(1);user1.setUsername("小明");user1.setCity("北京");return user1;}return null;}@Overridepublic User findByIdQueryParam(Integer id) {if (id == 1) {User user1 = new User();user1.setId(1);user1.setUsername("小明");user1.setCity("北京");return user1;}       return null;}}

WebService CXF-RS技术之@Pathparam与@Queryparam注解区别相关推荐

  1. java中 queryparam_@PathParam 和 @QueryParam

    今天调试一个上传功能,客户端手持机发送数据,在URL中附加一个参数,后台用@PathParam接收,但是报错,无法获取这个参数. url:http://192.168.1.3/web1_service ...

  2. WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS

    WebService CXF系列: SpringBoot同一个项目中集成JaxWS和JaxRS 介绍 项目介绍 项目架构 项目介绍 项目集成的原则 SpringBoot集成JaxWS 1. JaxWs ...

  3. Java技术——Interface与abstract类的区别

    0. 前言   抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在对多态提供了非常好的支持.他们两者有很大的相似,甚至可以互换,但是也有区别.对于他们的选择反应了你对该问题的 ...

  4. [管理与领导-1]:专业技术岗位与管理领导岗位的区别

    [一]为什么需要知道专业技术岗位与管理领导岗位的区别 对于技术人员,无论是一直从事技术,还是由技术岗向管理领导岗转变,都需要理解专业技术岗位与管理领导岗位的区别.理由如下 (1)坚持技术: 当今的社会 ...

  5. 都是技术人员,还要分三六九等区别对待?

    都是技术人员,还要分三六九等区别对待? Hello,各位小伙伴大家好,我是小栈君.昨天收到了小伙伴的私信吐槽某大公司某行对技术人员进行区别对待,虽然在以往的鄙视程序员行列里面涵盖了相亲嘲讽,发际线嘲讽 ...

  6. java cxf 搭soa,WebService CXF入门问题 SOA 骑着上帝去环游 - 贪吃蛇学院-专业IT技术平台...

    package deng; import javax.xml.ws.Endpoint; import com.founder.ws.HelloWorld; import com.founder.ws. ...

  7. webservice CXF入门服务端

    CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它. CXF主页:http://cxf.apache.org/ 简介:百度百科 今天的话,主要是用CXF来开发下Web ...

  8. ssh整合webservice cxf采用注解的方式+andriod客户端

    定义接口和实现类 /**  * 自定义service接口  *   * @time 9:01:54 PM  * @author retacn yue  * @Email zhenhuayue@sina ...

  9. springboot webservice cxf 客户端调用

    大家好,我是烤鸭: 这篇文章分享的是xcf webservice接口调用.如果接口提供方要求是webservice调用的话,可以参考这篇内容. 1.    pom文件 <dependency&g ...

  10. WebService CXF --- 传输文件MTOM

    博客分类: WebService 一.几个相关的概念 1.MTOM基础概念 MTOM(Message Transmission Optimization Mechanism)消息优化传输机制. 它提出 ...

最新文章

  1. CMU赵越:异常检测的算法、案例和落地
  2. 8大领域、6大机遇!读懂2020年AI医疗新风向
  3. 产品经理说以后接口不找你写了!啥情况?我要凉了?
  4. Java SE 12扩展Switch语句/表达式完整指南
  5. Linux C 时间函数
  6. 第二节:重写(new)、覆写(overwrite)、和重载(overload)
  7. 接口与抽象类区别和接口jdk8新特性
  8. Python案例:输出指定要求的回文日期
  9. C++ VS2012 内存泄露检测
  10. springboot异常
  11. 一篇比较好的高数的学习规划分享
  12. Dbeaver在公司内网情况下进行编辑驱动
  13. 【5G系列】Network Slicing学习总结(4)
  14. 论文写作,word首页脚注不显示编号
  15. D3入门教程——坐标轴
  16. JAVA+selenium+testNG QQ邮箱登录及邮箱发送
  17. 如何使用swagger的API接口获取数据并且封装
  18. Java面向对象设计
  19. Linux系统的注销与关闭
  20. 海港中学2021高考成绩查询,热烈祝贺海港高中2020年高考再创佳绩

热门文章

  1. 推荐系统-基于用户的推荐在社交网络中的应用
  2. 怎么用一套键鼠控制两个电脑
  3. Elasticsearch 创建索引 Java 实现
  4. i51130g7和i71160g7差多少 酷睿i5 1130G7和i7 1160G7差距
  5. sumo 教程——高速公路
  6. 14期-连肝7个晚上,总结了计算机网络的知识点!(共66条)
  7. Uni-app 小程序 App 的广告变现之路:激励视频广告
  8. 计算机课程设计心得,课程设计心得体会 -心得
  9. android按键精灵兼容性,为什么逍遥android模拟器安装按键精灵总是出错
  10. 1. 制作满屏水印(PS)