Bas*_*que 9 servlets vaadin vaadin7
如何ServletContext
从我的Vaadin 7应用程序中访问当前的数据?
我想使用ServletContext
对象的setAttribute
,getAttribute
,removeAttribute
,和getAttributeNames
方法来管理全球一些国家对我的Vaadin应用程序.
此外,如果为此目的使用这些方法不适合Vaadin应用程序,请解释.
Bas*_*que 23
对于Vaadin 7,8和10:
VaadinServlet.getCurrent().getServletContext()
Run Code Online (Sandbox Code Playgroud)
VaadinServlet
的VaadinServlet
类继承的getServletContext
方法.
要获取该VaadinServlet
对象,请调用静态类方法getCurrent
.
从您的Vaadin应用程序中的大多数任何位置,执行以下操作:
ServletContext servletContext = VaadinServlet.getCurrent().getServletContext();
Run Code Online (Sandbox Code Playgroud)
CAVEAT
在后台线程中不起作用.在您启动的线程中,此命令返回NULL
.记录如下:
在其他情况下(例如,从后台线程以其他方式启动),不会自动定义当前的servlet.
@WebListener
(ServletContextListener
)顺便说一句,当Web应用程序在容器中部署(启动)时,您可能希望处理此类全局状态.
您可以使用@WebListener
实现ServletContextListener
界面的类上的注释挂钩您的Vaadin Web应用程序部署.该接口的两种方法,contextInitialized
并且contextDestroyed
,传递一个ServletContextEvent
从中可以访问ServletContext
通过调用对象getServletContext
.
@WebListener ( "Context listener for doing something or other." )
public class MyContextListener implements ServletContextListener
{
// Vaadin app deploying/launching.
@Override
public void contextInitialized ( ServletContextEvent contextEvent )
{
ServletContext context = contextEvent.getServletContext();
context.setAttribute( … ) ;
// …
}
// Vaadin app un-deploying/shutting down.
@Override
public void contextDestroyed ( ServletContextEvent contextEvent )
{
ServletContext context = contextEvent.getServletContext();
// …
}
}
Run Code Online (Sandbox Code Playgroud)
在执行Vaadin servlet(或Web应用程序中的任何其他servlet /过滤器)之前,此挂钩被称为Vaadin应用程序的一部分,正在初始化.引用该contextInitialized
方法的文档:
接收Web应用程序初始化过程正在启动的通知.在初始化Web应用程序中的任何过滤器或servlet之前,将通知所有ServletContextListener上下文初始化.
归档时间: |
|
查看次数: |
5834 次 |
最近记录: |