如何在Struts2下获取Referer标头?现在我正在使用ActionSupport类,我似乎无法获得ServletActionContext对象或实现ServletRequestAware接口? (Struts2中的ServletRequestAware在哪里?哪个jar?)
我正在尝试设置自动重定向到页面的引用,存储在会话变量中。当有人请求OAuth身份验证时,我会将referer存储在会话中,然后将其发送到twitter。当他们点击允许时,Twitter会将其发送到我的OAuth回调网址。我在那里工作(持久访问令牌),然后将它们发送给我存储在会话中的引用者。
我相信你可以说,我对Struts来说很新。我花了三个多小时阅读Java文档,谷歌搜索,并试图避免愤怒对我的愤怒畏缩
谢谢!
答案 0 :(得分:4)
在动作中引用HTTP元素被认为是“uncool”,但它变得必要......
org.apache.struts2.interceptor.
ServletRequestAware.setServletRequest(HttpServletRequest request);
实现接口,创建一个HttpServletRequest
成员变量,然后将您的成员变量设置为上面实现的setter中的请求。现在您有了请求,您可以执行request.getHeader("referer")
。
有些人还使用静态方法org.apache.struts2.ServletActionContext.getRequest()
来获取请求。它被认为是糟糕的形式,因为它可以使单元测试更加困难,但我一直都看到它。