前言

  在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等。对于这种要求,目前个人了解到的方式只要有三种。

  1. 通过新加一个Servlet。然后在web.xml注册该Servlet,通过该servlet的init()来实现处理逻辑。
    <servlet><servlet-name>servlet_test</servlet-name><servlet-class>com.guozg.test.service.ServletTest</servlet-class><load-on-startup>5</load-on-startup></servlet><servlet-mapping><servlet-name>servlet_test</servlet-name><url-pattern>/servletTest</url-pattern></servlet-mapping>

 

class ServletTest extends HttpServlet{@Overridepublic void init() throws ServletException {//do something;
    }
}

  2.  添加web服务器的监听ServletContextListener来实现,需要实现

class ServletListenerTest implements ServletContextListener{@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//do something when system start
    }@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {//do something while the system crash
    }
}

<listener><listener-class>com.guozg.test.service.ServletListenerTest</listener-class>
</listener>

  3.  通过Spring的监听事件,注册一个Spring初始化容器时的监听,实现ApplicationListener<ContextRefreshedEvent>接口,并实现onApplicationEvent()方法。

/*** @auther guozg*/
@Service
public class FolderUpdataLister implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {//do something}

  在spring的监听中,如果用到springmvc,由于父子容器的原因,会两次调用初始化容器事件,使用时要注意考虑。但是优点是此时可以使用spring的注入调用其他service。前面两种与web服务器有关的,在实际运用中可能会使用不成功,就是在web.xml中找不到目标类,也即是web.xml的包中没有引入目标类的包。当出现这种情况就可以选用第三种了。还有一种方式是在web服务器中再加一个Filter。好了,目前知道的就是这些,具体使用看情况而定。另外为了不占用web 服务器启动的资源和时间,可以考虑新起线程来做操作。

转载于:https://www.cnblogs.com/guozhigang/p/9855009.html

在java web项目中实现随项目启动的额外操作相关推荐

  1. java sessionstate_在Java Web开发中自定义Session

    Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...

  2. Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7646338,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  3. Java Web 后台中餐饮业报表系统开发实例

    本期葡萄城公开课,我们诚邀石家庄品智技术有限公司,高级软件工程师--刘永政先生,为大家在线分享餐饮业报表系统设计模式,以及在 HTML5 报表浏览器.Java 架构中跨平台使用ActiveReport ...

  4. java web开发中Filter使用Annotation配置 (转载)

    为什么80%的码农都做不了架构师?>>>    为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...

  5. Java Web开发中路径问题小结

    Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  6. Java web程序中备份oracle数据库

    Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...

  7. JAVA Web Servlet中的异步处理 (2) -- Servlet3.1中的Non-blocking IO支持

    JAVA Web Servlet中的异步处理 (2) – Servlet3.1中的Non-blocking IO支持 在servlet 3.1中,新增了non-blocking IO支持. 在serv ...

  8. JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持

    JAVA Web Servlet中的异步处理 (1) – Servlet3.0中的Async支持 每个请求来到Web容器,Web容器会为其分配一个线程来专门负责该请求,直到完成处理前,该执行线程都不会 ...

  9. 美国计算机授课型硕士,美国高校一年制硕士项目中,哪些项目最值得推荐?

    如果有人说:"我在美国读研",听众的反应大多会是:"真不错".如果有人说:"我在美国读研,一年",听众可能会质疑:"这么水,怕不是 ...

  10. doc自动生成html,java web应用中自动生成文章html页面的实现.doc

    java web应用中自动生成文章html页面的实现 java web应用中自动生成文章html页面的实现 2009-11-09 00:24:15 标签:web开发,页面转换 [推送到技术圈] 版权声 ...

最新文章

  1. python快速编程入门课后简答题答案-Python编程:从入门到实践(第2版)第1章习题答案...
  2. HDU-1978 How many ways 动态规划
  3. Matlab计算速度优化(矩阵,bsxfun,repmat)
  4. Linux下快速迁移海量文件的操作记录
  5. JavaScript学习总结(三)——逻辑And运算符详解
  6. 浪潮服务器u盘安装系统未找到任何驱动器,u盘重装win10时找不到任何驱动器
  7. Linux下Bash编程之算术运算符详解(三)
  8. restful架构风格设计准则(五)用户认证和session管理
  9. arm-none-linux-gnueabi-gcc:未找到命令,arm-none-linux-gnueabi-gcc编译标准库引用
  10. 打印机连接电脑,USB无法识别,怎么办?
  11. java日历数据_JAVA 常用数据类型 之日历类
  12. java判断 港(澳)台大陆身份证校验
  13. 修改layui绿色为蓝色
  14. Android 强制设置应用横屏或竖屏
  15. 找准山西智慧城市建设的着力点
  16. HBASE学习使用经验
  17. vmware不支持linux,vmware不支持opengl
  18. python opencv压缩图片_OpenCV Python 缩放图片
  19. Open Euler学习
  20. 一招教你如何搜索国内各大网盘资源

热门文章

  1. mysql9索引实战_mysql 索引实战 | 学步园
  2. linux time dev null,/dev/null丟失后
  3. latex textbf没有用_LaTeX排版软件札记 Win10 LyX+TeXLive
  4. Ubuntu连接WiFi
  5. awx文件解析_Android so(ELF)文件解析
  6. hive链接mysql的shell命令_Hive shell 基本命令
  7. 你有一笔新订单 语音_上市即成爆款 哪吒V首日订单突破1200辆_搜狐汽车
  8. 非线性常微分方程组 matlab,matlab常微分方程和常微分方程组求解.doc
  9. dateformat java_java常用API之DateFormat
  10. e影安全智能浏览器_【启耀玻璃】智能调光玻璃有什么特点? - 调光艺术玻璃|防火防弹玻璃|LOW-E节能玻璃|隔音隔热玻璃|特种安全玻璃|夹层中空玻璃-...