如何使用@Context批注
在什么是javax.ws.rs.core.context的第3部分中? 您学习了如何在请求和配置,提供程序和应用程序实例中使用@Context批注。
在本文中,您将学习如何使用@Context批注注入HttpServletResponse和HttpServletRequest类。
获取对HttpServletRequest属性的访问权限
JAX-RS API在Servlet之上运行,因此Servlet对象的实例可用于JAX-RS资源。 @Context批注用于为当前请求注入HttpServletRequest实例。 它的方法可以访问有关请求的详细信息。
让我们看一个简单的示例,该示例检索请求的远程地址。
@Path("/remote-address")
public class HttpServletRequestResource {@GET@Produces(MediaType.APPLICATION_JSON)public Response getRemoteAddress(final @Context HttpServletRequest httpServletRequest){return Response.ok(httpServletRequest.getRemoteAddr()).build();}}
在此代码示例中,Servlet请求对象通过@Context注释注入到方法参数httpServletRequest中 。 调用getRemoteAddr()方法并返回发出请求的服务器的IP地址。
如果在本地计算机上运行此示例,则调用URL http:// localhost:8080 / rest-server / remote-address的响应将是127.0.0.1。
获取对HttpServletResponse属性的访问权限
正如您可以获取HttpServletRequest对象的实例一样,您也可以获取HttpServletResponse实例并调用其方法并在响应实例上设置值。
让我们看一个获取ServletOutputStream并将消息刷新到响应的示例。
@Path("/output")
public class HttpServletResponseResource {@GET@Produces(MediaType.APPLICATION_JSON)public Response get(final @Context HttpServletResponse httpServletResponse) throws IOException {ServletOutputStream out = httpServletResponse.getOutputStream();out.print("Hello");out.flush();return Response.ok().build();}
}
在此示例中,将HttpServletResponse对象实例注入到方法参数httpServletResponse中 ,然后获取ServletOutputStream对象的实例。 然后,我使用该对象将消息写入输出流,然后将其刷新到响应。
如果访问URL http:// localhost:8080 / rest-server / output,您将在屏幕上看到消息“ Hello” 。
代码库
此代码和我所有文章的源代码都在readlearncode_articles Github存储库中。
接下来是什么?
以上是什么 , 什么是javax.ws.rs.core.context?的第5部分的第4部分。 您将学习如何使用@Context批注注入javax.servlet实例。 ServletConfig和javax.servlet。 ServletContext 。
Java EE视频课程
如果您刚刚起步并且是Java EE的新手,那么使用所有API可能会非常令人困惑。 这就是为什么我制作了视频课程“ 学习Java企业版”的原因 。 在这个为期两个小时的课程中,您将学习所有最重要的Java EE API。 通过大量的代码示例和有关如何使用Java EE进行开发的演示,您很快就会成为Java EE开发人员。
入门课程结束后,您将希望更深入地研究每个API。 也有一些课程。 您可以通过学习如何使用JAX-RS API构造RESTful端点来提高对Java EE的了解,然后可以学习如何使用WebSocket API开发聊天应用程序,然后通过JSON-Processing API课程掌握JSON。 路线图上还有更多的课程,所以为什么不立即加入并让您的Java EE事业发展呢?
进一步阅读
我最近发布了一个迷你系列博客,介绍了JAX-RS 。 它们在readlearncode.com上发布,并讨论如何管理bean验证失败 ,如何与使用者和生产者一起使用以及如何创建JAX-RS资源实体 。
翻译自: https://www.javacodegeeks.com/2017/08/javax-ws-rs-core-context-part-4.html