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 次 |
| 最近记录: |