本發(fā)明涉及項(xiàng)目開發(fā)技術(shù)領(lǐng)域,具體涉及一種調(diào)用屬性配置文件中內(nèi)容的方法和裝置。
背景技術(shù):
在寫程序時(shí)有些參數(shù)是經(jīng)常改變的,而這種改變不是預(yù)知的。比如說我們開發(fā)了一個(gè)操作數(shù)據(jù)庫的模塊,在開發(fā)的時(shí)候我們連接本地的數(shù)據(jù)庫,那么IP、數(shù)據(jù)庫名稱、表名稱、數(shù)據(jù)庫主機(jī)等信息是我們本地的,要使得這個(gè)操作數(shù)據(jù)庫的模塊具有通用性,那么以上信息就不能寫死在程序里。通常的做法是用配置文件來解決。
各種程序語言都有自己所支持的配置文件類型。在Java中,Java支持的是.properties文件的讀寫。.properties文件是項(xiàng)目開發(fā)尤其是Java Web項(xiàng)目中的一種屬性配置文件,屬性配置文件經(jīng)常使用并且是特別重要的一類文件,主要用于配置Java Web項(xiàng)目中的配置信息。在項(xiàng)目開發(fā)時(shí),很多配置參數(shù)需要從屬性配置文件中讀取,并且很多項(xiàng)目對于屬性配置文件只有在使用時(shí)才進(jìn)行解析。當(dāng)有大量的方法使用配置參數(shù)時(shí),就會導(dǎo)致程序頻繁讀屬性配置文件,這嚴(yán)重降低了程序開發(fā)的效率,影響了項(xiàng)目開發(fā)進(jìn)度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種調(diào)用屬性配置文件中內(nèi)容的方法和裝置,以解決現(xiàn)有技術(shù)中程序頻繁讀取properties屬性配置文件導(dǎo)致的程序開發(fā)效率低的問題。
為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
根據(jù)本發(fā)明的一個(gè)方面,提供了一種調(diào)用屬性配置文件中內(nèi)容的方法,該方法包括:
查找項(xiàng)目的項(xiàng)目路徑,根據(jù)所述項(xiàng)目路徑找到屬性配置文件;
讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容;
將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里;
通過調(diào)用所述Map接口,來調(diào)用所述屬性配置文件中的內(nèi)容。
可選地,所述查找項(xiàng)目的項(xiàng)目路徑,根據(jù)所述項(xiàng)目路徑找到屬性配置文件包括:
在項(xiàng)目啟動時(shí),通過所述項(xiàng)目的初始化類獲得初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到屬性配置文件。
可選地,所述讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容包括:
通過文件讀取類類讀取并獲得所述屬性配置文件的字節(jié)輸入流;
調(diào)用屬性文件解析類來解析所述字節(jié)輸入流得到所述屬性配置文件中的內(nèi)容。
可選地,在將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里之前,該方法還包括:
在所述項(xiàng)目的工具包下定義一個(gè)空的Map接口。
可選地,所述屬性配置文件中的內(nèi)容包括:所述項(xiàng)目中用到的參數(shù);
所述參數(shù)按照鍵-值對的格式配置在所述屬性配置文件中。
可選地,所述調(diào)用屬性文件解析類來解析所述字節(jié)輸入流得到所述屬性配置文件中的內(nèi)容包括:
調(diào)用屬性配置文件解析類,通過所述屬性配置文件解析類的輸入流下載方法加載所述屬性配置文件的字節(jié)輸入流,并從所述字節(jié)輸入流中讀取鍵-值對;
通過所述屬性配置文件解析類的鍵獲取方法獲取所述鍵-值對中的鍵,通過獲取屬性方法獲取所述鍵對應(yīng)的值。
可選地,所述將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里包括:
根據(jù)所述屬性配置文件解析類解析得到的所述屬性配置文件中的所有鍵值-對;
將所述屬性配置文件中所有的鍵-值對一一賦值給所述預(yù)先定義的Map接口。
與上述調(diào)用屬性配置文件中內(nèi)容的方法相對應(yīng)的,本發(fā)明還提供了一種調(diào)用屬性配置文件中內(nèi)容的裝置,該裝置包括:
獲取單元,用于查找項(xiàng)目的項(xiàng)目路徑,根據(jù)所述項(xiàng)目路徑找到屬性配置文件;
解析單元,用于讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容;
封裝單元,用于將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里;
調(diào)用單元,用于通過調(diào)用所述Map接口,來調(diào)用所述屬性配置文件中的內(nèi)容。
可選地,所述獲取單元,具體用于在項(xiàng)目啟動時(shí),通過所述項(xiàng)目的初始化類獲得初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到屬性配置文件。
可選地,所述解析單元包括:字節(jié)流讀取單元和字節(jié)流解析單元;
所述字節(jié)流讀取單元,用于通過文件讀取類讀取并獲得所述屬性配置文件的字節(jié)輸入流;
所述字節(jié)流解析單元,用于調(diào)用屬性配置文件解析類來解析所述字節(jié)輸入流得到所述屬性配置文件中的內(nèi)容。
本發(fā)明的有益效果是:本發(fā)明的技術(shù)方案通過初始化項(xiàng)目時(shí)將屬性配置文件的內(nèi)容封裝到Map接口里,后續(xù)使用時(shí)通過直接調(diào)用map接口來獲取屬性配置文件中的內(nèi)容,因而只需項(xiàng)目初始化時(shí)封裝一次屬性配置文件,項(xiàng)目啟動后就可以通過Map接口調(diào)取所用的屬性配置文件中的內(nèi)容,不需要二次解析屬性配置文件等其它操作,使得程序的效率更高,達(dá)到性能高效利于 開發(fā)的效果。
附圖說明
圖1是本發(fā)明一個(gè)實(shí)施例的一種調(diào)用屬性配置文件中內(nèi)容的方法流程圖;
圖2是本發(fā)明一個(gè)實(shí)施例的屬性配置文件中的內(nèi)容的示意圖;
圖3是本發(fā)明一個(gè)實(shí)施例的一種調(diào)用屬性配置文件中內(nèi)容的裝置的框圖。
具體實(shí)施方式
本發(fā)明的核心思想是:針對現(xiàn)有技術(shù)項(xiàng)目開發(fā)(尤其是Java Web)過程中,程序調(diào)用屬性配置文件內(nèi)容時(shí),需要頻繁讀取屬性配置文件導(dǎo)致開發(fā)效率低的問題,通過項(xiàng)目初始化時(shí)將屬性配置文件解析后封裝到Map接口中,項(xiàng)目啟動后,直接通過調(diào)用Map來獲取屬性配置文件中的內(nèi)容,配置簡單,使用方便,達(dá)到了性能高效利于開發(fā)的效果。
圖1是本發(fā)明一個(gè)實(shí)施例的一種調(diào)用屬性配置文件中內(nèi)容的方法流程圖,參見圖1,本發(fā)明一個(gè)實(shí)施例的這種調(diào)用屬性配置文件中內(nèi)容的方法包括:
步驟S11,查找項(xiàng)目的項(xiàng)目路徑,根據(jù)項(xiàng)目路徑找到屬性配置文件;
步驟S12,讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容;
步驟S13,將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里;
步驟S14,通過調(diào)用所述Map接口,來調(diào)用所述屬性配置文件中的內(nèi)容。
由圖1所示的步驟可知,本發(fā)明實(shí)施例的調(diào)用屬性配置文件中內(nèi)容的方法通過查找項(xiàng)目(尤其是Java Web)的項(xiàng)目路徑,根據(jù)項(xiàng)目路徑找到properties屬性配置文件,獲取properties屬性配置文件中的內(nèi)容,將properties屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口中,避免了Java Web項(xiàng)目開發(fā)運(yùn)行過程中,程序頻繁讀取解析properties屬性配置文件導(dǎo)致的效率低、項(xiàng)目 開發(fā)進(jìn)度慢的問題。
在本發(fā)明的一個(gè)實(shí)施例中,步驟S11,查找項(xiàng)目的項(xiàng)目路徑,根據(jù)項(xiàng)目路徑找到屬性配置文件包括:
在項(xiàng)目啟動時(shí),通過所述項(xiàng)目的初始化類獲得初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到properties屬性配置文件。
具體的,在Java Web項(xiàng)目啟動時(shí),運(yùn)行Servlet類,通過所述Servlet類的ServletConfig對象獲得當(dāng)前Servlet類的初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述Java Web項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到properties屬性配置文件。其中,初始化參數(shù)信息包括項(xiàng)目路徑這一參數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,步驟S12,讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容包括:
通過文件讀取類讀取并獲得所述properties屬性配置文件的字節(jié)輸入流;
調(diào)用屬性文件解析類來解析所述字節(jié)輸入流得到所述properties屬性配置文件中的內(nèi)容。
具體實(shí)現(xiàn)時(shí),通過文件讀取類FileInputStream類讀取并獲得所述properties屬性配置文件的字節(jié)輸入流;
調(diào)用屬性文件解析類properties類來解析所述字節(jié)輸入流得到所述properties屬性配置文件中的內(nèi)容。
在本發(fā)明的一個(gè)實(shí)施例中,在將得到的所述properties屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里之前,該方法還包括:在所述項(xiàng)目的工具包下定義一個(gè)空的Map接口。例如在所述Java Web項(xiàng)目的Java.util工具包下定義一個(gè)空的Map接口。
在本發(fā)明的一個(gè)實(shí)施例中,properties屬性配置文件中的內(nèi)容包括:所述Java Web項(xiàng)目中用到的參數(shù);
參數(shù)按照鍵-值對的格式配置在properties屬性配置文件中。
在本發(fā)明的一個(gè)實(shí)施例中,所述調(diào)用屬性文件解析類來解析所述字節(jié)輸入流得到所述properties屬性配置文件中的內(nèi)容包括:
調(diào)用屬性文件解析類即Properties類,通過所述Properties類的輸入流下載方法即load(InputStream inStream)方法加載所述properties屬性配置文件的字節(jié)輸入流,并從所述字節(jié)輸入流中讀取鍵-值對;
通過所述Properties類的鍵獲取方法即keySet()方法獲取所述鍵-值對中的鍵,通過獲取屬性方法即getProperty(String key)方法獲取所述鍵對應(yīng)的值。
在本發(fā)明的一個(gè)實(shí)施例中,步驟S13,將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里包括:
根據(jù)所述屬性配置文件解析類解析得到的所述屬性配置文件中的所有鍵值-對;
將所述屬性配置文件中所有的鍵-值對一一賦值給所述Map接口。
以下結(jié)合一個(gè)具體的實(shí)施例對本發(fā)明的這種調(diào)用屬性配置文件中內(nèi)容的方法進(jìn)行展開說明。
在本實(shí)施例中,調(diào)用屬性配置文件中內(nèi)容的方法的詳細(xì)實(shí)現(xiàn)過程包括步驟A至步驟G:
步驟A:在Java Web項(xiàng)目的系統(tǒng)配置文件web.xml中配置初始化加載類即StartUpServlet類;
當(dāng)Java Web項(xiàng)目的Web服務(wù)器啟動時(shí),首先需要定制初始化參數(shù)具體的需要?jiǎng)?chuàng)建Servlet的一個(gè)實(shí)例對象StartUpServlet,即在系統(tǒng)配置文件web.xml中配置Servlet的名字以及Servlet的訪問地址(一個(gè)定制URL),并配置Servlet-name子元素以及Servlet-class子元素,在Servlet-name子元素配置名稱StartUpServlet,在Servlet-class子元素配置項(xiàng)目路徑。StartUpServlet類在項(xiàng)目啟動時(shí)被調(diào)用,通過調(diào)用getServletConfig().以及getInitParameter("param1")獲得參數(shù)名param1對應(yīng)的值。
步驟B:配置properties屬性配置文件;
Java中的properties文件是一種屬性配置文件,主要用于表達(dá)Java Web項(xiàng)目的配置信息,文件類型為.properties,格式為文本文件,properties文件的內(nèi)容是“鍵-值”的格式,在properties配置文件中,可以用“#”來做注釋,properties配置文件在Java編程中用到的地方很多,此文件方便維護(hù),操作很方便。
本發(fā)明實(shí)施例在封裝properties屬性配置文件之前需要配置properties屬性配置文件,properties屬性配置文件的內(nèi)容格式是“鍵-值”的格式,即每個(gè)參數(shù)配置成參數(shù)名和參數(shù)值一一對應(yīng)的方式,其中參數(shù)名作為“鍵-值”對中的鍵,參數(shù)值作為“鍵-值”對中的鍵對應(yīng)的值。參見圖2,例如isSynchRes、isSynchOrg、isSynchUser是鍵,而這些鍵對應(yīng)的值均為:false。因而對于系統(tǒng)中常用的參數(shù)都可以按“鍵-值”的格式配置在properties屬性配置文件中,這樣在封裝后,可以方便的調(diào)用。
步驟C:定義一個(gè)空的靜態(tài)Map接口;
Map為封裝properties屬性配置文件解析后的所有數(shù)據(jù)。在Java的util工具包中包含了Java中某些最常用的類,最常用的集合類之一是Map,Map提供了一種更常用的元素存儲方法,Map提供鍵對象key到值對象value的映射,可以通過“鍵”查找“值”。一個(gè)Map接口中不能包含相同的key,每個(gè)key只能映射一個(gè)value。
如圖2所示,properties文件中的isSynchRes、isSynchOrg等為Map的key值,false、true等數(shù)據(jù)為Map的value值。
步驟D:具體獲取項(xiàng)目路徑;
通過步驟A中的描述web.xml配置的初始化StartUpServlet類,調(diào)用初始化方法獲取Java Web項(xiàng)目的項(xiàng)目路徑,具體是在項(xiàng)目啟動時(shí),調(diào)用StartUpServlet類的ServletConfig對象的getInitParameter方法獲取步驟A中配置的項(xiàng)目路徑。其中,ServletConfig從一個(gè)Servlet類被實(shí)例化后,對任何客戶端在任何時(shí)候的訪問都有效,但僅對本Servlet類有效,一個(gè)Servlet的ServletConfig對象不能被另一個(gè)Servlet類訪問。即ServletConfig對象與StartUpServlet類之間存在一一對應(yīng)的關(guān)系。
具體的ServletConfig對象通過調(diào)用getInitParameter("syspath")獲取的元素<init-param>配置的參數(shù)信息,在系統(tǒng)配置文件web.xml中,<servlet>元素內(nèi)部使用<init-param>子元素來為Servlet配置初始化參數(shù)。參數(shù)syspath表示項(xiàng)目路徑。
步驟E:獲取properties屬性配置文件;
根據(jù)步驟D獲取的Java Web項(xiàng)目的項(xiàng)目路徑,查詢步驟B所配置的 properties屬性配置文件的路徑,找到properties屬性配置文件。
步驟F:讀取properties屬性配置文件并封裝成靜態(tài)Map;
通過步驟E查到的properties屬性配置文件,通過文件讀取類即FileInputStream類讀取properties文件獲得properties文件的字節(jié)輸入流,調(diào)用屬性文件解析類即Properties類的load方法解析此字節(jié)輸入流,從字節(jié)輸入流中讀取屬性列表(即鍵-值對)。通過keySet()獲取鍵-值對的key值,通過Properties類getProperty方法獲取value值。通過步驟C中創(chuàng)建的空的Map封裝key值與value值。
這里的FileInputStream類的作用是以流的形式讀取properties屬性配置文件,即讀取properties文件,得到properties文件字節(jié)輸入流。
這里的Properties類具體是指Java.util.Properties類,是對properties這種配置文件的映射,可以操作properties屬性配置文件。針對key-value這種properties屬性配置文件,用load方法就能直接映射成Map,properties類實(shí)現(xiàn)Map接口,它是用Map來存儲key-value數(shù)據(jù),通過key的方式來獲取對應(yīng)value。
用到的Properties類的方法包括:
1.load(InputStream inStream)
從字節(jié)輸入流中讀取屬性列表(即鍵-值對)。通過對上述properties屬性配置文件進(jìn)行裝載來獲取該文件中的所有鍵-值對,以供getProperty(String key)來搜索。
2.getProperty(String key)
用指定的鍵在FileInputStream處理后獲得的屬性列表中搜索屬性。也就是通過參數(shù)key,搜索得到key所對應(yīng)的value。
步驟G,調(diào)用靜態(tài)Map獲取properties屬性配置文件的內(nèi)容;
當(dāng)經(jīng)過步驟F將properties屬性配置文件的內(nèi)容(所有的鍵-值對)封裝完成后,項(xiàng)目運(yùn)行時(shí),可以直接通過調(diào)用Map接口來獲取properties屬性配置文件的內(nèi)容,即直接通過Map接口key值獲取value值,從而找到所用的參數(shù)。不需要頻繁讀取properties屬性配置文件,不需要再次進(jìn)行解析,因而可以大大提高程序的效率,加快項(xiàng)目開發(fā)的進(jìn)度,節(jié)省時(shí)間。
由上可知,本發(fā)明一個(gè)實(shí)施例的調(diào)用屬性配置文件中內(nèi)容的方法只需在項(xiàng)目初始化封裝一次properties文件(即將properties配置文件封裝到Map接口中),后續(xù)就可以通過直接通過Map調(diào)取所要properties配置文件中的所有參數(shù),不需要重新解析properties文件,使得程序的效率更高。
圖3是本發(fā)明一個(gè)實(shí)施例的一種調(diào)用屬性配置文件中內(nèi)容的裝置的框圖,參見圖3,本實(shí)施例的這種調(diào)用屬性配置文件中內(nèi)容的裝置300包括:
獲取單元310,用于查找項(xiàng)目的項(xiàng)目路徑,根據(jù)所述項(xiàng)目路徑找到屬性配置文件;
解析單元320,用于讀取并解析所述屬性配置文件,獲得所述屬性配置文件中的內(nèi)容;
封裝單元330,將得到的所述屬性配置文件中的內(nèi)容封裝到預(yù)先定義的Map接口里;
調(diào)用單元340,通過調(diào)用所述Map接口,來調(diào)用所述屬性配置文件中的內(nèi)容。
在本實(shí)施例中,獲取單元310,具體用于在項(xiàng)目啟動時(shí),通過所述項(xiàng)目的初始化類獲得初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到屬性配置文件。
具體的,在Java Web項(xiàng)目啟動時(shí),運(yùn)行Servlet類,通過所述Servlet類的ServletConfig對象獲得當(dāng)前Servlet類的初始化參數(shù)信息,根據(jù)所述初始化參數(shù)信息找到所述Java Web項(xiàng)目的項(xiàng)目路徑,并根據(jù)所述項(xiàng)目路徑找到properties屬性配置文件。
在本實(shí)施例中,解析單元320,具體用于通過文件讀取類讀取并獲得所述屬性配置文件的字節(jié)輸入流;
調(diào)用屬性文件解析類來解析所述字節(jié)輸入流得到所述屬性配置文件中的內(nèi)容。
具體的,通過FileInputStream類讀取并獲得所述properties屬性配置文件的字節(jié)輸入流;
調(diào)用properties類來解析所述字節(jié)輸入流得到所述properties屬性配置文 件中的內(nèi)容。
在本實(shí)施例中,該裝置還包括:
Map接口定義單元,用于在項(xiàng)目的工具包下定義一個(gè)空的Map接口。即在所述Java Web項(xiàng)目的Java.util工具包下定義一個(gè)空的Map接口。
在本實(shí)施例中,properties屬性配置文件中的內(nèi)容包括:Java Web項(xiàng)目中用到的參數(shù);
參數(shù)按照鍵-值對的格式配置在properties屬性配置文件中。
在本實(shí)施例中,解析單元320包括:字節(jié)流讀取單元和字節(jié)流解析單元;
所述字節(jié)流讀取單元,用于通過文件讀取類讀取并獲得所述屬性配置文件的字節(jié)輸入流;
所述字節(jié)流解析單元,用于調(diào)用屬性配置文件解析類來解析所述字節(jié)輸入流得到所述屬性配置文件中的內(nèi)容。
具體的,通過所述Properties類的load(InputStream inStream)方法加載所述properties屬性配置文件的字節(jié)輸入流,并從所述字節(jié)輸入流中讀取鍵-值對;通過所述Properties類的keySet()方法獲取所述鍵-值對中的鍵,通過getProperty(String key)方法獲取所述鍵對應(yīng)的值。
在本實(shí)施例中,封裝單元330具體用于,將解析得到的屬性配置文件中所有的鍵-值對一一賦值給Map接口。
需要說明的是,本發(fā)明實(shí)施例的這種調(diào)用屬性配置文件中內(nèi)容的裝置是和前述的調(diào)用屬性配置文件中內(nèi)容的方法相對應(yīng)的,因而本實(shí)施例中調(diào)用屬性配置文件中內(nèi)容的裝置的工作過程可以參見調(diào)用屬性配置文件中內(nèi)容的方法部分的相關(guān)具體說明,在此不再贅述。
綜上所述,本發(fā)明實(shí)施例的這種調(diào)用屬性配置文件中內(nèi)容的方法和裝置,通過初始化Java Web項(xiàng)目時(shí)將properties屬性配置文件的內(nèi)容封裝到Map接口里,后續(xù)使用時(shí)通過直接調(diào)用map接口來獲取properties屬性配置文件中的內(nèi)容,只需初始化時(shí)封裝一次properties屬性配置文件,項(xiàng)目啟動后就可以通過Map接口調(diào)取所用的properties文件中的內(nèi)容,不需要二次解析properties文件等其它操作,使得程序的效率更高,并且配置實(shí)現(xiàn)簡單、使用方便,達(dá) 到性能高效,加快開發(fā)進(jìn)度節(jié)省時(shí)間的有益效果。
需要說明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。