您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java Web中ServletContext對象怎么應用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java Web中ServletContext對象怎么應用”吧!
Web 應用中的所有 Servlet 共享同一個 ServletContext 對象,不同 Servlet 之間可以通過 ServletContext 對象實現數據通訊,因此 ServletContext 對象也被稱為 Context 域對象。
域對象是服務器在內存上創建的存儲空間,該空間用于不同動態資源(例如 Servlet、JSP)之間傳遞與共享數據。
String | getInitParameter(String name) | 根據初始化參數名 name,返回對應的初始化參 數值。 |
Enumeration | getInitParameterNames() | 返回 Web 應用所有上下文初始化參數名的枚舉 集合,如果沒有上下文初始化參數,則返回一個空的枚舉集合。 |
1)通過 GenericServlet 提供的 getServletContext() 方法
//通過 GenericServlet的getServletContext方法獲取ServletContext對象 ServletContext servletContext = this.getServletContext();
2)通過 ServletConfig 提供的 getServletContext() 方法
//通過 ServletConfig的 getServletContext方法獲取ServletContext對象 ServletContext servletContext = this.getServletConfig().getServletContext();
//通過 Config的 getServletContext方法獲取ServletContext對象 ServletContext context = config.getServletContext();
3)通過 HttpSession 提供的 getServletContext() 方法
//通過 Session的 getServletContext方法獲取ServletContext對象 ServletContext context = req.getSession().getServletContext();
4)通過 HttpServletRequest 提供的 getServletContext() 方法
//通過 HttpServletRequest的 getServletContext方法獲取ServletContext對象 ServletContext servletContext = req.getServletContext();
<servlet> <init-param> <param-name>name</param-name> <param-value>Lungcen</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>110120130</param-value> </init-param> </servlet>
<context-param> <param-name>姓名</param-name> <param-value>Lungcen</param-value> </context-param> <context-param> <param-name>年齡</param-name> <param-value>19</param-value> </context-param>
Enumeration<String> names = this.context.getInitParameterNames(); while (names.hasMoreElements()) { String s = names.nextElement(); writer.write(s + "->" + context.getInitParameter(s) + "<br/>"); }
不 同 點 | ServletContext 的屬性 | 上下文初始化參數 |
創 建 方 式 | ServletContext 的屬性通過調用 ServletContext 接口的 setAttribute() 方法 創建 | 上下文初始化參數通過 web.xml 使用 元素配置 |
可 進 行 的 操 作 | ServletContext 的屬性可以通過 ServletContext 接口的方法進行讀取、新 增、修改、移除等操作 | 上下文初始化參數在容器啟動后只能被 讀取,不能進行新增、修改和移除操作 |
生 命 周 期 | ServletContext 中屬性的生命周期從創建開 始,到該屬性被移除(remove)或者容器關 閉結束 | 上下文初始化參數的生命周期,從容器 啟動開始,到 Web 應用被卸載或容器 關閉結束 |
作 用 | 使用 ServletContext 中的屬性可以實現 Servlet 之間的數據通訊 | 使用上下文初始化參數無法實現數據通訊 |
在 Servlet 中,調用 ServletContext 接口的 setAttribute() 方法可以創建一些屬性,這些屬性被存 放在 ServletContext 對象中。應用中所有 Servlet 都可以對這些屬性進行訪問和操作,通過它們可以實現應用內不同 Servlet 之間的數據通訊。
void | setAttribute(String name, Object object) | 把一個 Java 對象與一個屬性名綁定,并將它作為一個屬 性存放到 ServletContext 中。 參數 name 為屬性名,參數 object 為屬性值。 |
void | removeAttribute(String name) | 從 ServletContext 中移除屬性名為 name 的屬性。 |
Object | getAttribute(String name) | 根據指定的屬性名 name,返回 ServletContext 中對應 的屬性值。 |
package com.zpark.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet(urlPatterns = "/LLL.do") public class MyServlet04 extends HttpServlet { @Override public void init() throws ServletException { getServletContext().setAttribute("count", 0); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Integer count = (Integer) getServletContext().getAttribute("count"); count++; getServletContext().setAttribute("count", count); resp.setContentType("text/html;charset=utf-8"); PrintWriter writer = resp.getWriter(); writer.write("歡迎來到界面" + count); writer.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); doGet(req, resp); } }
package com.zpark.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet("/Lun5.do") public class MyServlet05 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter writer = resp.getWriter(); Integer count = (Integer) getServletContext().getAttribute("count"); writer.write("今天是一個好日子" + count); writer.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("utf-8"); doGet(req, resp); } }
感謝各位的閱讀,以上就是“Java Web中ServletContext對象怎么應用”的內容了,經過本文的學習后,相信大家對Java Web中ServletContext對象怎么應用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。