日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

请求转发与重定向的区别和执行流程

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 请求转发与重定向的区别和执行流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

請求轉發與重定向的區別和執行流程

文章目錄

  • 請求轉發與重定向的區別和執行流程
    • 1 請求轉發與重定向區別
    • 2 現實生活的例子
      • 2.1 重定向
      • 2.2 請求轉發
    • 3 重定向-流程圖、代碼、結果
      • 3.1 流程圖
      • 3.2 代碼BoyServlet
      • 3.3 代碼GirlServlet
      • 3.4 web.xml文件
      • 3.5 結果
    • 4 請求轉發-流程圖、代碼、結果
      • 4.1 請求轉發-流程圖
      • 4.2 代碼BoyServlet
      • 4.3 代碼GirlServlet
      • 4.4 web.xml文件
      • 4.5 結果

本文通過現實生活的例子引出重定向和請求轉發,通過圖解的方式講解了整執行流程,希望可以幫助到大家

1 請求轉發與重定向區別

序號問題重定向請求轉發
1第二次請求誰請求的?瀏覽器服務器
2瀏覽器發送了幾次請求?2次以上1次
3servlet可以共享request嗎?不可以可以
4地址欄是否發生改變?不是
5瀏覽器地址欄顯示的哪一次訪問地址?最后一次第一次
6可以跳轉到什么資源?任意資源項目內部
7第二次的請求路徑是?絕對路徑內部路徑

2 現實生活的例子

2.1 重定向


①:A對B說,幫忙拿下快遞
②:B對A說,沒有空,你找下C吧
③:A對C說,幫忙拿下快遞
④:C然后拿了快遞給A

2.2 請求轉發


①:A對B說,幫忙拿下快遞
②:第二步,B沒有空,直接找讓C幫A拿下快遞
③:C拿到了快遞并返回給A


3 重定向-流程圖、代碼、結果

3.1 流程圖

3.2 代碼BoyServlet

import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class BoyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 獲取請求攜帶的idString id = request.getParameter("id");System.out.println("A對B說:幫我拿下快遞,id號是:" + id);System.out.println("B對A說:我沒有空,你找下C");System.out.println("----分割線----");// 重定向方式1:response.setStatus(302);response.setHeader("location", "/redirect/girl");// 重定向方式2:(正常用此方法)// response.sendRedirect("/redirect/girl");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

3.3 代碼GirlServlet

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 GirlServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//設置瀏覽器解析的格式,否則瀏覽器會出現亂碼response.setContentType("text/html;charset=utf-8");//獲取請求攜帶的idString id = request.getParameter("id");System.out.println("A對C說,幫我拿下快遞,id號是:"+id);System.out.println("拿到快遞了");//獲取輸出流PrintWriter writer = response.getWriter();//將信息返回給瀏覽器writer.println("拿到快遞了");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

3.4 web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>redirect</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><description></description><display-name>BoyServlet</display-name><servlet-name>BoyServlet</servlet-name><servlet-class>com.redirect.BoyServlet</servlet-class></servlet><servlet-mapping><servlet-name>BoyServlet</servlet-name><url-pattern>/boy</url-pattern></servlet-mapping><servlet><description></description><display-name>GirlServlet</display-name><servlet-name>GirlServlet</servlet-name><servlet-class>com.redirect.GirlServlet</servlet-class></servlet><servlet-mapping><servlet-name>GirlServlet</servlet-name><url-pattern>/girl</url-pattern></servlet-mapping> </web-app>

3.5 結果

瀏覽器輸入

瀏覽器返回結果

控制臺打印結果


4 請求轉發-流程圖、代碼、結果

4.1 請求轉發-流程圖

4.2 代碼BoyServlet

import java.io.IOException; 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 BoyServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 獲取請求攜帶的idString id = request.getParameter("id");System.out.println("A對B說:幫我拿下快遞,id號是:" + id);System.out.println("B對A說:好的");System.out.println("----分割線----");//---后面B直接在服務器將請求轉發給C---//獲取轉發對象,后面括號指定了轉發的路徑RequestDispatcher dispatcher = request.getRequestDispatcher("/girl");//執行轉發功能,并將請求和響應一并轉發過去dispatcher.forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

4.3 代碼GirlServlet

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 GirlServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 設置瀏覽器解析的格式,否則瀏覽器會出現亂碼response.setContentType("text/html;charset=utf-8");// 獲取請求攜帶的idString id = request.getParameter("id");System.out.println("B對C說:幫A拿下快遞,id號是:" + id);System.out.println("拿到快遞了");// 獲取輸出流PrintWriter writer = response.getWriter();// 將信息返回給瀏覽器writer.println("拿到快遞了");}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);} }

4.4 web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>dispatcher</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><description></description><display-name>BoyServlet</display-name><servlet-name>BoyServlet</servlet-name><servlet-class>com.dispatcher.BoyServlet</servlet-class></servlet><servlet-mapping><servlet-name>BoyServlet</servlet-name><url-pattern>/boy</url-pattern></servlet-mapping><servlet><description></description><display-name>GirlServlet</display-name><servlet-name>GirlServlet</servlet-name><servlet-class>com.dispatcher.GirlServlet</servlet-class></servlet><servlet-mapping><servlet-name>GirlServlet</servlet-name><url-pattern>/girl</url-pattern></servlet-mapping> </web-app>

4.5 結果

瀏覽器輸入

瀏覽器返回結果

控制臺結果

總結

以上是生活随笔為你收集整理的请求转发与重定向的区别和执行流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。