十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
首先你可以使用輸入輸出流(或者你說(shuō)的可能是要用反射得到程序結(jié)果來(lái)解析)解析做出*.Java文件。
成都創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)和網(wǎng)站改版、網(wǎng)站營(yíng)銷服務(wù),追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術(shù)與技術(shù)開(kāi)發(fā)的融合,累計(jì)客戶近千家,服務(wù)滿意度達(dá)97%。幫助廣大客戶順利對(duì)接上互聯(lián)網(wǎng)浪潮,準(zhǔn)確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運(yùn)用,我們將一直專注成都品牌網(wǎng)站建設(shè)和互聯(lián)網(wǎng)程序開(kāi)發(fā),在前進(jìn)的路上,與客戶一起成長(zhǎng)!
然后可以使用runtime調(diào)用Dos下的java編譯命令編譯取得class文件。
然后使用classloader,反射等組合執(zhí)行生成的class文件。
可以用線程來(lái)做,每隔幾秒開(kāi)一個(gè)線程
代碼如下
public void runTask() {
final long timeInterval = 120000;// 兩分鐘運(yùn)行一次
final ThreadService threadService = new ThreadService();
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
//你要運(yùn)行的程序
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
Web容器啟動(dòng)后執(zhí)行代碼的幾種方式
其執(zhí)行順序?yàn)椋?/p>
4===5===1===2===3
即指定init-method的Bean開(kāi)始執(zhí)行
接著實(shí)現(xiàn)spring的Bean后置處理器開(kāi)始執(zhí)行
然后是Servlet的監(jiān)聽(tīng)器執(zhí)行
再接下來(lái)是Servlet的過(guò)濾器執(zhí)行
最后才是Servlet執(zhí)行
1、實(shí)現(xiàn)Servlet監(jiān)聽(tīng)器接口ServletContextListener
[java] view plain copy
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent context) {
}
@Override
public void contextInitialized(ServletContextEvent context) {
// 上下文初始化執(zhí)行
System.out.println("================[ServletContextListener]自動(dòng)加載啟動(dòng)開(kāi)始.");
SpringUtil.getInstance().setContext(
span style="white-space:pre" /spanWebApplicationContextUtils.getWebApplicationContext(arg0.getServletContext())
span style="white-space:pre" /span);
}
}
然后在web.xml文件配置該監(jiān)聽(tīng)器
[html] view plain copy
listener
listener-classcom.test.init.InitListener/listener-class
/listener
2、實(shí)現(xiàn)Servlet的過(guò)濾器Filter
[html] view plain copy
public class InitFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {
}
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("================[Filter]自動(dòng)加載啟動(dòng)開(kāi)始.");
// 讀取Spring容器中的Bean[此時(shí)Bean已加載,可以使用]
//寫(xiě)啟動(dòng)需要執(zhí)行的代碼
System.out.println("================[Filter]自動(dòng)加載啟動(dòng)結(jié)束.");
}
}
然后在web.xml文件配置過(guò)濾器即可
[html] view plain copy
filter
filter-nameInitFilter/filter-name
filter-classcom.test.init.InitFilter/filter-class
/filter
filter-mapping
filter-nameInitFilter/filter-name
url-pattern//url-pattern
/filter-mapping
3、編寫(xiě)一個(gè)Servlet,在web.xml里面配置容器啟動(dòng)后執(zhí)行即可
[html] view plain copy
public class InitServlet extends HttpServlet {
/**
*/
private static final long serialVersionUID = 1L;
@Override
public void init(ServletConfig config) {
try {
super.init();
} catch (ServletException e) {
e.printStackTrace();
}
System.out.println("================[Servlet]自動(dòng)加載啟動(dòng)開(kāi)始.");
// 讀取Spring容器中的Bean[此時(shí)Bean已加載,可以使用]
//執(zhí)行想要的代碼
System.out.println("================[Servlet]自動(dòng)加載啟動(dòng)結(jié)束.");
}
}
然后在web.xml文件配置該Servlet的啟動(dòng)方式為:容器啟動(dòng)后執(zhí)行
servlet
servlet-nameInitServlet/servlet-name
servlet-classcom.test.init.InitServlet/servlet-class
init-param
param-nameusername/param-name
param-valuetest/param-value
/init-param
!-- 此處指定加載順序?yàn)?,表明還有優(yōu)先級(jí)更高的Servlet要先執(zhí)行 --
load-on-startup2/load-on-startup
/servlet
servlet-mapping
servlet-nameInitServlet/servlet-name
url-pattern//url-pattern
/servlet-mapping
關(guān)于啟動(dòng)后執(zhí)行,由load-on-startup指定:
(1)當(dāng)值為0或者大于0時(shí),表示容器在應(yīng)用啟動(dòng)時(shí)就加載這個(gè)servlet。值越小,啟動(dòng)優(yōu)先級(jí)越高;
(2)當(dāng)是一個(gè)負(fù)數(shù)時(shí)或者沒(méi)有指定時(shí),表示該servlet被調(diào)用時(shí)才加載。
4、如果你使用Spring IOC作為Bean管理容器,那么可以指定init-method其中init-method表示bean加載成功后,立即執(zhí)行某個(gè)方法。配置如下:start為要執(zhí)行的方法名稱
[html] view plain copy
!-- service --
bean id="shopService" class="com.test.teach.service.ShopService" span style="color:#33ffff;"init-method="start"/span
property name="shopDao" ref="shopDao" /
/bean