关闭

JAX-RS 2.0如何验证查询参数

标签: jax-rsrestfulrestjax-rs-2-0web服务
2301人阅读 评论(0) 收藏 举报
分类:

JAX-RS 2.0如何验证查询参数

  • 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。

在JAX-RS 2.0规范中,要验证查询参数并不难,可以通过过滤器ContainerRequestFilter来实现。它还提供了一些可选项,例如使用CDI或EJB的拦截器,或通过@Context注解的HttpServletRequest进行注入。

使用场景:验证由调用者传递的查询参数

步骤:

  1. 实现过滤器
  2. 从ContainerRequestContext上下文中提取查询参数
  3. 执行验证——以适合的响应状态(和错误消息)中止请求

    @Provider
    @QueryParamValidator
    public class JAXRSReqFilter implements ContainerRequestFilter {
    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
    MultivaluedMap < String, String > queryParameters = requestContext.getUriInfo().getQueryParameters();
    String queryParam = queryParameters.keySet().stream().findFirst().get();
    System.out.println(“Query param - ” + queryParam);
    if (!queryParam.equals(“p”)) {
    requestContext.abortWith(Response
    .status(Response.Status.BAD_REQUEST)
    .entity(“Invalid Query Param ” + queryParam)
    .build());
    }
    }
    }

强制过滤器

  • 使用@NameBinding注解来修饰自定义的注解
  • 在JAX-RS的方法上使用自定义的注解

    @NameBinding
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.TYPE, ElementType.METHOD})
    public @interface QueryParamValidator {
    // do something
    }

    @Path(“test”)
    public class TestResource {
    @GET
    @QueryParamValidator
    public String test(@QueryParam(“p”) String p){
    return “Param “+ p + ” on ” + new Date();
    }
    }

1
0
查看评论

JAX-RS 2.0 REST 请求处理

本章学习REST请求的完整处理过程,其中涉及JAX-RS 2.0定义的Provider及其两个特殊类型:过滤器和拦截器。 REST风格的框架都从容器级别支持AOP式开发,Jersey内置AOP支持,可以不依赖于Spring等AOP框架。Jersey的AOP功能来自GlassFish的HK2项目...
  • joeyon
  • joeyon
  • 2016-10-31 18:25
  • 1619

第1章 JAX-RS 2.0 入门

RPC(Remote Procedure Call Protocol) :远程过程调用协议。 JAX-WS全称是JavaTM API forXML-Based Web Services  JAX-RS :全称是  JavaTM API forRESTful ...
  • u010819416
  • u010819416
  • 2016-06-23 21:33
  • 666

JAX-RS(java restful实现讲解)(转)

JAX-RS入门 一 :基础 博客分类:  JAX-RS   简介 JAX-RS是一套用java实现REST服务的规范,提供了一些标注将一个资源类,一个POJOJava类,封装为Web资源。标注包括: @Path,标注资源类或方法的相对路径...
  • tantexian
  • tantexian
  • 2015-07-31 10:20
  • 3010

JAX-RS入门 六: 数据处理(1)

接下来要花两小节来介绍一下JAX-RS中的数据处理(Data Handlers)部分。   一、SteamingOutput 在第一节中(http://liugang594.iteye.com/blog/1491434),看getCustomer()方法: ...
  • u013615806
  • u013615806
  • 2016-06-30 17:31
  • 686

MyEclipse开发JAX-RS架构WebServices收发JSON数据格式

写在最前面:最近因项目需求,开始学习WebServices。虽是快餐式学习,但也一路波折,故写下这篇博文已供后来者借鉴,快速入门。下面进入正题。   开发环境: MyEclipse2013 客户端发送的JSON数据格式为 {persons:[{"name":"...
  • NaNi_Z
  • NaNi_Z
  • 2013-10-24 15:24
  • 3896

webservice的几种验证方式(一)基于JAX-WS

近年来,随着面向服务的平台的大规模开放,异构程序之间的通信的需求不断增多,随之而来的就是webservice的蓬勃发展。Java中用来构建webservice的主流技术有Axis2,JAX-WS,CXF(主要对JAX-WS进行了一系列的封装)。今天主要给大家介绍一些关于webservice的验证或者...
  • yfz792178428
  • yfz792178428
  • 2015-01-13 10:54
  • 4965

JAX-RS 2.0 REST客户端编程实例

导读 JAX-RS 2.0 又称 JSR 339 不仅定义了一套用于构建 RESTful 网络服务的 API,同时也通过增强客户端 API 功能简化了REST 客户端的构建过程。 JA...
  • zheng963
  • zheng963
  • 2015-06-17 09:48
  • 1719

基于JAX-RS 2.0 REST服务几种类型

1、类型一,不存在Application子类,不存在Servlet子类,则需要动态生成一个servlet的实例,javax.ws.rs.core.Application 2、类型二,不存在Application子类,存在Servlet子类,定义一个继承Servlet子类,Servlet2中在w...
  • u014470581
  • u014470581
  • 2016-04-19 19:33
  • 344

JAX-RS 2.0如何验证查询参数

JAX-RS 2.0如何验证查询参数 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 在JAX-RS 2.0规范中,要验证查询参数并不难,可以通过过滤器ContainerRequestFilter来实现。它还提供了一些可选项,例如使用CDI或EJB的拦截器,或通过@Context注...
  • chszs
  • chszs
  • 2017-06-08 21:36
  • 2301

JAX-RS

一、简介 JAX-RS(Java API for RESTful Web Services),是JAVAEE6中提出的Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。 二、示例 1、maven 配置 javax.ws.rs jsr311...
  • u011865806
  • u011865806
  • 2013-08-31 14:38
  • 1366
    个人资料
    • 访问:5957486次
    • 积分:52113
    • 等级:
    • 排名:第64名
    • 原创:795篇
    • 转载:23篇
    • 译文:24篇
    • 评论:1190条
    一名路过的黑客

    大家好,我是黑客,专门盗账号的。现在这个人的帐号被我盗了,但看这个人平时的博客空间,一直过着艰苦努力、持之以恒的技术研究生活,勤奋刻苦,积极分享,无私奉献,我被深深的感动了,这是一个纯粹的人,人品这样的高尚,希望大家看到我这条消息后,可以私聊他,多鼓励他,不缺钱的就多给他一些经济上的资助,让他再接再厉!就这样吧,我下线了,眼框湿湿的难受。

    文章存档