java后台系统实现动态新闻列表实时更新

更新时间:2023-07-15 09:08:55 阅读: 评论:0

java 后台系统实现动态新闻列表实时更新
1.⾸先我们有了这样⼀个需求:实现⽹站的动态数据更新,前台滚动刷新.
em用法⼀个⼈说:我们可以再前台设置ajax定时发起请求,动态请求数据,并刷新页⾯.
分析:功能实现,技术简单
缺点:倘若系统的使⽤量较⼤,每个⽤户长时间驻留页⾯都会发起⼤量的后台请求,并查询数据库,数据库压⼒增⼤
这也是⼀种实现⽅法,虽然实现了功能但是并不适合⼤数据量的⽹站.
巴西世界杯赛程
其实我们仔细分析⼀下,我们只是需要所有⽤户展⽰动态数据,那么有什么是所有⽤户都可以共享的尼?对,恭喜你想到了,application域.我们只要每个⼀定的时间就将最新的数据取出,⽐如10条数据取出,放到application域中,然后后台每次请求application 域中的数据即可.这样每个⽤户请求都不会穿透数据库.
说⼲就⼲
假设系统是spring系统,那么我们如何执⾏定时任务尼
三种⽅案:
jdk的timertask,
spring的定时任务,
quartz的定时任务调度
这⾥采⽤第⼆种:实现简单,定时实现:
开启定时注解:
定时⽅法实现简单,但是难点我们如何定时对象中获取spring容器对象和web的application域对象
好了不卖关⼦了,
spring容器对象获取可以继承ApplicationObjectSupport对象,并将该类交给spring管理⾃然可以获取spring对象
⽽获取application对象可以继承WebApplicationObjectSupport,获取
具体代码: <task :annotation-driven  /> 或者设定线程池⼤⼩ <task :scheduler id="excutor" pool-size="3"/>
1
2
3
定时任务实现:/** * @author  ll  *该类⽤于保存WebApplicationContext  */@Component public  class  WebContext extends  WebApplicationObjectSupport {    public  WebApplicationContext getWebApp (){        return  this .getWebApplicationContext();    }}
2tourism in china
3
4
5
6
7
8
9
10
11
12
注意:定时任务不要简单的使⽤注解实现,我们⼤部分的需求实现是将定时执⾏频率写在配置⽂件中,然后动态配置
cron表达式可以⾃⾏百度/** * @author  ll  *定时操作类 */@Lazy (fal )@Component @EnableScheduling public  class  EcrTimerTask extends  ApplicationObjectSupport implements  SchedulingConfigurer{    private  static  String refrsh_cron;    static {        PropertiesUtils.init("config/d
eploy.properties");        refrsh_Value(Constants.TIMER_REFRESH__CONTRACT).toString();    }    public  void  refreshListCon (){        ApplicationContext springApp = this .getApplicationContext();        WebApplicationContext webApp = Bean(WebContext.class).getWebApp();        SingedLogic singedLogic= Bean(SingedLogic.class);        List<ConstractListVo> vos = singedLogic.queryActualContract();        //放置到application 域⾥        ServletContext().tAttribute(Constants.CONTRACT_LIST_KEY,vos);    }    @Override    public  void  configureTasks (ScheduledTaskRegistrar register) {        /**        * 定时刷新实时动态数据        */    register.addTriggerTask(new  Runnable() {            @Override            public  void  run () {                refreshListCon();            }        }, new  Trigger() {            @Override            public  Date nextExecutionTime (TriggerContext triggerContext) {                CronTrigger trigger=new  CronTrigger(refrsh_cron);                Date ExecutionTime(triggerContext);                System.out.println("执⾏了刷新缓存");                return  nextExec;            }        });    }}
alpha是什么2
3
4
5
6
7
8
9
10
11
12
13
14
15
中考自主招生
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
友谊地久天长英文版33
34
35
36
37frenemies
38
39
40
nake是什么意思41
42
43
44
45
46
47
48
49
50
fsl
51
52
53TIMER_REFRESH=0/5 * * * * ?
strawberry什么意思
1

本文发布于:2023-07-15 09:08:55,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/178051.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:实现   请求   系统   动态   获取   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图