【问题标题】:In jersey2.x how to inject HttpRequest and HttpSession object ? how to use injected object outside在 jersey2.x 中如何注入 HttpRequest 和 HttpSession 对象?如何在外部使用注入的对象
【发布时间】:2016-06-20 20:02:22
【问题描述】:

使用 Jersey 2.x 如何注入 HttpRequest 和 HttpSession 对象?以及如何在服务类中使用注入的请求和Httpsession对象?

  1. 在 jersey 2.x 中,Resource 类中的注入请求和会话对象可以正常获取请求和会话对象

  2. 像商务舱一样不工作。

【问题讨论】:

    标签: java jakarta-ee jersey-2.0


    【解决方案1】:

    您可以尝试将@Context HttpServletRequest request 添加到您的资源方法签名中。这将使request 在方法期间可用。

    将 HttpServeltRequest / Session 对象向下传递给服务或业务类不是一个好习惯。如果您这样做,您将很难在除 Web 应用程序之外的任何东西中使用服务类。您应该从 Resource 类中的 HttpServletRequest / Session 中提取服务类所需的数据并将其传递给服务类

    例如,如果您的服务类需要访问 HttpServletRequests“userName”参数中保存的用户名,那么资源类应该这样做

    String userName = req.getParameter("UserName");
    serviceClass.doSomething(userName);
    

    而不是

    serviceClass.doSomething(req);
    

    【讨论】:

    • 请注意,在带有 grizzly 服务器的球衣中,不能注入 HttpServletRequest,因为它将为空。请看stackoverflow.com/questions/37167921/…
    • @AlexandreCartapanis that's not true
    • @AlexandreCartapanis 我能问一下你是否因为你对灰熊的断言而投了反对票吗? OP 在问题中没有提到灰熊,所以如果你投了反对票,你的反对票与 OP 没有问的问题有关
    • @DaveH 你是对的,我试图取消反对票,但这是不可能的,因为它是 6 小时前(说“你最后一次投票是在 6 小时前。你的投票现在被锁定,除非此答案已编辑。”)...也许您可以编辑您的答案,以便我可以取消它?
    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多