servlet无请求也自动执行
各位老大,写了一个servlet,但我没有请求他也会不停的执行doget方法,请教中……代码:web.xml
<servlet>
<servlet-name>TestServer</servlet-name>
<servlet-class>com.straw.frame.system.servlet.ReportValid</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>TestServer</servlet-name>
<url-pattern>/TestServer</url-pattern>
</servlet-mapping>
servlet:
public class ReportValid extends HttpServlet {
public ReportValid() {
super();
}
public void destroy() {
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("测试成功2");
super.doGet(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("测试成功3");
super.doPost(request, response);
}
public void init() throws ServletException {
super.init();
}
}
异常点:tomcat一启动后后台就不停的打印"测试成功2"; servlet --------------------编程问答-------------------- public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("测试成功2");
super.doGet(request, response);
}
貌似这里就是无限循环。 --------------------编程问答-------------------- 你的doPost和doGet里面为什么要加super.doXXX呢?把其中一个改成this.doXXX就可以了吧 --------------------编程问答-------------------- 断点测试,看看到底是往哪里跳的。。
从init方法开始往下跳F6一步一步的跳看过程 --------------------编程问答--------------------
正解+1 --------------------编程问答-------------------- 感觉有种多态的感觉在里面 所以出现了无线循环 super.doGet(request, response);就是这一句的问题!!! --------------------编程问答-------------------- 其他地方应用这个TestServer了么?
--------------------编程问答-------------------- 为什么是super.doGet()? 用this.doGet(),试试. --------------------编程问答-------------------- 额,一般使用post请求的,所以在doGet方法里写
this.dopost(request,response);--------------------编程问答--------------------
很明显 +1 --------------------编程问答-------------------- <load-on-startup>0</load-on-startup>
web.xml 中此标签的含义如下
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
补充:Java , Web 开发