除了我很好的Vaadin 7.1网络应用程序,我想添加一些普通的servlet。
这些其他超级简单的servlet为其客户提供简单的文本。想象一下 CurrentDateTime servlet返回" 2014-03-02T04:05:00Z"和 CurrentTemp servlet返回" 22C" servlet的。
为什么要将更多servlet与Vaadin应用捆绑在一起?
答案 0 :(得分:6)
要添加其他servlet,只需添加它们即可。每个servlet都扩展了Vaadin使用的URL。
首先使用适用于NetBeans 8的Vaadin插件1.1.1创建一个新的Vaadin 7.1应用程序。验证它是否正常运行。
更新:Vaadin 8完全由Maven驱动。不需要IDE插件。
例如,假设我们运行了这个Vaadin应用:
http://www.Example.com/MyVaadin/
请注意,Vaadin也以相同的方式响应这些网址:
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网络应用程序网址的网址"。在这种情况下" MyVaadin"是基本的URL,所以Vaadin回应过去的任何事情," cat"," dog",或" Now"。
在NetBeans 项目面板中,上下文+单击Source Packages
。选择New
> Servlet
。按照向导。命名新的servlet"现在"。
保持未选中状态Add information to deployment descriptor (web.xml)
。您可能可以启用它,但现在在现代Java中,我们可以在Java源代码而不是web.xml中将配置信息放在Annotations中。
在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>");
运行您的Vaadin应用。一旦开始,添加&#34;现在&#34;到浏览器地址栏中的URL,然后按Return键。您应该看到一个包含当前日期时间的新页面。
这样:
http://localhost:8080/MyVaadin/
成为:http://localhost:8080/MyVaadin/Now
如果您没有看到新页面,则需要刷新Tomcat部署。尝试以下任何一种行动:
Servers
&gt; Tomcat
(或其他)&gt; /MyVaadin
,上下文+单击以选择取消部署。新页面应如下所示:
现在:2014-03-17T13:58:19.916-07:00 [America / Los_Angeles]
检查放置在Now
servlet上的注释NetBeans:
@WebServlet( name = "Now", urlPatterns = { "/Now" } )
urlPatterns
定义了此servlet应响应的URL的扩展名。显然,Vaadin servlet的/*
模式遵循更具体的模式,在本例中为/Now
。所以/cat
和/dog
继续由Vaadin servlet处理(没有其他servlet映射到这些URL),而/Now
由&#34; Now&#34;处理。的servlet。
如果有人可以在Servlet spec的某个地方指出这种行为的文档,请发表评论。