ServletConfig是Servlet的配置文件。對應於web.xml中的<servlet></servlet>標簽。ServletConfig是由java提供的一個接口,其實現類是由tomcat提供。
其API有:
String getServletName();//獲取<servlet-name>中的內容 ServletContext getServletContext();//獲取Servlet上下文對象 String getInitParameter(String name)//通過名稱獲取指定初始化參數的值 Enumeration getInitParameterNames()//獲取所有初始化參數的名稱
一個項目只有一個ServletContext,相當於<web-app></web-app>標簽。可以在不同的Servlet中獲得這個唯一的對象,可以給多個Servlet傳遞數據。tomcat啟動時創建,在tomcat關閉時才銷毀。
獲取公共初始化參數,為所有的Servlet准備。而<servlet></servlet>中的<init-param></init-param>是為當前Servlet准備的
<context-param> <param-name>name</param-name> <param-value>value</param-value> </context-param>
獲取資源路徑:
//把相對路徑變成真實路徑 String path = this.getServletContext().getRealPath("相對路徑"); //獲取資源路徑後,在創建輸出流 InputStream in = this.getServletContext().getResourceAsStream("/index.jsp"); //獲取當前路徑下所有的資源路徑 Set<String> paths = this.getContext().getResourcePaths("/WEB-INF");
線程安全就是多線程訪問同一段代碼不會產生不同的結果,編寫線程安全的代碼是依靠線程同步。Servlet不是線程安全的,工作效率高。所以不要在Servlet中創建成員變量,創建局部變量即可。如果創建成員變量,那麼它可以是無狀態的。可以創建有狀態的成員,那麼他必須是只讀的。防止一個線程執行讀操作,一個線程執行寫操作。
<servlet> <servlet-name></servlet> <servlet-class></servlet-clss> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name></servlet> <servlet-class></servlet-clss> <load-on-startup>1</load-on-startup> </servlet>
<url-pattern>是<servlet-mapping>的子元素。用來指定Servlet的訪問路徑。以"/"開頭