网页中的数据,有些是不在网页上改变的,像一些个人信息,比如:头像,当前用户名,友情链接等等,每次请求该页面都要重新加载,这样很消耗服务器资源,会降低服务器的性能,这个时候我们可以把这些不变的信息,统一放到application中,当用户登录时候,就加载到application中,当重新加载使用该信息的页面时,只要在application中获取就可以。具体的做法如下:
新建一个 InitComponent实现类,实现ServletContextListener接口,也同时实现ApplicationContextAware这个接口(这个接口是spring提供的,可以获取applicationContext,)
实现ServletContextListener接口的两个方法:contextDestroyed:不需要操作。
contextInitialized:在初始化的动作:
通过它传进来的参数的getServletContext()方法获取到application
通过实现ApplicationContextAware接口的setApplicationContext方法获取到applicationContext,在通过applicationContext获取到指定的bean,就可以把指定的bean的值放到application中,前台只需从application中获取即可。
@Component public class InitComponent implements ServletContextListener,ApplicationContextAware{ private static ApplicationContext applicationContext; @Override public void contextInitialized(ServletContextEvent sce) { ServletContext application = sce.getServletContext(); applicationContext.getBean("指定的bean"); application.setAttribute(把从bean获取的数据放入application中) @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext=applicationContext; }
在web.xml中配置:监听器就行了。
<listener> <listener-class>InitComponent路径</listener-class> </listener>
注意:在你定义的InitComponent 类,加注解:@Component才可以,spring才会把他当作bean加载。
转载出处 https://blog.csdn.net/qq_27163329/article/details/81906020