Servlet细节———< load-on-startup >配置
来源:互联网 发布:怎样学好linux 编辑:程序博客网 时间:2024/06/05 19:49
Servlet细节———< load-on-startup >配置
需求:当我们的网站启动的时候,可能会要求初始化一些数据(比如创建临时表),再比如我们的网站定时要求完成一些任务[定时写日志,定时备份数据,定时发邮件等等]
解决方法:可以通过< load-on-startup >配合线程知识解决。
定义发电子邮件的类
public class Email extends Thread{public void run(){ int i = 0; try{ while(true){ //每休眠一分钟,就去扫描sendmail,看看哪份信件应当被发送 Thread.sleep(10*1000); System.out.println("发出第"+(++i)+"邮件");} }catch(Exception e){ e.printStackTrace(); }}}
然后创建一个Servlet调用Email类,并且把< load-on-startup >元素配置为1:
import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//下面语句加了注释后就得自己在xml文件中配置<servlet>元素//@WebServlet("/InitServlet")public class InitServlet extends HttpServlet {public InitServlet() { super();}public void init(ServletConfig config) throws ServletException { System.out.println("Init One"); Email email = new Email(); email.start();}public void destroy() {}}
再定义一个Servlet文件,把< load-on-startup >元素配置为2:
import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//@WebServlet("/InitServlet2")public class InitServlet2 extends HttpServlet {public InitServlet2() { super();}public void init(ServletConfig config) throws ServletException { System.out.println("Init2");}public void destroy() {}}
配置web.xml文件
<servlet> <servlet-name>InitServlet</servlet-name> <servlet-class>com.Test.InitServlet</servlet-class> <load-on-startup>2</load-on-startup></servlet><servlet> <servlet-name>InitServlet2</servlet-name> <servlet-class>com.Test.InitServlet2</servlet-class> <load-on-startup>1</load-on-startup></servlet>
值得注意的是最好不要再做映射了,防止别人手动调用。
结果:
虽然会有报错说找不到路径,原因就是没有加映射,但不要紧,因为我们想要的还是会出来,Init One比Init2 先出现,而且每间隔10秒就有发送邮件的信息发出来。
解释:
1.load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2.它的值必须是一个整数,表示servlet应该被载入的顺序
3.当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
4.当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
5.正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
6.当值相同时,容器就会自己选择顺序来加载。
阅读全文
0 0
- Servlet细节———< load-on-startup >配置
- Servlet配置load-on-startup
- servlet配置load-on-startup的作用
- servlet 中的 <load-on-startup> 配置
- servlet中的<load-on-startup>配置
- servlet配置load-on-startup的作用
- servlet配置load-on-startup的作用
- servlet配置load-on-startup的作用
- Servlet load-on-startup
- load-on-startup Servlet
- load-on-startup 配置
- J2EE中web.xml配置servlet的load-on-startup
- Servlet的配置参数load-on-startup参数理解
- Servlet的配置参数load-on-startup参数理解
- web.xml中Servlet配置<load-on-startup>的作用
- Servlet配置信息与load-on-startup 创建
- servlet中的load-on-startup的含义
- servlet load-on-startup的作用
- List、Set和Map的遍历方法
- Unity中实现弹性滚动列表基于UGUI
- hadoop 2.7.4:java.lang.UnsupportedClassVersionError: org/apache/hadoop/mapreduce/lib/output/Sequence
- 16位 32位 64位下 int double short long char 等占用的字节数是多少?
- POJ 2253 Frogger Dijkstra变形
- Servlet细节———< load-on-startup >配置
- spring-boot实战:shiro
- luogu1155【2008提高】双栈排序(二分图判断+模拟)
- 机器学习 学习笔记
- 逆序对及其变种问题的一点思考
- Ubuntu 16.04 安装caffe(CPU)以及编译问题处理
- Cheapest Palindrome POJ
- SSM整合(springmvc + spring + mybatis)
- POJ