黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Servlet教程

Servlet請求轉(zhuǎn)發(fā)RequestDispatcher接口

當(dāng)一個 Web 資源收到客戶端的請求后,如果希望服務(wù)器通知另外一個資源處理請求,那么這時可以通過 RequestDispatcher 接口的實例對象實現(xiàn)。ServletRequest 接口中定義了一個獲取 RequestDispatcher 對象的方法,如表 1 所示。

表 1 獲取 RequestDispatcher 對象的方法

方法聲明

功能描述

RequestDispatcher getRequestDispatcher (String path)

返回封裝了某條路徑所指定資源的 RequestDispatcher 對象。其中,參數(shù) path 必須以“/”開頭,用于表示當(dāng)前 Web 應(yīng)用的根目錄。需要注意的是,WEB-INF 目錄中的內(nèi)容對 RequestDispatcher 對象也是可見的。因此,傳遞給 getRequestDispatcher(String path) 方法的資源可以是 WEB-INF 目錄中的文件

獲取到 RequestDispatcher 對象后,最重要的工作就是通知其他 Web 資源處理當(dāng)前的 Servlet 請求,為此,RequestDispatcher 接口定義了兩個相關(guān)方法,如表 2 所示。

表 2 RequestDispatcher 接口的方法

方法聲明

功能描述

forward(ServletRequest request,ServletResponse response)

該方法用于將請求從一個 Servlet 傳遞給另一個 Web 資源。在 Servlet 中,可以對請求做一個初步處理,然后通過調(diào)用這個方法,將請求傳遞給其他資源進行響應(yīng)。需要注意的是,該方法必須在響應(yīng)提交給客戶端之前被調(diào)用,否則將拋出 IllegalStateException 異常

include(ServletRequest request,ServletResponse response)

該方法用于將其他的資源作為當(dāng)前響應(yīng)內(nèi)容包含進來

請求轉(zhuǎn)發(fā)

在 RequestDispatcher 接口中,forward() 方法可以實現(xiàn)請求轉(zhuǎn)發(fā),include() 方法可以實現(xiàn)請求包含,本節(jié)將以請求轉(zhuǎn)發(fā)為例,講解 forward() 方法的使用。

在 Servlet 中,如果當(dāng)前 Web 資源不想處理請求,則可以通過 forward() 方法將當(dāng)前請求傳遞給其他的 Web 資源進行處理,這種方式稱為請求轉(zhuǎn)發(fā)。請求轉(zhuǎn)發(fā)的工作原理如圖 1 所示。

從圖 1 中可以看出,當(dāng)客戶端訪問 Servlet1 時,可以通過 forward() 方法將請求轉(zhuǎn)發(fā)給其他 Web 資源,其他 Web 資源處理完請求后,直接將響應(yīng)結(jié)果返回到客戶端。

了解了 forward() 方法的工作原理后,下面通過案例演示 forward() 方法的使用。在 servletDemo02 項目的 com.mengma.request 包中創(chuàng)建一個名為 RequestForwardServlet 的 Servlet 類,該類使用 forword() 方法將請求轉(zhuǎn)發(fā)到一個新的 Servlet 頁面,如下所示。

圖 1 forward() 方法的工作原理

package com.mengma.servlet;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class RequestForwardServlet extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setAttribute("username", "張三");    // 將數(shù)據(jù)存儲到request對象中
        RequestDispatcher dispatcher = request.getRequestDispatcher("/ResultServlet");
        dispatcher.forward(request,response);
    }
    public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {
        doGet(request,response);
    }
}

在 RequestForwardServlet 中,通過使用 forward() 方法,將當(dāng)前 Servlet 的請求轉(zhuǎn)發(fā)到 ResultServlet 頁面,在 com.mengma.request 包中編寫一個名為 ResultServlet 的 Servlet 類,該類用于獲取 RequestForwardServlet 類中存儲在 request 對象中的數(shù)據(jù)并輸出,ResultServlet 類的代碼實現(xiàn)如下所示。

package com.mengma.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ResultServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        String username = (String) request.getAttribute("username");
        if (username != null) {
            out.println("用戶名:" + username + "<br/>");
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

啟動 Tomcat 服務(wù)器,在瀏覽器的地址欄中輸入地址 http://localhost:8080/servletDemo02/RequestForwardServlet 訪問 RequestForwardServlet,瀏覽器的顯示結(jié)果如圖 2 所示。

圖 2 運行結(jié)果

從圖 2 中可以看出,地址欄中顯示的仍然是 RequestForwardServlet 的請求路徑,但是瀏覽器卻顯示出了 ResultServlet 中要輸出的內(nèi)容。這是因為請求轉(zhuǎn)發(fā)是發(fā)生在服務(wù)器內(nèi)部的行為,從 RequestForwardServlet 到 ResultServlet 屬于一次請求,在一次請求中是可以使用 request 屬性進行數(shù)據(jù)共享的。

全部教程
主站蜘蛛池模板: 日日碰狠狠添天天爽爽爽 | 欧美老妇69交 | 天天操天天操天天操天天操 | 一区二区三区在线 | 日本 | 国产精品一级 | 波多野结衣在线播放视频 | 欧美狠狠入鲁的视频极速 | 中文字幕第一页在线视频 | 亚洲一本视频 | 日日碰狠狠添天天爽五月婷 | 欧美刺激性大交 | 欧美成人精品一区二区三区 | 久久精品国产精品青草不卡 | 成年人在线免费看视频 | 久久99一区 | 欧美一级做一级做片性十三 | 亚1洲二区三区四区免费 | 1000部羞羞视频在线看视频 | 欧美精品www | 美女黄的免费 | 亚洲丝袜第一页 | 毛片网站网址 | 亚洲免费视频观看 | 最近2019免费中文字幕8 | 久久久久久久久网站 | 成年人网站在线观看免费 | 中文字幕在线观看亚洲日韩 | 黄网站在线播放视频免费观看 | 亚洲欧美视频在线观看 | 午夜琪琪| 在线中文字幕网站 | free性video另类 | 亚洲专区区免费 | 美女视频黄.免费网址 | 日韩欧美久久一区二区 | 天堂网2021天堂手机版 | 日韩在线观看内窥镜 | 韩国xxxx色视频在线观看 | 欧美激情αv一区二区三区 欧美激情xxxx | 麻豆国产在线视频 | 成人三级在线 |