Как переслать все виды запросов из ROOT в контекст другого веб-приложения с Tomcat - PullRequest
2 голосов
/ 08 декабря 2011

Мне нужно перенаправить все виды запросов из ROOT, т.е. http://localhost:8080/ в http://localhost:8080/myRoot

Возможно ли мне создать сервлет перенаправления?Тем не менее, я думаю, что Tomcat может быть настроен так себя вести?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Простым способом было бы создать фильтр, похожий на этот

@WebFilter("/*")
public class RedirectFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        String uri = request.getRequestURI();
        String query = request.getQueryString();

        if (query != null) {
            uri = uri + "?" + query;
        }

        response.setStatus(301);
        response.setHeader("Location", "/myRoot" + uri);
        // Can also use response.sendRedirect(), but this does 302 by default.
    }

    // ...
}

и поместить его в Tomcat/webapps/ROOT/WEB-INF/classes/com/example/RedirectFilter.class.

Если вы все еще используете Tomcat 6.0 или старше, тогдаудалите @WebFilter аннотацию и создайте web.xml соответственно.

0 голосов
/ 08 декабря 2011

Я использовал UrlRewriteFilter

Развернул фильтр в ROOT и изменил urlrewrite.xml следующим образом:

<rule>
    <from>^/$</from>
    <to type="redirect">%{context-path}/myRoot</to>
</rule>

И теперь это работает,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...