0

我正在学习 Vaadin 和 Java Web 开发。Vaadin 建议com.vaadin.server.VaadinServlet通过使用<url-pattern>/*</url-pattern>web.xml 将所有 URL 重定向到。我还想用单独的 servlet 处理一些额外的 URL,例如:

<servlet-mapping>
    <servlet-name>JnlpGenerator</servlet-name>
    <url-pattern>*.jnlp</url-pattern>
</servlet-mapping>

有什么方法可以实现这一点,同时拥有如此广泛的模式/*?在我当前的配置中,任何对 eg 的调用都将http://localhost:8080/myapp/applet.jnlp被忽略,因为/*接管并启动 Vaadin 应用程序。

我会很感激一些帮助:-)

4

2 回答 2

0

如果您可以扩展com.vaadin.server.VaadinServlet,请这样做并使用request.getRequestDispatcher().forward()将您的 url 模式转发*.jnlpJnlpGenerator. 对于其他 URL 模式,通过调用super方法进行常规操作。

于 2012-10-15T15:28:57.360 回答
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 一起正常工作。

于 2013-11-26T10:18:07.390 回答