如何在Jetty中的/ *上映射servletfilter?
我有一个servletfilter,我想在Jetty中映射到http://127.0.0.1:8888/ 。 我已经使用url pattern /*
设置了servletfilter映射。 但是,不会调用filter。 我也尝试过/
mapping。 它也不起作用。 这是怎么造成的,如何解决?
如果你将war root.war
,它将被部署到root / context。
您可以将请求从“/”重定向到“/ urlToRedirect”并通过特殊的servlet处理“/ 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(); }
Jetty网络应用程序部署文档提到wep-app可以打包为root.war
以具有根上下文/
jetty中的每个应用程序都部署到它的上下文中 – 这意味着它在斜杠之后有一些部分 – 即http://127.0.0.1:8888/context/ – 你的servlet映射实际上是最后一个斜杠 – 而不是上下文之前的斜杠
如其他答案中所述,您必须将应用程序部署为root.war以克服此问题。
(可选)您可以在$JETTY_HOME/webapps
下创建名为root
的目录,并将您的Web应用程序内容复制到$JETTY_HOME/webapps/root