Как отобразить фильтр сервлета на / * в Jetty? - PullRequest
1 голос
/ 22 ноября 2011

У меня есть фильтр сервлета, который я хочу сопоставить с http://127.0.0.1:8888/ в Причале.Я поставил отображение фильтра сервлета с шаблоном URL /*.Однако фильтр не называется.Я также попробовал с / картированием.Это тоже не работает.Как это вызвано и как я могу решить это?

Ответы [ 5 ]

3 голосов
/ 22 ноября 2011

Если вы назовете свою войну root.war, она будет развернута в корне / контексте.

http://wiki.eclipse.org/Jetty/Howto/Deploy_Web_Applications

2 голосов
/ 02 октября 2013

Вы можете перенаправлять запросы из "/" в "/ urlToRedirect" и обрабатывать "/ urlToRedirect" с помощью специального сервлета.Как в примере:

public static void main(String[] args) throws Exception {
    Servlet frontend = new Frontend();

    Server server = new Server(8080);
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.addServlet(new ServletHolder(frontend), "/index");
    context.addServlet(new ServletHolder(frontend), "/auth");

    ResourceHandler resource_handler = new ResourceHandler();
    resource_handler.setDirectoriesListed(false);
    resource_handler.setResourceBase("static");

    RewriteHandler rewriteHandler = new RewriteHandler();
    rewriteHandler.setRewriteRequestURI(true);
    rewriteHandler.setRewritePathInfo(true);
    rewriteHandler.setOriginalPathAttribute("requestedPath");
    RedirectRegexRule rule = new RedirectRegexRule();
    rule.setRegex("/");
    rule.setReplacement("/index");
    rewriteHandler.addRule(rule);

    HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[]{rewriteHandler, resource_handler, context});
    server.setHandler(handlers);

    server.start();
    server.join();
}
0 голосов
/ 22 ноября 2011

При желании вы можете создать каталог с именем root в $JETTY_HOME/webapps и скопировать содержимое веб-приложения в $JETTY_HOME/webapps/root

0 голосов
/ 22 ноября 2011

Каждое приложение в Jetty развертывается в своем контексте - это означает, что оно имеет какую-то часть после косой черты - т.е. http://127.0.0.1:8888/context/ - ваше отображение сервлета является реальным до последней косой черты, а не перед контекстным

Как уже упоминалось в других ответах, вы должны развернуть приложение как root.war, чтобы преодолеть это.

0 голосов
/ 22 ноября 2011

В документе по развертыванию веб-приложения Jetty упоминается, что wep-приложение может быть упаковано как root.war, чтобы иметь корневой контекст /

...