怎样用JAVA来监听数据库里的变化

怎样用JAVA来监听数据库里的变化,第1张

可以使用ContentObserver对象监听,如下:

public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)

功能:为指定的Uri注册一个ContentObserver派生类实例,当给定的Uri发生改变时,回调该实例对象去处理。

参数:uri 需要观察的Uri(需要在UriMatcher里注册,否则该Uri也没有意义了)

notifyForDescendents 为false 表示精确匹配,即只匹配该Uri

为true 表示可以同时匹配其派生的Uri,举例如下:

假设UriMatcher 里注册的Uri共有一下类型:

1 、content://com.qin.cb/student (学生)

2 、content://com.qin.cb/student/#

3、 content://com.qin.cb/student/schoolchild(小学生,派生的Uri)

假设我们当前需要观察的Uri为content://com.qin.cb/student,如果发生数据变化的 Uri 为

content://com.qin.cb/student/schoolchild ,当notifyForDescendents为 false,那么该ContentObserver会监听不到,

但是当notifyForDescendents 为ture,能捕捉该Uri的数据库变化。

你说的是服务器端的监听是吧。

listener.ora的文件中,有一个oracle_sid的字段,这个字段写的是oracle的sid,你和数据库的sid去对比,就知道监听的是哪一个数据库。

或者通过lsnrctl status能够调出监听状态,下面有四个监听正太,其中我忘了第几个,那个也是数据库的sid,跟数据库对比下,就知道了。

一本来说服务器监听的都是本机的数据库。 java监听器(Listener)和Servlet是两个不同功能的JavaWeb组件。

监听器是实现了javax.servlet.ServletContextListener这个接口的类,里面有两个方法需要你在子类实现:

public void contextDestroyed(ServletContextEvent evt) {

//监听器被销毁的时候调用

}

public void contextInitialized(ServletContextEvent evt) {

//监听启动的时候调用,初始化servletcontext事件

}

创建好后,配置到web.xml中即可。

对于Servlet自己没有监听器,只有当用户请求Servlet映射的路径时会触发Servlet对应的方法来处理,以此来响应客户的请求。

监听参数是用来初始化监听上下文使用的,不能被其他入口所调用。

<!--Spring ApplicationContext载入-->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- Spring ApplicationContext配置文件的路径,此参数用于后面的Spring-Contextloader -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:beans.xml</param-value>

</context-param>

<!-- 系统服务初始化 -->

<listener>

<listener-class>pams.servlet.SysInitServlet</listener-class>

</listener>

方法1:可以利用ServletContext类的对象application解决,这个属于整个web应用都公用的内部对象。例如在监听器中

public class GetConnListener implements ServletContextListener {

//例如这个是要传的数据

String data="0"

//当此web应用被访问后启用该方法

public void contextInitialized(ServletContextEvent sce) {

//创建application

ServletContext application=sce.getServletContext()

//将数据存入application的属性中

application.setAttribute("Data",data)}

然后再JSP页面,的JSP脚本中写入

String data=(String)sapplication.getAttribute("Data")

out.print(data)

就能狗获取和输出这个数据了。

方法二便是直接在JAVA中把数据存入数据库,JSP从数据库中读出数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9952628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存