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>