今天发现,如果配置loadOnStartup为启动时加载的Servlet,如果仅仅配置loadOnStartup的Annotation
package com.zhen.servlet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.swing.Timer;
/**
* Servlet implementation class TimerServlet
*/
@WebServlet(loadOnStartup=1)
public class TimerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
new Timer(1000,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(new Date());
}
}).start();
}
}
这个Servlet将看不到结果,但是如果加上urlPatterns或者value的值,就能看到效果,目前原因不明
package com.zhen.servlet;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.swing.Timer;
/**
* Servlet implementation class TimerServlet
*/
@WebServlet(loadOnStartup=1,urlPatterns={"/timerServlet"})
public class TimerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
super.init(config);
new Timer(1000,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(new Date());
}
}).start();
}
}
本文探讨了Servlet中loadOnStartup配置的作用及其与urlPatterns的关系。通过示例代码展示了仅配置loadOnStartup时Servlet行为的异常,并指出当同时配置urlPatterns时Servlet能够正常工作。
1万+

被折叠的 条评论
为什么被折叠?



