3.5. Listener

简介:

3.5.1. web.xml

配置监听器

		
	<listener>
		<listener-class>cn.netkiller.listener.NewsListener</listener-class>
	</listener>
		
		

3.5.2. NewsListener 类

实现 ServletContextListener 接口

		
package cn.netkiller.listener;   
    
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.log4j.Logger;

public class NewsListener implements ServletContextListener {   
  
	private static final Logger log = Logger.getLogger(NewsListener.class);
	
	private Timer timer = null;
	
	@Override
	public void contextInitialized(ServletContextEvent event) {
		
		log.info("Listener start");
      
		timer = new Timer(true);		
		timer.schedule(new NewsTask(event.getServletContext()), 3*1000, 5*60*1000);
	}
	
	@Override
	public void contextDestroyed(ServletContextEvent event) {
		if (timer != null) {
			timer.cancel();
		}
		log.info("Listener end");
	}   
} 
		
		

3.5.3. NewsTask 类

继承 TimerTask

		
package cn.netkiller.listener;

import java.util.List;
import java.util.TimerTask;
import javax.servlet.ServletContext;

import org.apache.log4j.Logger;
import org.springframework.web.context.support.WebApplicationContextUtils;

import cn.netkiller.service.interface.NewsService;

public class NewsTask extends TimerTask{
	
	private ServletContext context;
	private static final Logger log = Logger.getLogger(NewsTask.class);
	
	public NewsTask(ServletContext context) {
		this.context = context;
	}
	
	@Override
	public void run() {
		NewsService newsService = (NewsService) WebApplicationContextUtils.getWebApplicationContext(context).getBean("newsService");
		
		try {
			List<cn.netkiller.listener.News> newsList = newsService.getNews();
			context.setAttribute("newsList", newsList);
			
			log.info("Getting News Finished");
		} catch (Exception e) { e.printStackTrace(); }
	}
}
		
		

3.5.4. JSP 中心显示

使用c:forEach显示列表

		
	<div class="news">
       	<c:forEach items="${newsList}" var="news" varStatus="index">
       		<a href="/news/${news.Id}">${news.title}</a>
       	</c:forEach>
	</div>
		




原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
6月前
|
XML Java 应用服务中间件
Listener(监听器)
Listener(监听器)
83 4
|
4月前
|
存储 程序员
JavaWeb之Listener监听器
JavaWeb之Listener监听器
78 0
Listener 监听器
监听器是专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。Servlet监听器:Servlet规范中定义的一种特殊类,它用于监听Web应用程序中的ServletContext,HttpSession和HttpServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
|
6月前
javaWeb监听器Listener(一)
javaWeb监听器Listener(一)
|
Oracle 关系型数据库 数据库
ORA-12541:TNS:no listener
PLSQL作为一个专门开发面向Oracle数据库的应用,那登录时肯定和Oracle息息相关了。那面对出现“ORA-12541:TNS:no listener”时应该怎么办呢?我分为了三个步骤:“确保Oracle连接成功”和“Oracle的Net Configuration Assistant的配置”和“重新启动Oracle服务”。
ORA-12541:TNS:no listener
|
Java 应用服务中间件 数据库连接
Filter&Listener
Filter&Listener
|
XML 数据库连接 数据格式
JavaWeb-监听器Listener
监听器Listener 1.功能 2.监听器分类 3.监听器的配置 4.ServletContext监听 5.HttpSession监听 6.ServletRequest监听
73 0
|
程序员
JavaWeb监听器Listener
JavaWeb监听器Listener
57 0
|
SQL Oracle 关系型数据库
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor案例2
今天使用SQL Developer连接一台测试服务器数据库(ORACLE 11g)时,遇到了“ORA-12514, TNS:listener does not currently know of service requested in connect descriptor”错误,具体提示如下所示:...
5397 0
|
Java 容器 负载均衡
5.监听器(Listener)
1.监听器简介:        监听器主要用来监听对象的创建,属性的变化,是一个实现特定接口的普通Java类。       Listener接口与事件对应表:      与 ServletContext 有关 ServletContextListener ServletCo...
1538 0