溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java?Web中ServletContext對(duì)象怎么應(yīng)用

發(fā)布時(shí)間:2023-04-26 11:47:16 來(lái)源:億速云 閱讀:61 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Java Web中ServletContext對(duì)象怎么應(yīng)用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java Web中ServletContext對(duì)象怎么應(yīng)用”吧!

     ServletContext對(duì)象

    Web 應(yīng)用中的所有 Servlet 共享同一個(gè) ServletContext 對(duì)象,不同 Servlet 之間可以通過(guò) ServletContext 對(duì)象實(shí)現(xiàn)數(shù)據(jù)通訊,因此 ServletContext 對(duì)象也被稱(chēng)為 Context 域?qū)ο蟆?/strong>

    域?qū)ο笫?a title="服務(wù)器" target="_blank" href="http://www.kemok4.com/">服務(wù)器在內(nèi)存上創(chuàng)建的存儲(chǔ)空間,該空間用于不同動(dòng)態(tài)資源(例如 Servlet、JSP)之間傳遞與共享數(shù)據(jù)。

     獲取上下文初始化參數(shù)的相關(guān)方法

    StringgetInitParameter(String name)根據(jù)初始化參數(shù)名 name,返回對(duì)應(yīng)的初始化參 數(shù)值。
    EnumerationgetInitParameterNames()返回 Web 應(yīng)用所有上下文初始化參數(shù)名的枚舉 集合,如果沒(méi)有上下文初始化參數(shù),則返回一個(gè)空的枚舉集合。

    創(chuàng)建ServletContext對(duì)象  

    1)通過(guò) GenericServlet 提供的 getServletContext() 方法

    //通過(guò) GenericServlet的getServletContext方法獲取ServletContext對(duì)象
    ServletContext servletContext = this.getServletContext();

    2)通過(guò) ServletConfig 提供的 getServletContext() 方法

    //通過(guò) ServletConfig的 getServletContext方法獲取ServletContext對(duì)象
    ServletContext servletContext = this.getServletConfig().getServletContext();
    //通過(guò) Config的 getServletContext方法獲取ServletContext對(duì)象
    ServletContext context = config.getServletContext();

    3)通過(guò) HttpSession 提供的 getServletContext() 方法

    //通過(guò) Session的 getServletContext方法獲取ServletContext對(duì)象
    ServletContext context = req.getSession().getServletContext();

    4)通過(guò) HttpServletRequest 提供的 getServletContext() 方法

    //通過(guò) HttpServletRequest的 getServletContext方法獲取ServletContext對(duì)象
    ServletContext servletContext = req.getServletContext();

    上下文初始化參數(shù)

    局部參數(shù)

        <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>

    全局參數(shù)

        <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>

     獲取ServletContext的全局參數(shù)

    Enumeration<String> names = this.context.getInitParameterNames();
            
            while (names.hasMoreElements())
            {
                String s = names.nextElement();
                writer.write(s + "->" + context.getInitParameter(s) + "<br/>");
            }

    ServletContext 屬性與上下文初始化參數(shù)對(duì)比

    不 同 點(diǎn)ServletContext 的屬性上下文初始化參數(shù)
    創(chuàng) 建 方 式ServletContext 的屬性通過(guò)調(diào)用 ServletContext 接口的 setAttribute() 方法 創(chuàng)建上下文初始化參數(shù)通過(guò) web.xml 使用 元素配置
    可 進(jìn) 行 的 操 作ServletContext 的屬性可以通過(guò) ServletContext 接口的方法進(jìn)行讀取、新 增、修改、移除等操作上下文初始化參數(shù)在容器啟動(dòng)后只能被 讀取,不能進(jìn)行新增、修改和移除操作
    生 命 周 期ServletContext 中屬性的生命周期從創(chuàng)建開(kāi) 始,到該屬性被移除(remove)或者容器關(guān) 閉結(jié)束上下文初始化參數(shù)的生命周期,從容器 啟動(dòng)開(kāi)始,到 Web 應(yīng)用被卸載或容器 關(guān)閉結(jié)束
    作 用使用 ServletContext 中的屬性可以實(shí)現(xiàn) Servlet 之間的數(shù)據(jù)通訊使用上下文初始化參數(shù)無(wú)法實(shí)現(xiàn)數(shù)據(jù)通訊

    實(shí)現(xiàn)數(shù)據(jù)通訊

    在 Servlet 中,調(diào)用 ServletContext 接口的 setAttribute() 方法可以創(chuàng)建一些屬性,這些屬性被存 放在 ServletContext 對(duì)象中。應(yīng)用中所有 Servlet 都可以對(duì)這些屬性進(jìn)行訪(fǎng)問(wèn)和操作,通過(guò)它們可以實(shí)現(xiàn)應(yīng)用內(nèi)不同 Servlet 之間的數(shù)據(jù)通訊。

    voidsetAttribute(String name, Object object)把一個(gè) Java 對(duì)象與一個(gè)屬性名綁定,并將它作為一個(gè)屬 性存放到 ServletContext 中。 參數(shù) name 為屬性名,參數(shù) object 為屬性值。
    voidremoveAttribute(String name)從 ServletContext 中移除屬性名為 name 的屬性。
    ObjectgetAttribute(String name)根據(jù)指定的屬性名 name,返回 ServletContext 中對(duì)應(yīng) 的屬性值。

    數(shù)據(jù)通訊的程序?qū)嵗?/h4>
    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("歡迎來(lái)到界面" + 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("今天是一個(gè)好日子" + count);
            writer.close();
        }
     
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
            resp.setCharacterEncoding("utf-8");
            doGet(req, resp);
        }
    }

    在瀏覽器中的操作

    Java?Web中ServletContext對(duì)象怎么應(yīng)用

    Java?Web中ServletContext對(duì)象怎么應(yīng)用

    感謝各位的閱讀,以上就是“Java Web中ServletContext對(duì)象怎么應(yīng)用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java Web中ServletContext對(duì)象怎么應(yīng)用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI