我正在学习Vaadin和Java Web开发。 Vaadin建议通过在web.xml中使用com.vaadin.server.VaadinServlet
将所有网址重定向到<url-pattern>/*</url-pattern>
。
我还想处理一些带有单独servlet的附加URL,例如:
<servlet-mapping>
<servlet-name>JnlpGenerator</servlet-name>
<url-pattern>*.jnlp</url-pattern>
</servlet-mapping>
有没有办法实现这一点,而/*
具有如此广泛的模式?在我目前的配置中,对例如http://localhost:8080/myapp/applet.jnlp
被忽略,因为/*
接管并启动Vaadin应用程序。
我会感激一些帮助: - )
答案 0 :(得分:0)
如果您可以延长com.vaadin.server.VaadinServlet
,请执行此操作并使用request.getRequestDispatcher().forward()
将您的网址格式*.jnlp
转发至JnlpGenerator
。对于其他网址格式,请通过调用super
方法执行常规业务。
答案 1 :(得分:0)
实际上,您只需绑定以下URI即可使vaading正常工作:/VAADIN/*, /root_URI_for_vaadin_app/*
我的一个项目示例:
@WebServlet(name = "vaadinServlet",
urlPatterns = {"/app/*", "/VAADIN/*"},
asyncSupported = false,
initParams = {@WebInitParam(
name = "widgetset",
value = "com.vaadin.DefaultWidgetSet"
)}
)
@VaadinServletConfiguration(productionMode = false, ui = MainUi.class)
public class AppServlet extends VaadinServlet {}
然后,您可以将任何servlet绑定到任何URI,它们应该与Vaadin一起正常工作。