Java_喬曉鬆_Servlet--ServletContext的總結以及應用例項

我是喬同學發表於2012-10-22

ServletContext

WEB容器在啟動時,它會為每個WEB應用程式都建立一個對應的ServletContext物件,它代表當前web應用。

ServletConfig物件中維護了ServletContext物件的引用,開發人員在編寫servlet時,可以通過ServletConfig.getServletContext方法獲得ServletContext物件。

也可以使用 this.getServletContext方法

由於一個WEB應用中的所有Servlet共享同一個ServletContext物件,因此Servlet物件之間可以通過ServletContext物件來實現通訊。多個Servlet通過ServletContext物件實現資料共享。

ServletContext物件通常也被稱之為context域物件。(requestsessionpage

setAttribute(),getAttribute();

獲取WEB應用的初始化引數。

<context-param>

<param-name> data</param-name>

<param-value> xxxx</param-value>

</context-param>

實現Servlet的轉發。

RequestDispatcher rd = getServletContext().getRequestDispatcher(“/1.jsp”);

rd.forward(request,response);

如何把資料傳到 1.jsp?(可以通過request域,不能用context域)

ServletConfigServletContext的區別

整個Web應用只有一個ServletContext,在部署Web應用的時候,容器會建立這一個ServletContext物件,這個上下文對Web應用中的每個ServletJSP都可用。

Web應用中的各個Servlet都有自己的ServletConfig,它只對當前Servlet有效。

 

 

1. 寫出獲取ServletContext的兩種方式

2.使用ServletContext實現兩個Servlet資料共享

3.設定ServletContext初始化引數,然後對其之。

4. 編寫一個轉發

5.通過ServletContext讀取配置檔案的內容。(使用兩種方式)

6.通過一般的java類讀取配置檔案的內容。


//獲取ServletContext
ServletContext context1 = this.getServletConfig().getServletContext();
ServletContext context2 = this.getServletContext();


/使用ServletContext實現兩個Servlet資料共享
String value = "xiaosong";
this.getServletContext().setAttribute("namev", value);

String namevalue = (String) this.getServletContext().getAttribute("namev");
System.out.println(namevalue);


設定ServletContext初始化引數,然後對其之。
web.xml初始化程式碼:
/* <context-param>
    <param-name>data</param-name>
    <param-value>aaaaa</param-value>
  </context-param>*/
  
輸出程式碼 :System.out.println(this.getServletContext().getInitParameter("data"));


//轉發
this.getServletContext().setAttribute("username","xiaosong");
RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/index.jsp");
rd.forward(request, response);


//通過ServletContext讀取配置檔案的內容,方法一:
InputStream in = this.getServletContext().getResourceAsStream("WEB-INF/classes/db.properties");
Properties pro = new Properties();
pro.load(in);
String driver = pro.getProperty("driver");
String url = pro.getProperty("url");
String name = pro.getProperty("name");
String possword = pro.getProperty("possword");
System.out.println(driver+"..."+url+"..."+name+"..."+possword);

//通過ServletContext讀取配置檔案的內容,方法二:
String path = this.getServletContext().getRealPath("WEB-INF/classes/db.properties");
FileInputStream fis = new FileInputStream(path);
Properties pro1 = new Properties();
pro1.load(fis);
String driver1 = pro1.getProperty("driver");
String url1 = pro1.getProperty("url");
String name1 = pro1.getProperty("name");
String possword1 = pro1.getProperty("possword");
System.out.println(driver1+"..."+url1+"..."+name1+"..."+possword1);

//通過一般的java類讀取配置檔案的內容
InputStream in3 = Context2.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro3 = new Properties();
pro3.load(in3);
String driver3 = pro3.getProperty("driver");
String url3 = pro3.getProperty("url");
String name3 = pro3.getProperty("name");
String possword3 = pro3.getProperty("possword");
System.out.println(driver3+"..."+url3+"..."+name3+"..."+possword3);

相關文章