jdc*_*589 4 java jsp tomcat servlets page-lifecycle
有没有办法在Java/Tomcat/JSP Web项目中附加到asp.net的"Application_Start"和"Begin_Request"等事件?我真的不想使用JSF或额外的框架(Spring,Struts).我不希望在每页的基础上使用"jspInit"这样的东西,全局事件处理程序是目标.
如果我陷入.net的做事方式,关键是要有一个初始化IoC容器(Application_Start)的中心位置,并实现'每个请求一个数据库事务'工作流程(Begin_Request).
谢谢.
在Java EE(Servlets + JSP)世界中,可以通过实现Java EE规范标准化的相关接口来获得等效功能.
应用程序概念的等价物是Web上下文或Servlet上下文.会话和请求在Java EE中与.Net相同.需要实现相关的侦听器类才能挂钩相关事件
有关这方面的更多信息,请参阅Servlet生命周期的Java EE 5教程.接口继续适用于Java EE 6.
如果你已经阅读了这些评论,你会注意到可以通过实现a ServletRequestListener或a来对请求进行预处理和后处理Filter.
我建议你使用Filters(和BalusC一样).这是因为Filter每次将请求发送到特定URL时都会调用它,并且通常是确保对URL的所有请求都接收相同"处理"的最有效方法.
其原因可在以下Java EE API文档中找到ServletRequestListener:
用于接收有关进入和超出Web应用程序范围的请求的通知事件的接口.
ServletRequest被定义为在Web应用程序即将进入Web应用程序的第一个servlet或过滤器时进入Web应用程序的范围,并且当它退出最后一个servlet或链中的第一个过滤器时超出范围.
使用a时ServletRequestListener,必须注意requestInitialized和requestDestroyed事件仅在每个请求中触发一次(与每次在处理管道中调用doFilter方法时调用的Filter位置不同).由于过滤器是在请求之前和之后执行操作的常用方法(我没有看到很多人使用ServletRequestListeners),我建议您在这样的上下文中使用过滤器.Filter