<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Servlet傳遞數據方式 ### 基本概述 ????Servlet傳遞數據的方式有很多,這里提供五種方式: 1、靜態變量 2、HttpServletResponse的sendRedirect()方法 3、HttpServletRequest的getRequestDispatch()方法 4、HttpServletRequest的getSession()方法 5、HttpServletRequest的setAttribute()方法 ? ### 靜態變量 ????通過建立一個數據類來進行傳遞。 案例: public?class?MyData{ ????public?static?String?data; //通過使用該類來實現數據傳遞 } ? ### HttpServletResponse的sendRedirect()方法 ????sendRedirect()方法是讓瀏覽器重定向到另一個鏈接。其內部原理是設置狀態碼為303,并設置相應的Location響應頭。 基本語法: response.sendRedirect("/Web應用名/資源名?uname="+username+"&pwd="+password); response.sendRedirect(“servlet的地址?參數名=參數值&參數名=參數值...”); 參照值是String?,?參數名應當使用?字母組合 在接受數據的Servlet中: String?參數=request.getParameter(“參數名”); ? #### 基本原理圖 ![](https://box.kancloud.cn/2016-02-23_56cbf5ffafca2.jpg) PS:使用重定向不能使用PrintWrite,ServletOutputStream這樣的流。因為重定向已經將消息返回給瀏覽器,其數據流也就沒必要使用了。 ? ### HttpServletRequest的getRequestDispatch()方法 ????getRequestDispatch()方法是使WEB服務器從當前Servlet轉發到當前應用下的另一個Servlet。 基本語法: request.getRequestDispatcher(資源地址).forward(request,response); 資源地址:不需要項目名。因為它只能在WEB服務器內部轉發。 ? #### 基本原理圖 ![](https://box.kancloud.cn/2016-02-23_56cbf5ffcd019.jpg) PS:getRequestDispatcher()請求轉發可以一直轉發下去,只要最終會處理并給服務器相應內容就行了。而且請求轉發不會改變瀏覽器的URL,sendRedirect()會改變URL。 注意事項: 1、使用forward不能轉發到該WEB應用外的URL 2、因為forward發生在文本服務器內,所以Servlet1、Servlet2等等,只要一直轉發,使用的都是相同的request和response ### HttpServletRequest的getSession()方法 ? ? getSession()方法會獲取一個會話,這個內容會在另一篇博客會話技術中詳細說明。 基本語法: 1、放入session:request.getSession.setAttribute("loginUser",username);? 2、取出session:request.getSession.getAttribute("loginUser"); PS:該方法可以傳遞對象 案例: 放入: User?user=?new?User(); user.setName(“zs”); user.setPassWord(“123”); request.getSession.setAttribute("userObj",userObj);? 取出: User?user=(User)request.getSession.getAttribute(“userObj”); ? ### HttpServletRequest的setAttribute()方法 ? ? setAttribute()方法可以設置一個鍵值對,該鍵值對在該request的有效期內都可以使用。相應的還有removeAttribute()注銷鍵值對的方法。該方法經常和getRequestDispatch()一起使用。 基本語法: setAttribute(name,?value); ? PS:request的Attribute在一次請求中有效。一次請求:沒有將響應消息返回給瀏覽器就視為一次請求。 ### 比較sendRedirect()和forward(request,response) 1、sendRedirect()重定向,forward()轉發 2、實際發生的位置不一樣 ????sendRedirect?發生在瀏覽器 ????forward?發生在web服務器 3、使用用法不一樣 request.getRequestDispatcher(“/資源URI”).forward(request,response) response.sendRedirect(“/web應用/資源URI”); 4、能夠去URL范圍不一樣 sendRedirect可以去任意URL forward?只能去當前的WEB應用的資源 ? ? ----------參考《韓順平.細說Servlet》
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看