Java « Получить текущий URL на jsp странице (Spring Web MVC)

Spring Web MVC, в качестве View - JSP

Следующий код
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .html4strict.geshi_code {font-family:monospace;} .html4strict.geshi_code .imp {font-weight: bold; color: red;} .html4strict.geshi_code .kw2 {color: #000000; font-weight: bold;} .html4strict.geshi_code .kw3 {color: #000066;} .html4strict.geshi_code .es0 {color: #000099; font-weight: bold;} .html4strict.geshi_code .br0 {color: #66cc66;} .html4strict.geshi_code .sy0 {color: #66cc66;} .html4strict.geshi_code .st0 {color: #ff0000;} .html4strict.geshi_code .nu0 {color: #cc66cc;} .html4strict.geshi_code .sc-1 {color: #808080; font-style: italic;} .html4strict.geshi_code .sc0 {color: #00bbdd;} .html4strict.geshi_code .sc1 {color: #ddbb00;} .html4strict.geshi_code .sc2 {color: #009900;} .html4strict.geshi_code span.xtra { display:block; }

${pageContext.request.requestURL}
 

выдает

http://.../WEB-INF/jsp/common/editProfile.jsp

т.е. физическое расположение странцы("разрезолвенное" значение представления ), а не урл, который виден в адресной строке браузера. Вопрос как получить в данной ситуации текущий урл страницы? (может где-то контекст spring'a донастроить и т.д.)

P.S. Аналогичный вопрос задан здесь - http://www.experts-exchange.com/Programming/Languages/Java/J2EE/JSP/Q_23741290.html

1 ответов



        <spring:url var="current_url" value="">
            <!-- optional: add some params -->
            <spring:param name="lang" value="en"/>
        </spring:url>
 

В целом ответ кроется в разделах 8.3, 8.4 Servlet Specification v2.4 и зависит от того, какой метод диспатчинга (request dispatching) используется: include или forward. Необходимая информация хранится в следующих атрибутах запроса:


javax.servlet.include.request_uri
javax.servlet.include.context_path
javax.servlet.include.servlet_path
javax.servlet.include.path_info
javax.servlet.include.query_string

javax.servlet.forward.request_uri
javax.servlet.forward.context_path
javax.servlet.forward.servlet_path
javax.servlet.forward.path_info
javax.servlet.forward.query_string


Но это будет работать только в том случае, если диспатчинг происходит в том же контейнере сервлетов.


request.getContextPath