Restful:如何访问 Service 类中的 Httpsession?

Posted

技术标签:

【中文标题】Restful:如何访问 Service 类中的 Httpsession?【英文标题】:Restful : How to get access to Httpsession inside the Service class? 【发布时间】:2012-08-03 14:05:22 【问题描述】:

我正在使用 Jersey restful web services 。 这是我下面的代码

@Path(/test)
public class testService  
    @POST
    public String getData(Postdata postdata) 

    


我的问题是,在这个类中是否可以访问 httpSession 对象??

【问题讨论】:

【参考方案1】:

试试:

@POST
public String getData(Postdata postdata, @Context HttpServletRequest request) 
  HttpSession session = request.getSession();

【讨论】:

什么是'@Context'注解..?是春天吗? 这是一个 JAX-RS 注释:jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/…【参考方案2】:

如果你的服务不是单例的,你可以使用:

@Path("/test")
public class TestResource  

    @Context
    private HttpServletRequest request;

    @POST
    public String getData(Postdata postdata) 
        HttpSession session = request.getSession();
    


【讨论】:

是否也可以在运行时检索 HttpServletRequest?通过 ServiceLocator 还是其他方式? 嗨,@zwanz0r 在运行时?我不懂你说什么。你想说用 JAX-RS 吗? @U2Answer 你可以试试ThreadLocal,见***.com/a/5473312/870248 @U2Answer 嗯……不。见https://github.com/jersey/jersey/search?utf8=✓&q=ThreadLocal&type=Code 设计,是的!它必须是无状态的。 但是,由于 JAX-RS 是基于 servlet 的,因此您可以使用 request 对象访问会话对象,就像普通的 servlet 一样。您可以执行this 之类的操作。太棒了!

以上是关于Restful:如何访问 Service 类中的 Httpsession?的主要内容,如果未能解决你的问题,请参考以下文章

spring3 mvc的service如何在类中的中的怎么样使用

如何访问 RESTful POST 方法中的参数

如何封装RESTful Web Service

如何使用 post/put WCF RestFul Service

构建一个基于 Spring 的 RESTful Web Service

restful web service:如何测试{id}项是否存在?