2013-07-18 2 views
0

Я пытаюсь получить полный URL-адрес из объекта HttpServletRequest. У меня были разные способы сделать это. Один из способов - объединить requestURL с queryString. Моя ситуация в том, что есть? в конце без параметров запроса. Как определить, что у моего URL есть? в конце.Как получить? в конце URL-адреса, когда нет параметров запроса

URL-адрес примерно: http://www.xyz.com/path/id?

Мне нужно учитывать? как часть идентификатора. (Требование клиента :))

код Я пытаюсь это:

public static String getFullURL(HttpServletRequest request) { 
StringBuffer requestURL = request.getRequestURL(); 
String queryString = request.getQueryString(); 

if (queryString == null) { 
    return requestURL.toString(); 
} else { 
    return requestURL.append('?').append(queryString).toString(); 
} 
} 
+0

у у передает? в конце – PSR

+1

Показать код, который вы пробовали. – Makky

+0

Я отредактировал свой вопрос, чтобы отразить это требование. Это дело клиента. –

ответ

0

В этом случае он не будет добавлять дополнительные? в конце, если return queryString имеет значение null или пустое.

if (queryString != null && !queryString.trim().equals("")) { 
    return requestURL.append('?').append(queryString).toString();  
} else { 
    return requestURL.toString();  
} 

Как определить, что у моего URL есть? в конце. Для этого вы можете проверить

if (queryString == null || queryString.trim().equals("")) { 
    In this case just check requestUrl last char. //String data = requestUrl.substring(0, requestUrl.length-1); 
    check data has "?" 
} 
+0

К сожалению, это не сработает. –

0

Я считаю, что разница, которую вы ищете это:

Когда URL не имеет знак вопроса, то request.getQueryString() результат будет null.

Когда URL-адрес заканчивается знаком вопроса, но не имеет строки запроса, результатом request.getQueryString() будет пустая строка или "".

Таким образом, вы должны быть в состоянии проверить, как это:

String queryString = request.getQueryString(); 
if (queryString == null) { 
    // There was no question mark. React accordingly. 
} else if ("".equals(queryString)) { 
    // The URL ended with a question mark and had no query parameters. React accordingly. 
} else { 
    // The URL ended with a question mark AND parameters. React accordingly. 
} 
+0

Спасибо за ваш ответ. Но это не сработало. Я использую Apache Tomcat 6.0.29 –

+0

Интересно. Я тестировал это на JDK 7 и Tomcat 7, так что да, возможно, это не сработает с 6. Прошу прощения. – MattSenter

Смежные вопросы