只需添加一个 Servlet
要添加其他 servlet,只需添加它们。每个 servlet 都扩展了 Vaadin 使用的 URL。
第 1 步 - 构建 Vaadin 应用程序
首先使用适用于 NetBeans 8 的 Vaadin 插件 1.1.1 创建一个新的 Vaadin 7.1 应用程序。验证它运行正常。
更新:Vaadin 8 可以完全由 Maven 驱动。无需 IDE 插件。
例如,假设我们正在运行这个 Vaadin 应用程序:
http://www.Example.com/MyVaadin/
请注意,Vaadin 也以相同的方式响应这些 URL:
http://www.Example.com/MyVaadin/cat
http://www.Example.com/MyVaadin/dog
http://www.Example.com/MyVaadin/Now
由于 Vaadin 主类中此注释中的通配符星号,Vaadin 应用程序会响应这些:
@WebServlet( value = "/*", asyncSupported = true )
斜线和星号的意思是“处理任何扩展我们 Vaadin Web 应用程序 URL 的 URL”。在这种情况下,“MyVaadin”是基本 URL,因此 Vaadin 会响应过去的任何内容,无论是“cat”、“dog”还是“Now”。
第 2 步 - 添加 Servlet
在 NetBeans Projects 面板中,上下文+单击Source Packages。选择New > Servlet。按照向导。将新的 servlet 命名为“Now”。
不要选中Add information to deployment descriptor (web.xml)。您可能可以打开它,但现在在现代 Java 中,我们可以将配置信息放在 Java 源代码的 Annotations 中,而不是 web.xml。
在out.println( "<h1>Servlet Now at "… 行之后,添加这一行:
out.println("<p>Now: " + java.time.ZonedDateTime.now() + "</p>");
这适用于Java 8 及更高版本。对于早期版本的 Java,请使用:
out.println("<p>Now: " + new java.util.Date() + "</p>");
第 3 步 - 运行新的 Servlet
运行您的 Vaadin 应用程序。启动后,将“Now”添加到浏览器地址栏中的 URL,然后按 Return。您应该会看到一个包含当前日期时间的新页面。
所以这个:
http://localhost:8080/MyVaadin/
变成:
http://localhost:8080/MyVaadin/Now
如果您没有看到新页面,则需要更新 Tomcat 部署。尝试以下任一操作:
- 单击 NetBeans 中的 Build Project 按钮(锤子图标)。 (为我工作)
- 单击 NetBeans 中的 Clean And Build Project 按钮(锤子和扫帚图标)。
- 在 NetBeans 的 Services 面板上,在
Servers > Tomcat(或其他)> /MyVaadin,上下文+单击以选择 Undeploy。
新页面应如下所示:
Servlet 现在位于 /MyVaadin
现在:2014-03-17T13:58:19.916-07:00[美国/洛杉矶]
说明
检查在您的Now servlet 上放置的注释 NetBeans:
@WebServlet( name = "Now", urlPatterns = { "/Now" } )
urlPatterns 定义了该 servlet 应响应的 URL 的扩展。显然,Vaadin servlet 的 /* 模式遵循更具体的模式,在本例中为 /Now。所以/cat 和/dog 继续由Vaadin servlet 处理(假设没有其他servlet 映射到这些URL),而/Now 由“Now” servlet 处理。
如果有人可以指出此行为的文档,我想在 Servlet spec 的某处,请发表评论。