【问题标题】:Get the URL from mJSP page从 mJSP 页面获取 URL
【发布时间】:2011-08-31 04:15:21
【问题描述】:

我会获取当前 JSP 网页的 URL 及其设置 例如:index.jsp?参数 = 12

你有什么想法吗? 谢谢

【问题讨论】:

    标签: jsp url


    【解决方案1】:

    您可以从EL 中的HttpServletRequest 对象中获取它,该对象由${pageContext.request} 提供。 ? 之前的部分可以通过getRequestURL() 方法获得,? 之后的部分可以通过getQueryString() 方法获得。所以,简而言之:

    <p>Request URL: ${pageContext.request.requestURL}</p>
    <p>Query string: ${pageContext.request.queryString}</p>
    <p>Full URL: ${pageContext.request.requestURL}?${pageContext.request.queryString}</p>
    

    如果您想使用普通 Java 代码执行此操作,您最好使用 Servlet

    String requestURL = request.getRequestURL().toString();
    String queryString = request.getQueryString();
    if (queryString != null) requestURL += "?" + queryString;
    // ...
    

    【讨论】:

    • 警告:如果您使用 RequestDispatcher 转发到 jsp 页面,上述 jsp 代码可能不会生成您期望的 URL。它将生成转发的 jsp 页面的 URL,而不是用户实际请求的 URL。我有mentioned this to @BalusC before,我仍在等待令人满意的解决方法。现在,我包括 jsps 而不是转发。
    • @Asaph:哇,多么好的态度。我一定忽略了这个评论回复。它被设置为请求属性。对于名称,检查常量RequestDispatcher#FORWARD_REQUEST_URI 的值。以后,如果您有任何问题需要解答,只需按
    • 对不起。我不是有意对此有任何态度。别往心里放?那么您是否要更新您的答案以使用请求属性而不是${pageContext.request.requestURL}?。在我看来,这会更好。不?另外,如果请求被转发多次怎么办? request 属性是否仍会包含用户请求的 URL?
    • @Asaph:没有什么可以证明 OP 正在向前推进。如果没有进行转发,则不设置该属性。我记得一些相关的答案,您可能会发现它很有用:stackoverflow.com/questions/3663329/…stackoverflow.com/questions/5622461/…
    • 谢谢。这些链接很有帮助。再一次,我并不是有意在我最初的评论中表现得粗鲁。对不起。
    【解决方案2】:

    查看HttpServletRequest 对象,您可以在脚本中从您的JSP 访问它(尽管这并不漂亮)。它有很多获取页面URL的方法,包括参数。感兴趣的方法是:

     - getQueryString 
     - getRequestURI
     - getRequestURL
    

    和他们一起玩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-23
      • 2011-06-17
      • 2011-05-12
      • 2020-03-07
      • 2016-03-22
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多