1. 程式人生 > >Servlet 使用ServletContext共享資料,讀取web.xml配置

Servlet 使用ServletContext共享資料,讀取web.xml配置

ServletContext物件

  session和cookie,對於每一個請求使用者來說,都是不同的,因為要保證隱私安全。

  而有一些資料,可以讓所有使用者共享,此時就可以用ServletContext物件。只要在一個Servlet中設定了ServletContext屬性值,那麼本專案的中任意一個Servlet中都可以獲取到設定的屬性值。作用範圍是所有Servlet,而有效期是伺服器關閉之前。

public class TestServletContext extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		// 獲取Servlet的三種方式,獲取的ServletContext物件是相同的。
		//ServletContext context = this.getServletContext();
		//context = req.getSession().getServletContext();
		//ontext = this.getServletConfig().getServletContext();
		
		ServletContext context = this.getServletContext();
		
		// 設定屬性值setAttribute(String name, Object object)
		context.setAttribute("name", "張三");
		
		// 獲取屬性值,如果不存在,則返回null
		String name  = (String)context.getAttribute("name");
	}
}

  

 

使用ServletContext來獲取web.xml中的配置項

  之前講了可以使用Properties工具類來獲取配置檔案中的配置項,這裡,同樣可以使用ServletContext來實現。

  不過需要注意的是,ServletContext物件能夠讀取的配置項需要專門配置:

# 下面建立了兩個配置項,分別是name=張三,age=99
<context-param>
	<param-name>name</param-name>
	<param-value>張三</param-value>
</context-param>

<context-param>
	<param-name>age</param-name>
	<param-value>99</param-value>
</context-param>

  使用ServletContext讀取配置的例項:

ServletContext context = this.getServletContext();
String name = (String)context.getInitParameter("name");
int age = Integer.parseInt(context.getInitParameter("age"));
System.out.println("從web.xml讀取到全域性配置如下:\n" + "name :" + name + "\t age :" + age);

  執行結果如下:

從web.xml讀取到全域性配置如下:
name :張三	 age :99