Servlet不是單例的--ZT

Servlet不是單例的.不過一般來說一個servlet只會有一個實例   

 
1)當container開始啓動,或是客戶端發出請求服務時,Container
會負責加載和實例化一個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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章