struts2學習->一ServletConfig和ServletContext

引言:在J2EE項目中,struts的應用無處不在,而在實際的項目中ServletConfig類和ServletContext類的若是恰當的應用的話,會          提升項目中的效率,同時,會減小一部分代碼的編寫工做。web

 


 

ServletConfig類:

   1、Servlet容器在初始化servlet的時候會初始化一個servletConfig對象,這個對象在任何可訪問的客戶端都是有效的,可是,需注意的是,該對象只能在本servlet中應用,不能在其餘servlet中訪問。tomcat

   2、 ServletConfig類的父類是HttpServlet。ServletConfig對象在servletConfig初始化的時候被建立,所以能夠在ServletConfig對象中獲取Servlet的配置信息,這些信息能夠在web.xml中進行配置(這就是避免「硬編碼」).例如servlet的一些初始化參數的信息。在這裏稍微將servlet在web.xml怎麼配置說下......以下:ide

 

 1  <servlet>
 2         <!--名稱-->
 3         <servlet-name>
 4             myTestservlet
 5         </servlet-name>
 6      <!--對應的類-->
 7         <servlet-class>
 8             com.dxb.init.SystemInit
 9         </servlet-class>
10     <!--配置的初始化參數-->
11         <init-param>
12             <param-name>
13                 systemVersion
14             </param-name>
15             <param-value>
16                 dxb
17             </param-value>
18         </init-param>
19         <load-on-startup>
20             1
21         </load-on-startup>
22     </servlet>
web.xml

 

     3、在我作過的項目中,servletConfig應用作多就是在tomcat啓動中,獲取項目中配置的參數以及爲項目的啓動就須要加載的一些數據進行處理。就如上面的代碼中的load-on-start,在xml中配置其實例化順序(load-on-start的數字越小,越優先被實例化,實例化的對象就是servlet指向的類....)。this

  簡單介紹servlet指向類中的使用方法:編碼

 1 public class SystemInit extends HttpServlet
 2 {
 3     private static final long serialVersionUID = 1L;
 4 
 5     public void init(ServletConfig config) throws ServletException
 6     {
 7         super.init();
 8         //獲取初始化參數
 9         Object version = config.getInitParameter("systemVersion");
10         System.out.println("***********"+version+"************");
11         ServletContext servletContext=config.getServletContext();
12         //爲全部可訪問的servlet設置參數,在任何servlet中訪問該參數
13         servletContext.setAttribute("version", version);
14     }
15 }
servletConfig

   4、servletConfig類的經常使用方法:spa

  1.getInitParameter(String name):根據給定的初始化參數,返回匹配的初始化參數值。code

  2.getInitParameterNmes():返回一個Enumeration對象,裏面包含了全部的初始化參數。xml

  3.getServletContext():返回一個servletContext()對象。對象


 

ServletContext類:

  真正的全局變量!在web項目中,ServletContext對象被全部的servlet共享,因此,在項目中servlet之間的通信可使用serrvletContext對象來完成。blog

  在我參與過的項目中,在初始化項目的時候,通常會加載數據字典,將數據字典裏的值(通常在項目中比較通用)放在servletContext對象中,這樣,在不一樣的servlet中就能夠訪問。例如,上面代碼中將項目的版本號放在servletContext對象中,這樣就能夠實現servlvet的通訊。

   固然,servletContext對象的用法遠不止這些。

   1、先介紹一下在J2EE項目中獲取servletContext對象的幾種方法:

   1.使用servletConfig對象獲取:

   servletConfig對象能夠維護servletContext對象。ServletContext context = config.getServletContext();就能夠得到到。

   2.在繼承了HttpServlet類的類中:

   ServletContext context=this.getservletContext;

   3.使用ServletActionContext獲取:

     ServletContext context= ServletActionContext.getServletContext();

   4.繼承了ServletContextAware接口的類(這個我真心沒用過....)

   2、ServletContext的用途

   1.實現多個servlet數據的共享:使用servletContext.setAttibute("version","dxb");能夠在其餘servlet中獲取到servletContext對象後,使用servletContext.getAttibute("version");獲取你設置的數據。

   2.讀取配置文件(固然,這不是惟一的讀取配置文件的方法,還可使用PropertityConfigration類去操做)

   我比較經常使用下面這種方式:

InputStream is = context.getResourceAsStream("WEB-INF/classes/db.properties ");    

 /*解析properties的文件*/  

Properties prop = new Properties();   

//從輸入流中讀取屬性列表(鍵和元素對)。   

 prop.load(is);   

Set<String> set = prop.stringPropertyNames();   
View Code

 

   


  這就是我對這兩個對象的一些理解,但願你們提出改善的意見......固然能夠噴...... 

相關文章
相關標籤/搜索