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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 JavaWeb重定向和請求的轉(zhuǎn)發(fā)

JavaWeb重定向和請求的轉(zhuǎn)發(fā)

更新時間:2021-09-06 12:34:47 來源:動力節(jié)點 瀏覽1176次

1.什么是請求轉(zhuǎn)發(fā)和請求重定向?

請求轉(zhuǎn)發(fā): xxServlet收到請求,然后直接轉(zhuǎn)發(fā)給yyServlet,然后yyServlet返回給客戶端。整個過程中,客戶端發(fā)出一個請求,收到一個響應(yīng)。

重定向:xxServlet收到請求,然后發(fā)出一個響應(yīng)給客戶端,客戶端立即又發(fā)送一個請求訪問xxServlet中給的URL,即yyServlet的路徑,然后yyServlet給客戶端一個響應(yīng)。整個過程中,客戶端發(fā)出兩個請求,收到兩個響應(yīng)。

2. 請求轉(zhuǎn)發(fā)和請求重定向的實現(xiàn)方法

請求轉(zhuǎn)發(fā):利用RequestDispather接口中的forward方法實現(xiàn)請求轉(zhuǎn)發(fā)。

請求重定向:利用HttpServletResponse的sendRedirect方法實現(xiàn)請求重定向。

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

RequestDispather實例對象是由Servlet引擎創(chuàng)建的,它用于包裝一個要被其他資源調(diào)用的資源,(例如Servlet,HTML文件,JSP文件等),并可以通過其中的方法將客戶端的請求轉(zhuǎn)發(fā)給所包裝的資源。

示例代碼如下:

forwardTest.html

<!DOCTYPE html>
<html>
  <head>
    <title>forwardTest.html</title>     
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">     
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> 
  </head>   
  <body>
    <a href="http://localhost:8080/MyWebProject/forwardServlet">forward</a>
  </body>
</html>

forwardServlet.java

package forwardTest;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
public class forwardServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        System.out.println("forwardServlet's doGet");
        String path="testServlet";
        //1.調(diào)用HttpServletRequest的getRequestDispatcher()方法,調(diào)用時需要傳入轉(zhuǎn)發(fā)的地址;
        RequestDispatcher requestDispatcher=request.getRequestDispatcher(path);
        //2.調(diào)用HttpServletRequest的forward(request,response)方法進行請求的轉(zhuǎn)發(fā);
        requestDispatcher.forward(request,response);
    }
}

testServlet.java

package forwardTest; 
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 testServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out=response.getWriter();
        System.out.println("testServlet's doGet");
    }
}

運行forwardTest.html后,點擊超鏈接,控制臺輸出:

可以看出, forwardServlet收到客戶端的請求后,調(diào)用HttpServletRequest的getRequestDispatcher()方法,利用forward(request,response)方法進行請求轉(zhuǎn)發(fā),將請求直接轉(zhuǎn)發(fā)給testServlet,testServlet將響應(yīng)返回給客戶端。達(dá)到了請求轉(zhuǎn)發(fā)的目的。

(2)請求重定向

redirectServlet.java

package forwardTest;
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 redirectServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("redirectServlet's doGet");
        String path="testServlet";
        response.sendRedirect(path);
    }
}

執(zhí)行請求的重定向,直接調(diào)用response.sendRedirect(path)方法,path為重定向的地址。

3.請求的轉(zhuǎn)發(fā)和重定向的區(qū)別

本質(zhì)區(qū)別:請求的轉(zhuǎn)發(fā)只發(fā)出了一次請求,而重定向則發(fā)出了兩次請求。在瀏覽器的開發(fā)工具中可以看到請求的次數(shù):

具體的區(qū)別體現(xiàn)在:

(1)請求的轉(zhuǎn)發(fā):地址欄是初次發(fā)出請求的地址。

請求的重定向:地址欄不是初次發(fā)出請求的地址,為最后響應(yīng)的地址。

(2)請求轉(zhuǎn)發(fā):在最終的Servlet中,request和中轉(zhuǎn)的那個request是同一個對象。

請求的重定向:在最終的Servlet中,request和中轉(zhuǎn)的那個request不是同一個對象。

(3)請求轉(zhuǎn)發(fā):只能轉(zhuǎn)發(fā)給當(dāng)前web應(yīng)用的資源。

請求的重定向:可以重定向到任何資源。

(4)請求的轉(zhuǎn)發(fā):/代表的是當(dāng)前web應(yīng)用的根目錄。

請求的重定向:/代表的是當(dāng)前web站點的根目錄。

以上就是動力節(jié)點小編介紹的"JavaWeb重定向和請求的轉(zhuǎn)發(fā)",希望對大家有幫助,想了解更多可查看JavaWeb教程。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲综合欧美日韩 | 日韩精品中文字幕一区二区三区 | 亚洲第一视频在线播放 | 成人黄色在线观看视频 | 91国语精品自产拍在线观看性色 | a一级毛片免费高清在线 | 亚洲欧洲日产v特级毛片 | 国产成人综合日韩精品无 | 在线不卡一区二区三区日韩 | 欧美本道| 国产高清精品久久久久久久 | 中国黄色毛片 | 亚洲欧洲日本天天堂在线观看 | 韩国在线看 | 国产欧美91 | 琪琪午夜免费影院在线观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 91亚洲欧美综合高清在线 | 色播五月激情五月 | 国产色婷婷精品综合在线手机播放 | 中文字幕成人免费高清在线视频 | 人成免费在线视频 | 秋霞午夜一级理论片久久 | 精品福利影院 | 欧美精品束缚一区二区三区 | 欧美人猛交日本人xxx | 欧美日韩高清一区 | 黄色影视大全 | 日韩精品在线免费观看 | 欧美激情一区二区亚洲专区 | 国产乱人免费视频 | 久久青草国产精品一区 | 欧美天天射 | 国产精品一一在线观看 | aa毛片免费全部播放完整 | 一机黄色片| 欧美大片xxxxbbbb | 中文字幕在线免费观看 | 国产日韩欧美亚洲精品95 | 国产一卡二卡≡卡四卡无人 | 国产欧美日韩看片片在线人成 |