java实现后台自动打开网页并触发事件

Web应用启动时,后台自动启动一个线程
前几天,manager问道一个问题:能不能实现类似于cron的后台管理方式。问题解决后,想对这几个问题进行一下简单的总结。以便抛砖引玉!首先简单的提及一下cron。
Cron,计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 cron
服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对http服务器重新启动,这就是一个计划任务。
在java应用中一种类似的模式就是应用启动时后台线程的运行,定时的触发某些任务的运行。目前,这种自启动的后台线程,有两种常见的模式:一种是listener,一种是servlet
(2)listener
listener方式是比较常用的。实际上,servelet API
提供了大量监听器来监听web应用的内部事件,从而允许当web应用内部事件发生时而回调监听器的方法,常见的事件有:web应用被启动、web应用被停止、用session开始、用户session结束、用户请求到达等。
其中ServletContextListener用于web应用的启动和关闭。对于我们刚刚提及的需求,我们需要在web应用启动的时候就开始启动后台的服务线程。
ServletContextListener有两个常用的方法:
void contextInitialized(ServletContextEvent
这个方法在Container初始化整个Web应用时调用,运行在该Web应用中servlet和filter初始化之前
contextDestroyed(ServletContextEvent
这个方法在Container卸载整个Web应用时调用,运行在该Web应用中servlet和filter的destroy()方法之后
首先定义一个后台的服务线程
public class run implements
&@Override
&public void run() {
&&while(true){
Thread.sleep(5000);
&&&} catch
(InterruptedException e) {
&&&&e.printStackTrace();
&&&&System.out.println("you
mother call you to go home to eat......")
定义一个listener类
package com.&
import javax.servlet.ServletContextE&
javax.servlet.ServletContextL&
public class MyListener implements ServletContextListener
&&& public void
contextDestroyed(ServletContextEvent e)
&&& public void
contextInitialized(ServletContextEvent e)
&&&&&&&&&&&&System.out.println("------------web
start-------");
&&&&&&&&&&&
new Thread(new run()).start();
最后需要在web.xml进行一下配置:
启动项目,你就会发现你妈妈喊你回家吃饭。。。。
(3)servlet
无意中,尽然惊讶地发现servlet也有这样的功能,这得益于load-on-startup
属性,后面将对该属性进行一些简单解析。
服务线程仍然保持不变,写一个servlet(集成HttpServlet)
import java.io.IOE&
import javax.servlet.*;&
javax.servlet.http.*;&&
public class MyServlet extends HttpServlet{&
&&& private
static final long serialVersionUID =
&&& public
MyServlet(){&
&&& public void
new Thread(new run()).start();
&&& public void
doGet(HttpServletRequest httpservletrequest, HttpServletResponse
httpservletresponse)&
throws ServletException, IOException{&
&&& public void
destory(){&&
最后需要在web.xml进行一下配置:
启动项目,你同样会发现你妈妈喊你回家吃饭。。。。
1.load-on-startup解析
&&&&1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
3)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
4)当值小于0或者没有指定时,可以由server容器自行决定何时load该servlet。
5)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
6)当值相同时,容器就会自己选择顺序来加载。&&&
2.两种回家吃饭方式不同
web应用的启动好比你正在start的一个游戏,listener好比在你start之前你妈妈就喊你回家吃饭了;servlet方式好比你已经start了,准备打boss时,你妈妈喊你回家吃饭。原因在于ServletContextListener的contextInitialized方法运行在servlet之前。
&& 下面来看一后台启动的打印截图,你就会发现!
第一种方式:
也就是说listener在web应用起来之前已经开始start了
第二种方式:
servlet必须在web应用完全启动完毕之后才开始运行了!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。JavaWeb项目,实时将数据显示到网页上当数据库插入前台网页 马上就要的数据时 - ITeye问答
&&&& 现在后台用的springmvc+mybatis,前台要实现前台要查一个数据(比
如北京的温度,),就更新数据测试北京温度的字段为true,(其他的程序【非本
JavaWeb程序】就读取数据库去查这个地方的数据(传感器测的),然后将温度写
入数据库,但是不知道什么时候能写入数据库(网络等多种因素影响),一旦写入
就实时发送到前台(北京的温度这条记录)。不知道各位大侠一般用的什么解决方
案,谢谢指点!
采纳的答案
有一下几种方案:
1.在数据库里面写个触发器,当数据被修改时,使用这个触发器在另外一张表里面写一条记录,然后前台定时(比如5s)向java端发送ajax发送请求查询数据有无变化,有变化就更新
2.在java端插入记录时,同时插入一张通知表,前台定时请求通知表,有数据变化就更新web端的展现数据
3.建立websocket,在java端插入记录时,同时主动向web前端推送消息
有数据插入时触发ajax,局部刷新页面
首先肯定要对插入数据库的方法进行监听,也就是在这个方法加一个判断
if(插入了北京温度){
&&& 发送到前台(这里面要用到websocket)
}
方案就这样 剩下的就是实现了 如果没用过websocket就要学习一下了 不过也不难的 祝你好运
已解决问题
未解决问题Java调用浏览器打开网页完整实例
作者:wo_soul
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Java调用浏览器打开网页的方法,以完整实例形式分析了java打开网页的相关技巧,需要的朋友可以参考下
本文实例讲述了Java调用浏览器打开网页的方法。分享给大家供大家参考。具体实现方法如下:
package com.yifang.
import java.io.F
public class OpenPageDemo {
public static void main(String[] args) {
//String url = "";
String url = "http://www.jb51.net/";
java.net.URI uri = java.net.URI.create(url);
// 获取当前系统桌面扩展
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
// 判断系统桌面是否支持要执行的功能
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
//File file = new File("D:\\aa.txt");
//dp.edit(file);//  编辑文件
dp.browse(uri);// 获取系统默认浏览器打开链接
// dp.open(file);// 用默认方式打开文件
// dp.print(file);// 用打印机打印文件
} catch (java.lang.NullPointerException e) {
// 此为uri为空时抛出异常
e.printStackTrace();
} catch (java.io.IOException e) {
// 此为无法获取系统默认浏览器
e.printStackTrace();
希望本文所述对大家的java程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
从app里面打开网站的一个链接实现自动登录。APP是IOS端的,网站是java web 的。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
自动登录不涉及后台是怎么实现的,只要你的请求满足登录的条件,都是可以登录的。请求有请求地址、请求方法、请求参数、请求头、请求体等等要素。不过一般登录的话,只要请求头的里面的一个头:Cookie头能满足,就能登录。。这个Cookie可以从某一次登录成功的Cookie里获取。当然后台获取登录权限,并不一定是靠的Cookie,可能还会有其他机制。这个机制是可以前端(app)和后台商定的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先需要确定你的网站是通过什么方式保持登录状态的.我简单介绍一种提供一个思路吧如果你要跳转到的网站是使用session来保持登录状态,那么可以在登录时服务端维护一个cookie值和session对象,并将这个cookie值返回给客户端,而客户端访问网站时,将这个cookie值种入你的webview.而此时通过此webview访问的网站读取app客户端种入的cookie值,像服务端请求session对象获取登录用户信息.
当然这里还有很多细节需要处理,比如如何保证安全性,如果统一维护登录状态实现app端与内嵌网站统一登录状态等等
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
链接里面有个token字段,是个字符串,提交过去,后台解析,判断用户信息,写入session中。这就可以了。这个字符串是和后台事前商议好的,包含用户名,加密信息,随机码,时间等
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。JAVA 后台如何去触发界面的一个按钮的onclick
作者:用户
浏览:1038 次
JAVA后台如何去触发界面的一个按钮的onclick最近项目需要用到爬虫,使用的Jsoup,连接获取到了界面的数据,但是对应的数据是按钮触发后台获取的地址,JAVA中如何触发获取呢。先用fiddler
JAVA 后台如何去触发界面的一个按钮的onclick
最近项目需要用到爬虫,使用的Jsoup,连接获取到了界面的数据,但是对应的数据是按钮触发后台获取的地址,JAVA中如何触发获取呢。
先用fiddler这个工具看点了按钮以后发送的是什么请求得到的链接
然后编程模拟。
解决方案二:
有看过,对方后台有处理,前台都是随机的数值,还有MD5加密
【云栖快讯】中办国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》加快推进基于 IPv6 的下一代互联网规模部署,计划指出2025年末中国 IPv6 规模要达到世界第一,阿里云也第一时间宣布了将全面提供IPv6服务,那么在全面部署 IPV6 前,你需要了解都在这儿&&
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供}

我要回帖

更多关于 html5实现注册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信