`
bj_liuhuibin
  • 浏览: 21378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

定时刷新页面功能

 
阅读更多
1.Web.xml中定时服务的配置
<listener>
<description>ServletContextListener, ServletContextAttributeListener, HttpSessionListener, HttpSessionAttributeListener</description>
<listener-class>com.bopomofo.common.ServletListener</listener-class>
</listener>

2.language-config.xml 对语言的配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- 选择语言版本时下拉框内容,比如:网站首页中选择语言版本的下拉框。-->
<languages>
<language>
<lang>zh</lang><!--中文语言-->
<display>Chinese</display><!--中文显示名称 -->
</language>
<language>
<lang>en</lang>
<display>English</display>
</language>
</languages>

3.proxool.xml连接池的配置(使用的是proxool-0.9.ORC2.jar)
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
    <proxool>
        <alias>bopomofo</alias>
        <driver-url>jdbc:jtds:sqlserver://192.168.1.110:1433/bopomofo</driver-url>
        <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
        <driver-properties>
            <property name="user" value="bopomofo"/>
            <property name="password" value="bopomofo"/>
        </driver-properties>
        <minimum-connection-count>2</minimum-connection-count>
        <maximum-connection-count>10</maximum-connection-count>
        <house-keeping-test-sql>
SELECT { fn NOW() }
</house-keeping-test-sql>
        <trace>false</trace>
        <verbose>false</verbose>
    </proxool>
</something-else-entirely>
4.日志在web.xml中的配置
<context-param>
<param-name>log4j-init-file</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

5.log4j.properties

6.ServletListener.java
package com.bopomofo.common;

import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.logicalcobwebs.proxool.ProxoolException;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;
import org.xml.sax.InputSource;

public class ServletListener implements ServletContextListener,
        ServletContextAttributeListener, HttpSessionListener,
        HttpSessionAttributeListener {
    private static final Logger logger = Logger.getRootLogger();

    public void contextInitialized(ServletContextEvent evt) {
        ServletContext sc = evt.getServletContext();
        // log4j加载
        String prefix = sc.getRealPath("/");
        String file = sc.getInitParameter("log4j-init-file");
       
        if (file != null)
        {
            PropertyConfigurator.configure(prefix + file);
            logger.info("Log4j init successful!");
        }

        try
        {
            JAXPConfigurator.configure(new InputSource(sc.getResourceAsStream("/WEB-INF/proxool.xml")), false);
            logger.info("Proxool init Successful !");
        } catch (ProxoolException ex)
        {
            ex.printStackTrace();
        }
        String baseFilePath = sc.getRealPath("/WEB-INF/");
        ApplicationBean ab = new ApplicationBean(baseFilePath);
        sc.setAttribute("ApplicationBean", ab);
        List langList = ab.getLanguageList();//语言列表
        Iterator it = langList.iterator();
        while (it.hasNext())
        {
            Language lg = (Language) it.next();
//从IndexBean中加载同语言的数据到sc的属性中去。
            sc.setAttribute("Index_" + lg.getLang(), new IndexBean(lg.getLang()));
        }
        //开始执行定时任务
        Task.run(sc,langList);
    }

    public void contextDestroyed(ServletContextEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeAdded(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeRemoved(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeReplaced(ServletContextAttributeEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void sessionCreated(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void sessionDestroyed(HttpSessionEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeAdded(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeRemoved(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void attributeReplaced(HttpSessionBindingEvent arg0) {
    // TODO Auto-generated method stub

    }

}

7定制定时器
package com.bopomofo.common;

import java.util.List;
import java.util.Timer;

import javax.servlet.ServletContext;
/**
* 定时器,定时更新Application缓存的课程信息与新闻信息
* @author Administrator
*
*/
public class Task {
   
    public static void run(ServletContext sc, List langList){
        Timer timer = new Timer();
//每一小时定时执行任务UpdateIndex类
        timer.schedule(new UpdateIndex(sc,langList),0,3600*1000);
    }

}

8.定时更新类
package com.bopomofo.common;

import java.util.Calendar;
import java.util.List;
import java.util.TimerTask;

import javax.servlet.ServletContext;

public class UpdateIndex extends TimerTask {
    // 零点
    private static final int C_SCHEDULE_HOUR = 0;

    ServletContext           sc              = null;

    List                     langList        = null;

    public UpdateIndex(ServletContext sc, List langList) {
        this.sc = sc;
        this.langList = langList;
    }

    public void run() {
        Calendar cal = Calendar.getInstance();
//每天零点执行更新
        if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY))
        {
            try
            {
                Index.reload(sc, langList);
                System.out.println("服务器缓存更新主页面显示内容.........");

            } catch (Exception e)
            {//
                e.printStackTrace();
            }
        }
    }

}

9执行加载中间程序Index.java
package com.bopomofo.common;

import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;

public class Index {

    public static void reload(ServletContext sc, List langList) {
        Iterator it = langList.iterator();
        while (it.hasNext())
        {
            Language lg = (Language) it.next();
            sc.setAttribute("Index_" + lg.getLang(), new IndexBean(lg.getLang()));
        }
    }

}

10.加载数据信息IndexBean.java类 (该加载的数据用于初始化客户端首页面)
package com.bopomofo.common;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class IndexBean {
 

    private List   latest_course  = null;

    private List   popular_course = null;

    private List   news           = null;

    private String lang           = "";
   
    private List flashPic         =null;

    public IndexBean(String lang) {
        this.lang = lang;
        this.loadLatest();
        this.loadPopular();
        this.loadNews();
        this.loadFlashPic();
    }

    public List getLatest_course() {
        return latest_course;
    }

    public void setLatest_course(List latest_course) {
        this.latest_course = latest_course;
    }

    public List getPopular_course() {
        return popular_course;
    }

    public void setPopular_course(List popular_course) {
        this.popular_course = popular_course;
    }

    public List getNews() {
        return news;
    }

    public void setNews(List news) {
        this.news = news;
    }

    /**
     * 加载最近更新课程
     */
    public void loadLatest() {
        this.latest_course = new ArrayList();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try
        {
            conn = DBUtil.getConnection();
            pstmt = conn.prepareStatement("SELECT TOP 10 ID,Name,Cover FROM vi_Course_" + lang+" WHERE State=0");
            rs = pstmt.executeQuery();
            while (rs.next())
            {
                IndexDisplayBean idb = new IndexDisplayBean();
                idb.setId(rs.getLong(1));
                idb.setName(rs.getString(2));
                idb.setCovdate(rs.getString(3));
                latest_course.add(idb);
            }

        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            try
            {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 加载最受欢迎课程
     */
    public void loadPopular() {
        this.popular_course = new ArrayList();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try
        {
            conn = DBUtil.getConnection();
            pstmt = conn.prepareStatement("SELECT TOP 10 ID,Name,Cover FROM vi_Course_" + lang + " WHERE State=0 ORDER BY Purchase DESC ");
            rs = pstmt.executeQuery();
            while (rs.next())
            {
                IndexDisplayBean idb = new IndexDisplayBean();
                idb.setId(rs.getLong(1));
                idb.setName(rs.getString(2));
                idb.setCovdate(rs.getString(3));
                popular_course.add(idb);
            }

        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            try
            {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    /**
     * 加载新闻
     */
    public void loadNews() {
        this.news = new ArrayList();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try
        {
            conn = DBUtil.getConnection();
            pstmt = conn.prepareStatement("SELECT TOP 6 ID,Title,convert(nvarchar(10),I_Time,23),HtmlFile FROM vi_InfoIssue_" + lang + " WHERE Code='news' and FaceObj=1");
            rs = pstmt.executeQuery();
            while (rs.next())
            {
                IndexDisplayBean idb = new IndexDisplayBean();
                idb.setId(rs.getLong(1));
                idb.setName(rs.getString(2));
                idb.setCovdate(rs.getString(3));
                idb.setHtmlFile(rs.getString(4));
                news.add(idb);
            }

        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            try
            {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public List getFlashPic() {
        return flashPic;
    }

    public void setFlashPic(List flashPic) {
        this.flashPic = flashPic;
    }
    /*加载Flash图片  lhb 添加加载Flash图片功能 2009-02-13*/

    public void loadFlashPic() {
        this.flashPic = new ArrayList();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try
        {
            conn = DBUtil.getConnection();
            pstmt = conn.prepareStatement("SELECT TOP 5 ID,PicName,Url FROM tb_IndexFlash order by ID DESC");
            rs = pstmt.executeQuery();
            while (rs.next())
            {
                IndexDisplayBean idb = new IndexDisplayBean();
                idb.setId(rs.getLong(1));
                idb.setName(rs.getString(2));
                idb.setUrl(rs.getString(3));
                flashPic.add(idb);
            }

        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally
        {
            try
            {
                if (rs != null)
                    rs.close();
                if (pstmt != null)
                    pstmt.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
   
   
}



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    定时刷新网页软件

    【定时刷新网页软件】是一种非常实用的工具,主要用于自动化网页刷新任务。在许多情况下,我们需要持续关注某个网页的实时更新,比如监控股票行情、在线课程、新闻动态等。手动刷新虽然简单,但在长时间操作下非常...

    C#定时刷新访问网页工具源码

    【C#定时刷新访问网页工具源码】是一个基于C#编程语言和WPF(Windows Presentation Foundation)框架开发的应用程序,其主要功能是周期性地自动访问用户设定的网页URL,以便进行实时数据监控或者自动化信息获取。...

    页面刷新 定时刷新 设置刷新

    本篇文章将深入探讨“页面刷新”、“定时刷新”以及如何在网页上设置这些功能。 首先,页面刷新是指重新加载当前网页,这可以是用户手动操作(通过点击浏览器上的刷新按钮或使用键盘快捷键F5),也可以是通过编程...

    定时刷新网页的小工具

    标题中的“定时刷新网页的小工具”指的是一个软件应用或浏览器扩展,它的主要功能是自动周期性地刷新网页内容。在互联网使用中,有些网页可能需要实时监控更新,比如股票行情、新闻动态或者在线课程等。这种小工具...

    实现网页定时刷新并跳转功能

    使用response对象实现网页的定时刷新并跳转功能 2、 实验环境 Eclipse 3、 实验内容 (1)在chapter项目的cn.itcast.chapter.response包中编写一个名为RefreshServlet的类,实现网页的定时刷新功能。 (2)实现...

    Ajax定时刷新局部页面

    ### Ajax定时刷新局部页面知识点详解 #### 一、Ajax简介 Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味...

    网页定时刷新和浏览

    它具有独特的功能就是:网页定时刷新(相信有很多人多做出来但与浏览器合为一体的人却是少有的 至少我没见过 )"&gt;这款软件具有常用的软件的基本功能 但一些比较复杂的功能鄙人暂时无法做 只能留到以后用能力在做 ...

    定时刷新页面小程序

    【定时刷新页面小程序】是一种网页应用,主要用于实时同步页面中的数据,提高用户体验。在Web开发中,有时我们需要确保用户看到的信息是最新的,特别是在处理实时数据如股票行情、天气预报或者在线聊天室等场景。该...

    实现网页自动定时刷新到某个页面

    ### 实现网页自动定时刷新到某个页面 在现代网页开发中,有时为了保持信息的实时性和准确性,开发者可能会采用自动定时刷新技术来确保用户能够获取最新的数据或状态。本篇文章将详细探讨如何通过HTML元信息标签`...

    防止页面刷新、定时刷新间隔刷新

    而在需要保持页面数据最新性的场景下,则可以选择定时刷新页面。合理地结合这些方法,可以有效提升Web应用的质量和用户体验。 总之,无论是防止页面刷新还是定时刷新,都是Web开发中不可或缺的技术手段。开发者需要...

    定时刷新页面

    ### 定时刷新页面:利用JavaScript实现网页自动更新 在现代Web开发中,网页的实时性和动态性至关重要,其中一种常见的需求就是定时刷新页面,确保用户接收到的信息是最新的。本文将深入探讨如何使用JavaScript来...

    自动定时网页刷新程序

    网页自动定时刷新程序是一种实用工具,它允许用户设定特定的时间间隔和特定的时间段,以便在无需人工干预的情况下自动刷新网页。这种程序对于那些需要实时监控网页更新或数据变化的用户非常有用,例如股票投资者、...

    多任务网页定时刷新器

    "多任务网页定时刷新器"是一种实用工具,主要用于自动化网页刷新任务,特别是在需要定期检查页面更新或执行某些在线操作的场景下。这个软件允许用户设置多个任务,每个任务可以独立配置为在特定时间间隔内自动刷新...

    EXTJS定时刷新功能代码

    2. **定时刷新**:指每隔一定时间自动重新加载数据或页面,以保持数据的实时性。 3. **Store**:EXTJS中用于存储和管理数据的对象,它可以与服务器进行通信以获取最新的数据。 #### 三、代码解析 ```javascript //...

    定时代理刷新网页工具

    功能: 代理IP ...不可暂定,要关闭方法就是关闭程序...2、定时刷新网页(可代理IP定时效果一样) 注: 1、定时换代理IP,把质量好的代理IP放置IP.TXT文件里; 2、定时随机刷新网页,把想刷新的网页地址放置在URL.TXT文件里;

    asp_net中如何定时刷新数据

    另一种实现方式是利用客户端脚本来定时刷新页面的某一部分。这种方法不需要额外的库支持,但可能不如使用AJAX控件那样简洁和高效。 ##### 示例代码: ```html function refreshData() { $.ajax({ url: "your-...

    自动刷新网页专用工具软件

    综上所述,这个自动刷新网页专用工具软件提供了一套全面的功能,包括定时刷新、条件刷新、订单提醒、IP管理、关键词优化以及服务器负载测试等,适用于多种场景,从个人用户监控信息到企业级的网站管理和SEO优化。...

    谷歌浏览器chrome插件 定时刷新

    开发者通过编写这些代码,利用Chrome提供的API接口,如chrome.tabs或chrome.webNavigation,来实现对浏览器行为的控制,包括定时刷新页面。此外,Chrome的沙盒环境和内容安全策略(CSP)确保了插件的安全性和与其他...

    ajax实现定时刷新

    总结来说,通过结合AJAX和JSP,我们可以实现一个定时刷新的功能,使得用户无需手动刷新页面就能获取实时更新的信息。而Struts2框架则为我们的应用程序提供了强大的结构和功能支持,使得后端处理更加灵活和高效。

Global site tag (gtag.js) - Google Analytics