zoukankan      html  css  js  c++  java
  • InitComponent的使用

    网页中的数据,有些是不在网页上改变的,像一些个人信息,比如:头像,当前用户名,友情链接等等,每次请求该页面都要重新加载,这样很消耗服务器资源,会降低服务器的性能,这个时候我们可以把这些不变的信息,统一放到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

  • 相关阅读:
    JSP内置对象
    Angular $scope和$rootScope事件机制之$emit、$broadcast和$on
    Ionic开发实战
    Entity Framework 5.0 Code First全面学习
    6个强大的AngularJS扩展应用
    使用npm安装一些包失败了的看过来(npm国内镜像介绍)
    自己家里搭建NAS服务器有什么好方案?
    自己动手制作CSharp编译器
    使用Visual Studio Code搭建TypeScript开发环境
    Office web app server2013详细的安装和部署
  • 原文地址:https://www.cnblogs.com/duanwandao/p/9533246.html
Copyright © 2011-2022 走看看