Servlet不是单例的.不过一般来说一个servlet只会有一个实例
会负责加载和实例化一个Servlet(一个servlet只会有一个实例吗?单例模式的吗?)
servlet不是单例的.不过一般来说一个servlet只会有一个实例
例:
当container开始启动,或是客户端发出请求服务时---如果
servlet在web.xml中配置了load-on-startup那么就是在
容器加载Servlet初始化,否则等到第一次请求时:
<servlet>
<servlet-name>DeleteNews</servlet-name>
<servlet-class>com.uland.ent.servlet.DeleteNews</servl
et-class>
<load-on-startup>1</load-on-startup>
</servlet>
而一般的Servlet启动后只有一个实例因为一般时对同一
Servlet只配置一个mapping:
<servlet-mapping>
<servlet-name>DeleteNews</servlet-name>
<url-pattern>/DeleteNews</url-pattern>
</servlet-mapping>
但是如果配置了多个mapping,那么会有多个Servlet实例
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletTest extends HttpServlet {
public static int i=0;
public ServletTest() {
// TODO Auto-generated constructor stub
i++;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("i="+i);
resp.setContentType("GB2312");
PrintWriter out=resp.getWriter();
out.println("++++++++");
out.println("the current i ="+i);
}
}
*******************************
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>servlet.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>test2</servlet-name>
<servlet-class>servlet.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/testServlet2</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
************************************
注意:当配置文件这样配置的时候,那么还是单例!
************************************
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>servlet.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/testServlet2</url-pattern>
</servlet-mapping>