jsp中如何實現逾期通知功能﹐ 应该让数据库作这个动作,可以建立一个job定期run 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也碰到该问题,我的问题是当数据正式插入表中后,满六个月后将触发其它的表格申请要求前面处理,我想是不是可以用数据库的触发器来处理,虽然还没有直接找到,但我相信应该能做,另外实在不行,我想这样做:即在页面中做,在打开页面时,自动执行一个bean,该bean来处理这个问题,做完后,置当天执行标志,即每天只执行一次。 我想過在數據庫做﹐可在數據庫做如何能發送mail啊,如果在頁面做的話﹐只能在打開面時才能執行﹐在頁面沒有打時就不能觸發了還有什么更好的方法呢 写一个JAVA的服务程序,每过一定的时间读表记录,发送email就可以了. http://community.csdn.net/Expert/topic/2974/2974781.xml?temp=.4880945你可以参考一下这个帖子 用ServletContextListener吧。代码附上:===========package com.yaray.autotask;public class ProjectServletContextListner implements javax.servlet.ServletContextListener{ private static java.util.Timer timer = null; // 定时器 // 此方法仅在起动Web容器(或服务器)时被调用一次 public void contextInitialized(javax.servlet.ServletContextEvent event) { timer = new java.util.Timer(true); javax.servlet.ServletContext ctx = event.getServletContext(); ctx.log("定时器已启动,任务开始执行"); /* //如果是用web.xml文件配置参数,则用下面的方式读取参数设置值 long period = Long.valueOf((String)ctx.getInitParameter("period")).longValue(); */ timer.schedule(new NewTask(), // 所需要执行的任务 0, // 延迟时间 ( 0 --- 表示起动Web容器(或服务器)就立即执行此任务 ) 5*1000 // 任务的执行间隔时间[单位:毫秒] (此处的间隔时间是5秒) ); }// End method: contextInitialized(javax.servlet.ServletContextEvent event) // 此方法仅在关闭Web容器(或服务器)时被调用一次 public void contextDestroyed(javax.servlet.ServletContextEvent event) { timer.cancel(); event.getServletContext().log("定时器已销毁,任务执行结束"); }// End method: contextDestroyed(javax.servlet.ServletContextEvent event)}///:~/*在工程的WEB-INF\web.xml配置文件中加入如下三行,所计划的任务就会在Web容器(或服务器)启动时自动开始执行了: <listener> <listener-class>com.yaray.autotask.ProjectServletContextListner</listener-class> </listener>*//** * 在无特殊要求的情况下这个类无需修改; * 只需要与ProjectServletContextListner类保存在同一个.java文件中即可(或同一个文件夹中,需定义与其相同的包名) */class NewTask extends java.util.TimerTask{ private static boolean isRunning = false; // 运行标志(表示是否正在运行计划的任务) private static int t = 3; // private CustomTask ct = TaskFactory.getTask(); public NewTask(){ } public void run(){ if(!isRunning){ // 当未执行此任务时则开始执行 if(ct != null){ isRunning = true; // 将任务执行标志设置为正在执行 ct.execute(); // 执行任务 isRunning = false; // 将任务执行标志设置为执行完毕 }else{ if(t == 0) return; t--; System.out.println(); System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null."); System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null."); System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null."); } }else{ System.out.println("The task is running."); } }// End method: run()}///:~////////////////////////////////////////////////////////////////////////////////////////////////////////* 单独保存为CustomTask.java文件 */package com.yaray.autotask;public interface CustomTask{ /** * 用于实现自定义的任务 */ public void execute();}///:~///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////* 单独保存为TaskFactory.java文件 */package com.yaray.autotask;public class TaskFactory { /** * 功能:返回实现了CustomTask接口的类的实例对象 * * * 例: 如果实现了CustomTask接口的类名是MyTask, * return new MyTask(); * 如上这样就可以了. */ public static CustomTask getTask(){ return null; // 此处仅返回null,用户应根据实际情况作出修改 }}///:~//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////package com.yaray.autotask;public MyTask implements com.yaray.task.CustomTask{ /* 任务执行主体(此处为实验代码,仅用来执行简单的信息输出语句) */ public void execute(){ System.out.println("在此方法中实现任务的主体"); }}///:~/////////////////////////////////////////////////////////////////////////////////////////////////////// 上面这几个程序共同完成一个在Web工程中定时执行指定任务的功能。更具体的说明可以参看程序中的说明。 同意 yaray(雅睿,生活在别处,工作在别墅) 你也可以写一servlet , 在servlet中启动一个线程用表发email 网页图像显示问题 jsp struts上传文件时在文件成功上传之前获得文件的大小 eclipse3.2中的项目转到Eclipse3.4中 java 做 ip 查询系统 谁有FCKeditor-2.3.zip(java)压缩包,发给me一个! 越详细越好 JSP中如何判断文本框中的字符数?? 这个服务器的问题该怎么解决呀!有劳各位了,谢谢! 寻求JSP文件操作的简单例子 Ajax从数据库中动态提取出来的数据必须在下一行输出吗?怎么改变位置,让它在同一行输出 小问题 怎么实现自动下载并执行一个程序
如果在頁面做的話﹐只能在打開面時才能執行﹐在頁面沒有打時就不能觸發了
還有什么更好的方法呢
你可以参考一下这个帖子
代码附上:
===========
package com.yaray.autotask;public class ProjectServletContextListner implements javax.servlet.ServletContextListener{ private static java.util.Timer timer = null; // 定时器 // 此方法仅在起动Web容器(或服务器)时被调用一次
public void contextInitialized(javax.servlet.ServletContextEvent event) {
timer = new java.util.Timer(true);
javax.servlet.ServletContext ctx = event.getServletContext();
ctx.log("定时器已启动,任务开始执行");
/*
//如果是用web.xml文件配置参数,则用下面的方式读取参数设置值
long period = Long.valueOf((String)ctx.getInitParameter("period")).longValue();
*/ timer.schedule(new NewTask(), // 所需要执行的任务
0, // 延迟时间 ( 0 --- 表示起动Web容器(或服务器)就立即执行此任务 )
5*1000 // 任务的执行间隔时间[单位:毫秒] (此处的间隔时间是5秒)
); }// End method: contextInitialized(javax.servlet.ServletContextEvent event) // 此方法仅在关闭Web容器(或服务器)时被调用一次
public void contextDestroyed(javax.servlet.ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器已销毁,任务执行结束");
}// End method: contextDestroyed(javax.servlet.ServletContextEvent event)}///:~/*在工程的WEB-INF\web.xml配置文件中加入如下三行,所计划的任务就会在Web容器(或服务器)启动时自动开始执行了:
<listener>
<listener-class>com.yaray.autotask.ProjectServletContextListner</listener-class>
</listener>*//**
* 在无特殊要求的情况下这个类无需修改;
* 只需要与ProjectServletContextListner类保存在同一个.java文件中即可(或同一个文件夹中,需定义与其相同的包名)
*/
class NewTask extends java.util.TimerTask{ private static boolean isRunning = false; // 运行标志(表示是否正在运行计划的任务)
private static int t = 3; //
private CustomTask ct = TaskFactory.getTask(); public NewTask(){
} public void run(){
if(!isRunning){ // 当未执行此任务时则开始执行
if(ct != null){
isRunning = true; // 将任务执行标志设置为正在执行
ct.execute(); // 执行任务
isRunning = false; // 将任务执行标志设置为执行完毕
}else{
if(t == 0) return;
t--;
System.out.println();
System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
System.out.println(" [Error] [com.yaray.autotask.NewTask] [Method: run] The task is null.");
}
}else{
System.out.println("The task is running.");
}
}// End method: run()}///:~///////////////////////////////////////////////////////////////////////////////////////////////////////
/* 单独保存为CustomTask.java文件 */
package com.yaray.autotask;public interface CustomTask{ /**
* 用于实现自定义的任务
*/
public void execute();}///:~
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
/* 单独保存为TaskFactory.java文件 */
package com.yaray.autotask;public class TaskFactory { /**
* 功能:返回实现了CustomTask接口的类的实例对象
*
*
* 例: 如果实现了CustomTask接口的类名是MyTask,
* return new MyTask();
* 如上这样就可以了.
*/
public static CustomTask getTask(){
return null; // 此处仅返回null,用户应根据实际情况作出修改
}}///:~
///////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
package com.yaray.autotask;
public MyTask implements com.yaray.task.CustomTask{ /* 任务执行主体(此处为实验代码,仅用来执行简单的信息输出语句) */
public void execute(){
System.out.println("在此方法中实现任务的主体");
}}///:~
///////////////////////////////////////////////////////////////////////////////////////////////////////
你也可以写一servlet , 在servlet中启动一个线程用表发email