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

InitComponent的使用的更多相关文章

  1. ExtJS4中initComponent和constructor的区别

    Ext的define方法参数类型define( String className, Object data, Function createdFn ) 创建自定义类时,先构造(constructor) ...

  2. [Ext JS 4] Extjs 它 initComponent 和 constructor差分

    initComponent 和 constructor是什么 Extjs 提供的组件还是挺丰富的, 可是有时候需求更丰富. 当Extjs 原生的组件无法实现我们的要求的时候, 就须要扩展Extjs 的 ...

  3. 【ExtJS】关于constructor、initComponent、beforeRender

    ExtJS提供的组件非常丰富,不过当原生的组件无法满足要求时,就需要扩展原生自定义组件了. initComponent 和 constructor 就是Extjs 提供用来实现继承和扩展的方式. 在E ...

  4. ExtJS 4.2 评分组件

    上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...

  5. ExtJS 4.2 业务开发(三)数据添加和修改

    接上面的船舶管理业务,这里介绍添加和修改操作. 目录 1. 添加操作 2. 修改操作 3. 在线演示 1. 添加操作 1.1 创建AddShipWindow.js 在业务中的view目录下创建一个Ad ...

  6. Js: Extensible Calendar Examples

    http://ext.ensible.comhttps://github.com/bmoeskau/Extensiblehttps://github.com/TeamupCom/extensibleh ...

  7. ExtJS扩展:扩展grid

    ExtJs的grid功能很强大,但是有时候觉得总是少那么一点点功能,我们就来扩展它,让它用起来更方便. 今天我们要扩展的是:根据记录的选择数量来禁用或启用grid toolbar上的某些按钮. 本文所 ...

  8. ExtJs4之TreePanel

    Tree介绍 树形结构,是程序开发,不可缺少的组件之一.ExtJs中的树,功能强大美观实用.功能齐全,拖拉,排序,异步加载等等. 在ExtJs4中Tree和Grid具有相同的父类,因此Grid具有的特 ...

  9. c#写windows服务

    序言 前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总 ...

随机推荐

  1. Jsp Session

    1. Session的定义 Session用于跟踪客户的状态. Session指的是在一段时间内,单个客户与Web服务器的一连串相关的交互过程.在一个Session中 ,客户可能多次请求访问同一个网页 ...

  2. iPhone激活策略说明

    本帖最后由 苏州汇东 于 2014-7-2 19:13 编辑 奉告各位封釉 千万不要泄露机器序列号IMEI号 远程ID真的可以上  只要机器上没有ID 就可以远程上任何ID 我这可以远程上ID 也帮忙 ...

  3. Mybatis常见面试题 二

    1.mybatis是什么?  (1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动.创建连接.创建state ...

  4. Jmeter 问题集

    1.配置分布式,调度机(master) 看不到 执行机(slave). 原因: slave是放在一个交换机下面,然后在这个交换机下面又接了个路由器,control连的这个路由器 解决: CONTROL ...

  5. 关于pandas里面的合并

    from pandas import * from numpy import * import json from pylab import * left = DataFrame({'key1':[' ...

  6. redis sentinel无法启动问题

    redis sentinel 正常启动 ./redis-sentinel sentinel.conf 就可以启动, 但是如果linux 操作系统(比如阿里云os)不支持ipv6,就会导致sentine ...

  7. jquery的相关应用

    1.jQuery获取鼠标事件源(万能) 1 //任意位置 2 3 $(document).ready(function(){ 4 5 $(document).click(function(){ 6 $ ...

  8. php实现AES/CBC/PKCS5Padding加密解密(又叫:对称加密)

    今天在做一个和java程序接口的架接,java那边需要我这边(PHP)对传过去的值进行AES对称加密,接口返回的结果也是加密过的(就要用到解密),然后试了很多办法,也一一对应了AES的key密钥值,偏 ...

  9. Spring MVC 底层原理

    参考博客:http://www.cnblogs.com/xiaoxi/p/6164383.html Spring MVC处理的流程: 具体执行步骤如下: 1 首先用户发送请求给前端控制器,前端控制器根 ...

  10. HTC Vive开之unity3d开发

    常用的几款插件 Steam VR,  SteamVR Unity Toolkit 配置要求:显卡不低于GTX960性能的主机 一.引入手柄交互 1.通过Asset Store导入SteamVR Plu ...