Как перехватить запрос по базе URL?

У меня есть шум, который нужно решить, и мне нужна помощь. Предположим, у меня есть URL из моего домена, например: http://mydomain.com/any_page.xhtml. Например. Я хотел бы перехватить запрос пользователя при нажатии на ссылку, которая теоретически ведет к моему домену, и мне нужно, чтобы он перехватывал и перенаправлял его на определенный новый URL-адрес на основе моего критерия. Я работаю с простыми сервлетами. Во время моего расследования я увидел, что Фильтр может мне помочь. Кто-нибудь знает, как создать что-то для этого предложения?


person axcdnt    schedule 15.03.2011    source источник


Ответы (2)


Просто реализуйте javax.servlet.Filter.

Если вы сопоставите это с шаблоном URL /*, оно будет выполняться при каждом запросе.

<url-pattern>/*</url-pattern>

или когда вы уже используете Servlet 3.0

@WebFilter(urlPatterns = { "/*" })

Вы можете получить URI запроса по адресу HttpServletRequest#getRequestURI() в методе doFilter() фильтра следующим образом:

HttpServletRequest httpRequest = (HttpServletRequest) request;
String uri = httpRequest.getRequestURI();
// ...

Вы можете использовать любой из методов, предоставляемых java.lang.String класс для сравнения/манипулирования им.

boolean matches = uri.startsWith("/something");

Вы можете использовать if/else ключевых слов, предоставляемых языком Java, для управления потоком кода.

if (matches) {
    // It matches.
} else {
    // It doesn't match.
}

Вы можете использовать HttpServletResponse#sendRedirect() для отправки переадресации.

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect(newURL);

Вы можете использовать FilterChain#doFilter(), чтобы просто продолжить выполнение запроса.

chain.doFilter(request, response);

Делать математику. Конечно, вы также можете использовать сторонний фильтр, такой как фильтр перезаписи URL-адресов Tuckey, который, скажем, является вариантом Java Apache HTTPD mod_rewrite.

Смотрите также:

person BalusC    schedule 15.03.2011

Возможно, посмотрите UrlRewriterFilter?

person Buhake Sindi    schedule 15.03.2011