- 浏览: 263380 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (249)
- Memcached (6)
- 操作系统-Linux (18)
- 操作系统-Windows (2)
- JAVA-多线程 (6)
- Java-Web (46)
- Eclipse (19)
- Struts-Spring-Hibernate (25)
- 消息队列 (10)
- JBPM (3)
- 全文检索-Solr (2)
- WebService (3)
- 数据库-Oracle (9)
- 数据库-MySQL (14)
- 数据库-MS SQL (2)
- ESB(企业服务总线) (1)
- 前端技术 (9)
- 互联网安全技术 (1)
- 日志log4j (3)
- 分布式框架 (11)
- 版本控制-SVN (3)
- 版本控制-Git (5)
- Maven (11)
- 大数据-Hadoop (3)
- PHP (1)
- JAVA注解 (2)
- 系统架构 (1)
- 会话-权限-JWT (10)
- 定时任务 (1)
- 非技术 (1)
- Redis (5)
- Nginx (5)
- 云计算和虚拟化 (1)
- swagger (1)
- 移动端UI和框架 (5)
最新评论
-
lgh1992314:
applicationContext.xml 是 spring ...
Spring的applicationContext和spring-mvc.xml的区别
方法1:tomcat 自动执行servlet
写一个servlet,在init()方法中写好想要执行的程序,程序如下:
eclipse新建一个web\Dynamic Web Project , name = myweb1 , 把tomcat中的 servlet-api.jar复制到lib中,新建一个类MyServlet.java, 继承 javax.servlet.HttpServlet,代码如下:
同时,在web.xml配置文件内容如下:
其中<load-on-startup>0</load-on-startup>即可实现tomcat启动时执行该servlet
load-on-startup的值必须为整数
当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高
使用虚拟路径部署到tomcat中:在 tomcat的 server.xml的 </Host>前加入:
<Context debug="0" docBase="F:/studyworkspace/myweb1/WebRoot" path="myweb1" reloadable="true">
</Context>
docBase为 myweb1的webroot的路径 ,path为上下文
方法2:Servlet侦听器
要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。
listener类如下:
contextInitialized函数里的内容将被自动执行
最后在web.xml里面添加一个监听节点就行了
<listener>
<listener-class>org.cai.MyListener</listener-class>
</listener>
完整web.xml如下
如果要执行定时任务,就在自动执行的代码里面使用 java.util.Timer以及创建一个继承java.util.TimerTask的类。示例:
以上两种方法部署到tomcat,运行tomcat\bin\startup.bat,即可看到效果,其中方法2中的日志写入到tomcat\logs\localhost.xxxx-xx-xx.log文件中。
方法3:如果要spring启动后立即执行指定的函数
spring启动后立即执行指定的函数只需要在spring配置文件中增加一个init-method属性即可
<bean id="test" class="com.zhy.demo.test" init-method="start" />
写一个servlet,在init()方法中写好想要执行的程序,程序如下:
eclipse新建一个web\Dynamic Web Project , name = myweb1 , 把tomcat中的 servlet-api.jar复制到lib中,新建一个类MyServlet.java, 继承 javax.servlet.HttpServlet,代码如下:
package org.cai; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; public class MyServlet extends HttpServlet { @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); System.out.println("自动加载启动."); System.out.println("自动加载启动."); for(int i = 0; i < 10; i++){ System.out.println(i + "、 自动加载启动."); } } }
同时,在web.xml配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>myweb1</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.cai.MyServlet</servlet-class> <strong><load-on-startup>0</load-on-startup></strong> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
其中<load-on-startup>0</load-on-startup>即可实现tomcat启动时执行该servlet
load-on-startup的值必须为整数
当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载
当其值为0和正整数时,容器启动时加载,值越小,优先级越高
使用虚拟路径部署到tomcat中:在 tomcat的 server.xml的 </Host>前加入:
<Context debug="0" docBase="F:/studyworkspace/myweb1/WebRoot" path="myweb1" reloadable="true">
</Context>
docBase为 myweb1的webroot的路径 ,path为上下文
方法2:Servlet侦听器
要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。
listener类如下:
package org.cai; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyListener implements ServletContextListener { private java.util.Timer timer = null ; public void contextDestroyed(ServletContextEvent event) { // TODO Auto-generated method stub } public void contextInitialized(ServletContextEvent event) { timer = new java.util.Timer(true) ; event.getServletContext().log("定时器已启动。") ; timer.schedule(new MyTask(event.getServletContext()), 0, 5000) ; event.getServletContext().log("已经添加任务调度表。" ) ; } }
contextInitialized函数里的内容将被自动执行
最后在web.xml里面添加一个监听节点就行了
<listener>
<listener-class>org.cai.MyListener</listener-class>
</listener>
完整web.xml如下
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>myweb2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.cai.MyListener</listener-class> </listener> </web-app>
如果要执行定时任务,就在自动执行的代码里面使用 java.util.Timer以及创建一个继承java.util.TimerTask的类。示例:
package org.cai; import java.util.TimerTask; import javax.servlet.ServletContext; public class MyTask extends TimerTask { private static boolean isRunning = false; private ServletContext context = null; public MyTask(ServletContext context){ this.context = context ; } @Override public void run() { if (! isRunning){ System.out.println("开始执行指定任务.") ; //if (C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY)) { isRunning = true ; context.log("开始执行指定任务.") ; //TODO 添加自定义的详细任务,以下只是示例 int i = 0; while (i++ < 10) { context.log("已完成任务的" + i + "/" + 10); //System.out.println("已完成任务的" + i + "/" + 1000) ; } isRunning = false; context.log("指定任务执行结束"); System.out.println("指定任务执行结束") ; //} }else{ context.log("上一次任务执行还未结束"); } } }
以上两种方法部署到tomcat,运行tomcat\bin\startup.bat,即可看到效果,其中方法2中的日志写入到tomcat\logs\localhost.xxxx-xx-xx.log文件中。
方法3:如果要spring启动后立即执行指定的函数
spring启动后立即执行指定的函数只需要在spring配置文件中增加一个init-method属性即可
<bean id="test" class="com.zhy.demo.test" init-method="start" />
发表评论
-
JAVA SortedMap接口
2020-03-23 11:03 396SortedMap接口主要提供有序的Map实现。 M ... -
java利用Jpcap实现抓包
2019-03-28 11:27 15911.准备工作 Jpcap是一个可以监控当前网络情况的 ... -
实战:使用JpcapCaptor实例来捕捉网络数据包
2019-03-28 11:23 652当你通过打开网卡设备得到JpcapCaptor实例后,就可以 ... -
通过java进行电脑屏幕截图
2019-01-22 03:12 823package image; import java. ... -
Java中将InputStream读取为String, 各种方法的性能对比
2018-09-17 13:12 1083如下, 一共存在11种实现方式及其对应的性能测试结果:1. ... -
浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
2018-07-29 21:10 5131.@RequestMapping 国际惯例先介绍什么是@ ... -
关于split截取字符时,问号的特殊情况
2018-06-10 00:09 2639有一段字符 tring str = “gjjxxcx/gjj ... -
报错:No main manifest attribute
2018-04-15 23:21 5300报错信息 在Linux系统下执行Java -jar XXX ... -
CentOS下安装JDK的三种方法
2018-04-15 23:31 311由于各Linux开发厂商的不同,因此不同开发厂商的Linux ... -
Lombok 安装、入门 - 消除冗长的 java 代码
2017-10-25 22:31 331前言: 逛开源社区的时候无意发现的,用了一段时间,觉 ... -
Filter 过滤器
2017-04-18 09:32 428原文链接:http://tianweili.github. ... -
BigDecimal如何比较是否相等
2016-11-29 18:30 5380例子: BigDecimal a = new BigDec ... -
Tomcat内存设置详解
2016-11-01 18:53 377Java内存溢出详解 ... -
RESTful API 设计指南
2016-10-10 19:39 407网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前 ... -
getJdbcTemplate中execute和update的区别
2016-04-29 17:48 14291、update可以带参数,而execute不可以。例如:j ... -
处理大数字BigInteger与BigDecimal
2016-04-27 17:01 713关键技术剖析: ² BigInteger:支持任意精度的整 ... -
深入理解 Java中的 流 (Stream)
2016-04-27 16:58 652个人小站,正在持续整理中,欢迎访问:http://shito ... -
关于split函数的注意点
2016-04-27 16:58 566如果 String str = "aa|bb| ... -
企业数据总线(ESB)和注册服务管理(dubbo)的区别
2016-04-20 17:50 1531一、概述 1、什么是ESB ... -
Quartz作业调度框架
2016-04-20 14:11 410Quartz 是一个开源的作业调度框架,它完全由 Java ...
相关推荐
Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...
showSomething.java 测试运行时多态 stupid.java 试图覆盖最终方法的类,它有错误 Sub.java 一个简单的子类 Super.java 一个基类 testOverload.java 测试方法的重载示例1 testOverload_1.java 测试方法的重载...
Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...
你还将学会直接用javac命令来编译代码,java运行代码方法,ANT方式编译和运行代码, 创建自己的更高效的Build.xml文件,实现DIY自已的工程, Eclipse和Jbuild编译和运行代码方式,和这差不多,把他们隐藏起来了. 请...
tomcat运行时所需要的配置文件。 注意: server.xml (配置tomcat端口) connectionTimeout="20000" redirectPort="8443" /> lib: 存放tomcat运行时所需要的jar文件。 logs: 存放tomcat运行时所...
你还将学会直接用javac命令来编译代码,java运行代码方法,ANT方式编译和运行代码, 创建自己的更高效的Build.xml文件,实现DIY自已的工程, Eclipse和Jbuild编译和运行代码方式,和这差不多,把他们隐藏起来了. 请输入...
会有方便的辅助对话框,显示相关的函数和属性,jsp页面的有更好的编辑辅助对话框可以少输入很多代码,java代码的自动编译和运行,Tomcat工程的自动Build,自动部署和自动启动,加入文件的导航功能,实现了方便的文件切换,...
包,类的创建和保存,java代码和jsp页面的编辑,会有方便的辅助对话框,显示相关的函数和属性,jsp页面的有更好的编辑辅助对话框可以少输入很多代码,java代码的自动编译和运行,Tomcat工程的自动Build,自动部署和自动启动,...
运行加密项目时,无需求修改tomcat,spring等源代码。 支持普通jar包、springboot jar包以及普通java web项目编译的war包。 支持spring framework、swagger等需要在启动过程中扫描注解或生成字节码的框架。 支持...
就OK了,以后开机后tomcat服务就自动启动了 注册服务: 首先,在开始->运行中敲cmd,进入MS-DOS界面 cd 到tomcat的bin目录下 运行命令service install TomcatA 就可以把tomcat注册成系统服务了,服务的名称是TomcatA ...
包,类的创建和保存,java代码和jsp页面的编辑,会有方便的辅助对话框,显示相关的函数和属性,jsp页面的有更好的编辑辅助对话框可以少输入很多代码,java代码的自动编译和运行,Tomcat工程的自动Build,自动部署和自动启动....
java代码的自动编译和运行,Tomcat工程的自动Build,自动部署和自动启动. FirstJava2主要特点:速度快,功能简单,管用,反应敏捷,编辑辅助方式比较高效.好用! 加入六个实用功能,可以大大减少开发工作量: 1.Hibernate配置...
这个过程是运行时自动完成的,不需要编写任何代码。 资源注射是通过注解(Annotation)完成的。注解是Java 5.0里引入的新特性。注解是一种特殊的接口,以“@”符号为标志。 JSP中如何使用资源注射呢? 其实很简单。
但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
巡云轻论坛系统包含论坛、问答模块。采用JAVA+MYSQL架构,自适应手机端...4.在Eclipse中打开src\test\java\forum\Init.java执行main方法,将SQL导入到数据库,然后重启Tomcat即可正常运行。管理员初始账号admin 密码1234
巡云轻论坛系统包含论坛、问答模块。采用JAVA+MYSQL架构,自适应手机端...4.在Eclipse中打开src\test\java\forum\Init.java执行main方法,将SQL导入到数据库,然后重启Tomcat即可正常运行。管理员初始账号admin 密码1234
3.启动MyEclipse,新建一个JavaProject,名称为SimpleBBS,这样MyEclipse会自动找到对应的SimpleBBS的文件夹,并且把其中的JAVA代码全都复制到Ch03工程中 4.在MyEclipse开发环境中,将sqljdbc.jar(SimpleBBS\WebRoot...
在Windows XP下安装完MySQL后,它就已经自动启动服务了,并且在开始菜单中有其客户端的快捷方式连接 可以通过Windows的服务管理器查看。“开始”-“运行”,输入“services.msc”,回车。 弹出Windows的服务管理...
2、java为什么能够跨平台运行? 13 3、String是基本数据类型吗?我可不可以写个类继承于String? 14 4、谈谈&和&&的区别? 14 5、Switch语句里面的条件可不可以是byte、long、String?使用时候还应注意什么? 14 6、...