【问题标题】:Reading whole url from servlet从 servlet 读取整个 url
【发布时间】:2013-01-05 17:40:03
【问题描述】:

我想从 servlet 中读取 HTTP 请求中设置的确切 URL。这与任何 URL 重写部分一起 (;jsessionid=...)。

有可能吗?

【问题讨论】:

  • 不,这不包括“;jsession...”部分
  • 请求 URL 中可能没有 jsessionid 参数。如果启用了 cookie,jsessionid 将作为 HTTP 标头出现。在这种情况下,您可以通过以下方式获取它:request.getRequestedSessionId()

标签: java url servlets


【解决方案1】:

获取请求的URL(;?之前的部分)如下:

StringBuffer requestURL = request.getRequestURL();

如果会话 ID 作为 URL 路径片段附加,您可以检查如下:

if (request.isRequestedSessionIdFromURL()) {
    requestURL.append(";jsessionid=").append(request.getSession().getId());
}

您可以按如下方式获取和附加查询字符串(如果有):

if (request.getQueryString() != null) {
    requestURL.append('?').append(request.getQueryString());
}

最后得到完整的URL如下:

String fullURL = requestURL.toString();

【讨论】:

  • +1 表示;jsessionid= 部分,但您在附加查询字符串时错过了) ;)
  • 谢谢,这就是我要找的东西
  • uff,错了,如果 servlet 接收到包含无效 sessionid 的 url,这将不起作用。我不想粗鲁,但这不是一个完整的答案,所以我不接受它。
  • 好的。在这种情况下,request.getRequestedSessionId() 是什么意思?如果它返回所需的值,request.isRequestedSessionIdFromURL()...FromCookie() 会说什么?
  • fromCookie 返回 true,FromURL 返回 false,我不知道 URL 最初是否包含 ;jsessionid
猜你喜欢
  • 2010-11-01
  • 2013-12-07
  • 2013-09-04
  • 2018-02-10
  • 1970-01-01
  • 2010-11-11
  • 2014-10-17
  • 2013-03-15
  • 1970-01-01
相关资源
最近更新 更多