什么是javax.ws.rs.core.context? [ 第1部分 ]

本文详细介绍了JAX-RS API中的@Context注解,它允许将HttpHeaders、UriInfo等有用资源注入到REST端点中。通过示例展示了如何使用@Context注入HttpHeaders和UriInfo实例,以便于访问HTTP标头和请求URI的相关信息。此外,还预告了后续将探讨如何使用@Context保护RESTful Web服务。
摘要由CSDN通过智能技术生成

如何使用@Context批注

JAX-RS API提供了一种非常方便的机制,可以将各种有用的资源(例如HTTP标头)注入到端点中。 @Context注释是一个通用注释,它注入以下对象的实例:

  • HttpHeaders- > HTTP标头参数和值
  • UriInfo- >捕获路径变量和查询参数
  • SecurityContext- >提供对请求的安全性相关信息的访问
  • ResourceContext- >提供对资源类实例的访问
  • 请求 ->前提条件请求处理
  • 应用程序配置提供程序 ->提供有关JAX-RS应用程序环境的信息
  • HttpServletRequest- >提供对HttpServletRequest实例的访问
  • HttpServletResponse- >提供对HttpServletResponse实例的访问
  • ServletConfig- >提供对ServletConfig的访问
  • ServletContext- >提供对ServletContext的访问

让我们依次使用工作代码示例进行研究。

使用@Context注入HttpHeaders实例

有两种获取HTTP标头参数值的方法。 如果可以使用@HeadParam批注标记资源方法参数并将其传递给参数名称,则将HTTP标头参数的值分配给由@HeadParam批注注释的String变量。 以下代码片段检索user-agent参数的值并将其分配给UserAgent String。

@HeaderParam("user-agent") String userAgent

如果您只需要几个头值,那么这是一个很好的解决方案,但是如果您想要很多或不确定参数名需要遍历头,那该解决方案还不够好。 幸运

优化这段代码// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.api.Shenhh; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import weaver.conn.RecordSet; @Path("/Shenhh") public class Service_Test { public Service_Test() { } @GET @Path("/test01") @Produces({"application/json"}) public void selectAll(@Context HttpServletRequest req, @Context HttpServletResponse res) { try { req.setCharacterEncoding("utf-8"); res.setContentType("text/html;charset=utf-8"); ServletOutputStream out = res.getOutputStream(); JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); RecordSet recordSet = new RecordSet(); String sql = "select * from formtable_main_20"; recordSet.execute(sql); while(recordSet.next()) { jsonObject.put("name", recordSet.getString("xm")); jsonObject.put("bm", recordSet.getString("bm")); jsonObject.put("date", recordSet.getString("rq")); jsonObject.put("sw", recordSet.getString("swdksj")); jsonObject.put("xw", recordSet.getString("xwdksj")); jsonObject.put("sfkg", recordSet.getString("sfkg")); jsonArray.add(jsonObject); out.print(jsonArray.toString()); out.println("1沈哈哈!!!!!!!!!!!!!!!!!!!"); } } catch (Throwable var8) { throw var8; } } }
03-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值