Servlet 使用ServletContext共享資料,讀取web.xml配置
阿新 • • 發佈:2018-12-06
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