【问题标题】:Getting exact URL in Struts2在 Struts2 中获取准确的 URL
【发布时间】:2012-12-20 18:06:55
【问题描述】:

我想获取 Struts2 Web 应用程序访问的 URL。例如,如果用户访问http://www.webpage.comhttps://www.webpage.com,我需要协议; http 或 https。我尝试使用 ServletRequestAware 并使用 request.isSecure() 或 request.getScheme() 来实现该操作。但是,即使我访问“https://..”链接,我也会得到错误和“http”。

有什么办法可以得到协议吗?

【问题讨论】:

    标签: url struts2


    【解决方案1】:

    您可以从标题中提取它:

    System.out.println(request.getHeader("referer"));
    

    输出:

    https://www.webpage.com

    【讨论】:

    • 我得到 null 作为输出。
    • 那么事情就真的不对了。请发布您获取 Request 对象的方式。
    • 好吧。动作类实现了 ServletRequestAware。我有一个被设置的私有 HttpServletRequest 变量。
    • Action 是否也扩展了 ActionSupport ?
    • 是的。它扩展了 ActionSupport。
    【解决方案2】:

    我想你忘了再尝试一件事。 用 ServletRequestAware 实现 Action 并使用

    request.getProtocol();
    

    否则,您可以在您的操作类中使用以下代码:

    HttpServletRequest request=ServletActionContext.getRequest();
        String protocol=request.getProtocol();
        System.out.println("Protocol Used::"+protocol);
    

    【讨论】:

    • 我得到“Protocol Used::HTTP/1.1”作为输出
    • 所以你实际上得到了你想要的对吗?协议。
    • 嗯..其实我需要检查它是使用http还是https访问
    • 那么您是想检查您的应用程序是否正在使用 htttp 或 https 进行访问?对吗?
    • 那么老兄...你有一个问题,您的应用程序只能使用http访问,因为...除非您在应用程序中添加了SSL 它永远无法使用https访问。一旦你添加了 SSL,即使有人键入 http+website.. SSL 使它成为 https :) 尝试自己使用 http 访问 facebook,它涉及到 https :).. 所以我想我现在已经正确回答了你的答案 :)
    猜你喜欢
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2018-03-06
    • 2020-12-10
    相关资源
    最近更新 更多