Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Springbeans中获取HttpServletRequest?_Java_Apache Flex_Spring_Facebook - Fatal编程技术网

Java 如何在Springbeans中获取HttpServletRequest?

Java 如何在Springbeans中获取HttpServletRequest?,java,apache-flex,spring,facebook,Java,Apache Flex,Spring,Facebook,我正在开发一个基于Flex的前端和Spring/Hibernate后端的应用程序 为了让Facebook集成以我目前的方式工作,我需要阅读后端前端javascript中设置的cookies,并在登录期间进行一些验证,以查看用户是否试图欺骗他的Facebook登录 这将非常简单,但我不知道如何获取HttpServletRequest。我使用的是一个非常基本的Spring配置(这是我第一个真正的Spring应用程序,我现在对它非常熟悉,但有很多我从未看过) 我没有使用SpringMVC或Spring

我正在开发一个基于Flex的前端和Spring/Hibernate后端的应用程序

为了让Facebook集成以我目前的方式工作,我需要阅读后端前端javascript中设置的cookies,并在登录期间进行一些验证,以查看用户是否试图欺骗他的Facebook登录

这将非常简单,但我不知道如何获取HttpServletRequest。我使用的是一个非常基本的Spring配置(这是我第一个真正的Spring应用程序,我现在对它非常熟悉,但有很多我从未看过)

我没有使用SpringMVC或SpringWebFlow之类的东西。我可以获取ServletContext,但我还没有弄清楚如何获取请求


有什么帮助吗?

这是一种特定于Flex/BlazeDS的解决方案,但下面是我提出的解决方案。如果回答我自己的问题是失礼的话,我很抱歉

    HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest();

    Cookie[] cookies = request.getCookies();

    for (Cookie c:cookies)
    {
        log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain()));
    }

它起作用了,我得到了饼干。我的问题是期待春天的到来——BlazeDS拥有它。Spring可能也是,但我仍然不知道如何使用它。

如果FlexContext不可用:

解决方案1:内部方法(>=需要Spring 2.0)

解决方案2:内部bean(支持>=2.5,singelton bean需要Spring3.0!)


@Context
注释(请参见此问题中的答案:)将导致为您注入该注释

我不得不使用

@Context
private HttpServletRequest request;

@eeezyy的答案对我不起作用,尽管我使用的是Spring Boot(2.0.4),它可能有所不同,但2018年的一个变化是这样的:

@Autowired
private HttpServletRequest request;
这应该可以

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();

更好的方法是使用构造函数自动连线:

private final HttpServletRequest httpServletRequest;

public ClassConstructor(HttpServletRequest httpServletRequest){
      this.httpServletRequest = httpServletRequest;
}

您还可以使用@Resource注释而不是自动连接。您不需要显式地要求自动连接,并且绑定到Spring的次数也少了一点编辑建议删除信息,对于singelton beans,Spring>=3是必需的。Spring 2.5中有一个bug/缺少的特性,即将请求范围的bean注入singelton bean无法正常工作。获取错误:“未找到线程绑定请求:您是指实际web请求之外的请求属性,还是在本例中处理原始接收线程之外的请求,使用RequestContextListener或RequestContextFilter公开当前请求
((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();
private final HttpServletRequest httpServletRequest;

public ClassConstructor(HttpServletRequest httpServletRequest){
      this.httpServletRequest = httpServletRequest;
}