續前篇...
ServletConfig物件
- Servlet的配置物件,ServletConfig物件作用域只能在一個Servlet類中使用。每個Servlet類都維護一個ServletConfig物件。它的常用方法如下:
a) public String getInitParameter (String name): 返回包含指定初始化引數的值的 String,如果引數不存在,則返回 null。
b) public java.util.Enumeration
c) public String getServletName():返回撥用該方法的Servlet的例項的名稱。該Servlet例項的名稱可能是伺服器通過web應用web.xml來進行分配,或者沒有分配的話,那麼該名稱就是Servlet的類名稱。
d) public ServletContext getServletContext():返回一個ServletContext物件。
- 引數的初始化的作用在於Servlet啟動時需要的引數配置資訊。ServletConfig的在web應用中的web.xml配置是,哪個Servlet需要進行引數初始化,就在哪個
標籤裡配置。配置如下:
<servlet> <servlet-name>ConfigServletDemo</servlet-name> <servlet-class>com.lsh.servletconfig.demo.ConfigServletDemo</servlet-class> <!-- 以下初始化引數可以多配置 --> <init-param> <param-name>who</param-name> <param-value>Tom</param-value> </init-param> <init-param> <param-name>xixi</param-name> <param-value>abc</param-value> </init-param> </servlet>
在Servlet中呼叫該初始化引數的程式碼如下:
@Overridepublic void init(ServletConfig config) throws ServletException {//物件是Sevlet容器給的。this.config=config;}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//通過指定初始化引數的name獲得value值String value=config.getInitParameter("who");System.out.println(value);//列印Tom//獲得所有的初始化引數的value值Enumeration<String> enums=config.getInitParameterNames();while(enums.hasMoreElements()){String name=enums.nextElement();System.out.println(name+"::"+config.getInitParameter(name));}//獲得Servlet的名稱String serName=config.getServletName();System.out.println(serName);//}}
**IT鹹魚
**
微訊號|mu99908888
ServletContext物件
1. ServletContext物件:
-
在應用在被伺服器載入時就建立了一個ServletContext物件,每一個Web應用都有唯一的一個ServletContext物件。
-
即隨著伺服器的載入而出現,隨著伺服器的關閉而消失。
-
每次過程都是一個新的ServletContext物件。
2. ServletContext物件的獲得:
-
ServletContext物件是通過ServletConfig的getServletContext方法來獲得或者是通過父類的靜態方法getServletContext()方法直接獲得,建議使用這一種。
-
其實在ServletContext中是維護了一個Map<String,Object>物件(域物件)。
3. ServletConytext常用的方法如下
-
a) public Object getAttribute (String name) : 返回具有給定名稱的 servlet 容器屬性,如果不具有該名稱的屬性,則返回 null。
b) public void removeAttribute(String name) : 從 servlet 上下文中移除具有給定名稱的屬性。
c) public void setAttribute(String name, Object object):
-
將物件繫結到此 servlet 上下文中的給定屬性名稱。
-
如果已將指定名稱用於某個屬性,則此方法將使用新屬性替換具有該名稱的屬性。
-
如果值設定的是null,等同於removeAttribute()方法。
d) public String getRealPath(String path):
-
為給定虛擬路徑返回包含實際路徑的 String。
-
比如例如,可以通過對 "http://host/contextPath/index.html" 的請求使路徑 "/index.html" 返回伺服器檔案系統上(即JavaWeb應用的目錄層次)的絕對檔案路徑,其中 contextPath 是此 ServletContext 的上下文路徑。
-
找不到則此方法返回 null。
4.在Web應用中在web.xml的根元素下配置應用的全域性引數。配置內容如下:
<context-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </context-param>
在Servlet中獲得全域性引數的值的程式碼如下:
public class ServletContextDemo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //獲得web.xml中配置的全域性引數的值 String value1=context.getInitParameter("encoding"); System.out.println(value1); }}
5.多個Servlet之間的資料共享的實現,是通過ServletConext的兩個方法來實現的。資料共享即就是一個Servlet設定完資料後,另一個Servlet通過鍵來獲得值。
首先在一個Servlet設定整個web應用的共享資料,程式碼如下:
public class ServletContextSetData extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //設定應用的共享資料 context.setAttribute("name", "lisi"); resp.getOutputStream().write("put success".getBytes()); }}
設定完之後,我們就可以通過另一個Servlet類來獲取我們需要的共享資料的值,程式碼如下:
public class ServletContextSetData extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲得ServletContext物件 ServletContext context=getServletContext(); //設定應用的共享資料 context.setAttribute("name", "lisi"); resp.getOutputStream().write("put success".getBytes()); }}
如果看到這裡,說明你喜歡這篇文章,請 轉發、點贊。同時 標星(置頂)本公眾號可以第一時間接受到博文推送。
我知道你 “在看”
關注公眾號“IT鹹魚”學習更多有關知識。
獲取方法:
1、掃描下方二維碼並關注:IT鹹魚
2、在IT鹹魚對話方塊回覆關鍵詞:"資料" 一併奉上。
3、也可直接新增小編微信:mu99908888 領取