Bas*_*que 2 java servlets vaadin vaadin7
除了我很好的Vaadin 7.1网络应用程序,我想添加一些普通的servlet.
这些其他超级简单的servlet为其客户提供简单的文本.想象一下,返回"2014-03-02T04:05:00Z" 的CurrentDateTime servlet和返回"22C"servlet 的CurrentTemp servlet.
为什么要将更多servlet与Vaadin应用程序捆绑在一起?
要添加其他servlet,只需添加它们即可.每个servlet都扩展了Vaadin使用的URL.
首先使用适用于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/cathttp://www.Example.com/MyVaadin/doghttp://www.Example.com/MyVaadin/NowVaadin应用程序响应那些因为主要Vaadin类中此注释中的通配符星号:
@WebServlet( value = "/*", asyncSupported = true )
斜杠和星号表示"处理扩展我们的Vaadin Web应用程序的URL的任何URL".在这种情况下,"MyVaadin"是基本URL,因此Vaadin会响应过去的任何内容,"cat","dog"或"Now".
在"NetBeans 项目"面板中,单击上下文+ Source Packages.选择New> Servlet.按照向导.将新servlet命名为"Now".
不加控制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>");
Run Code Online (Sandbox Code Playgroud)
这适用于Java 8及更高版本.对于早期版本的Java,请使用:
out.println("<p>Now: " + new java.util.Date() + "</p>");
Run Code Online (Sandbox Code Playgroud)
运行你的Vaadin应用程序.启动后,将"Now"添加到浏览器地址栏中的URL,然后按Return键.您应该看到一个包含当前日期时间的新页面.
所以这个:http://localhost:8080/MyVaadin/
成为:http://localhost:8080/MyVaadin/Now
如果您没有看到新页面,则需要刷新Tomcat部署.尝试以下任何操作:
Servers> Tomcat(或其他)> /MyVaadin上下文中单击以选择" 取消部署".新页面应如下所示:
现在:2014-03-17T13:58:19.916-07:00 [America/Los_Angeles]
检查Nowservlet 上放置的注释NetBeans :@WebServlet( name = "Now", urlPatterns = { "/Now" } )
它urlPatterns定义了此servlet应响应的URL的扩展.显然,Vaadin servlet的模式/*遵循更具体的模式,在这种情况下/Now.因此/cat,/dog继续由Vaadin servlet处理(没有其他servlet映射到这些URL),同时/Now由"Now"servlet处理.
如果有人可以指出这种行为的文档,我想在Servlet规范的某个地方,请发表评论.