亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解

 更新時間:2023年05月06日 11:02:37   作者:wei_shuo  
這篇文章主要介紹了關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解,請求的轉(zhuǎn)發(fā),是指服務(wù)器收到請求后,從一個服務(wù)器端資源跳轉(zhuǎn)到同一個服務(wù)器端另外一個資源的操作,需要的朋友可以參考下

轉(zhuǎn)發(fā)

轉(zhuǎn)發(fā)與頁面跳轉(zhuǎn)

轉(zhuǎn)發(fā)

  • 轉(zhuǎn)發(fā)的作用在服務(wù)器端,將請求發(fā)送給服務(wù)器上的其他資源,以共同完成一次請求的處理

頁面跳轉(zhuǎn)

  • 使用forward跳轉(zhuǎn)時,是在服務(wù)器內(nèi)部跳轉(zhuǎn),地址欄不發(fā)生變化,屬于同一次請求

調(diào)用業(yè)務(wù)邏輯的Servlet中,編寫代碼:

request.getRequestDispatcher("/目標(biāo)URL-pattern").forward(request,response);
//跳轉(zhuǎn)轉(zhuǎn)發(fā)到login.jsp
req.getRequestDispatcher("login.jsp").forward(req,resp);

數(shù)據(jù)傳遞

request作用域

  • 擁有存數(shù)據(jù)的空間,作用范圍是一次請求有效(一次請求可以經(jīng)過多次轉(zhuǎn)發(fā))
    • 可以將數(shù)據(jù)存入request后,在一次請求過程中的任何位置進(jìn)行獲取
    • 可以傳遞數(shù)據(jù)(基本數(shù)據(jù)類型,對象,數(shù)組,集合等)

存數(shù)據(jù)

以鍵值對的形式存儲在request作用域中,key為String類型,value為Object類型JSP內(nèi)置對象session和request都有這個方法
request.setAttribute(key,value);

取數(shù)據(jù)

通過String類型的key訪問Object類型的value
request.getAttribute(key)

存取數(shù)據(jù)

//request作用域存儲數(shù)據(jù)
req.setAttribute("admins",adminList);
//request作用取數(shù)據(jù)
request.getAttribute("admins");

重定向

重定向作用在客戶端,客戶端請求發(fā)送給服務(wù)器后,服務(wù)器響應(yīng)給客戶端一個新的請求地址,客戶端重新發(fā)送新的請求

重定向與頁面跳轉(zhuǎn)

調(diào)用業(yè)務(wù)邏輯的Servlet中,編寫代碼:

// response.sendRedirect("目標(biāo)URL");
resp.sendRedirect("index.jsp");		//重定向跳轉(zhuǎn)到index.jsp頁面

數(shù)據(jù)傳遞

sendRedirect跳轉(zhuǎn)時,地址欄發(fā)生改變,代表客戶端重新發(fā)送請求,屬于兩次請求

  • response沒有作用域,兩次request請求中的數(shù)據(jù)無法共享

傳遞數(shù)據(jù)

  • resp.sendRedirect(“URL”);
  • 通過URl的拼接進(jìn)行數(shù)據(jù)傳遞 “網(wǎng)頁地址?username=tom”;
  • response傳遞數(shù)據(jù)只能是String類型

獲取數(shù)據(jù)

  • request.getParameter(“username”);
//傳遞數(shù)據(jù)
resp.sendRedirect("/WebProject_war_exploded/b?username=tom");   //傳遞數(shù)據(jù)為String類型,明文傳遞
//獲取數(shù)據(jù)
String username = req.getParameter("username");

轉(zhuǎn)發(fā)與重定向的區(qū)別

轉(zhuǎn)發(fā)重定向
轉(zhuǎn)發(fā)使用的是getRequestDispatcher()方法重定向使用的是sendRedirect()方法
瀏覽器URL的地址欄不變瀏覽器URL的地址欄改變
轉(zhuǎn)發(fā)是服務(wù)器行為重定向是客戶端行為
轉(zhuǎn)發(fā)是瀏覽器只做了一次訪問請求重定向是瀏覽器做了至少兩次的訪問請求
轉(zhuǎn)發(fā)2次跳轉(zhuǎn)之間傳輸?shù)男畔⒉粫G失重定向2次跳轉(zhuǎn)之間傳輸?shù)男畔G失(request范圍)
重定向的第二個請求一定是GET

轉(zhuǎn)發(fā)和重定向總結(jié):

當(dāng)兩個Servlet需要傳遞數(shù)據(jù)時,選擇forward轉(zhuǎn)發(fā),不建議使用sendRedirect轉(zhuǎn)發(fā),因?yàn)閟endRedirect是明文傳遞不安全

Servlet生命周期(四階段)

Servlet 生命周期

Servlet 生命周期可被定義為從創(chuàng)建直到毀滅的整個過程。以下是 Servlet 遵循的過程:

  • Servlet 初始化后調(diào)用 init () 方法
  • Servlet 調(diào)用 service() 方法來處理客戶端的請求
  • Servlet 銷毀前調(diào)用 destroy() 方法
  • 最后,Servlet 是由 JVM 的垃圾回收器進(jìn)行垃圾回收的

在這里插入圖片描述

實(shí)例化

用戶第一次訪問Servlet是,由容器調(diào)用Servlet的構(gòu)造器創(chuàng)建具體的Servlet對象,也可以啟動容器后立刻創(chuàng)建實(shí)例,使用如下代碼可以設(shè)置Servlet是否在服務(wù)器啟動時就創(chuàng)建

  • 只執(zhí)行一次

初始化

初始化階段,init()方法會被調(diào)用,這個方法在javax.servlet.Servlet接口中定義,其中,方法以一個ServletConfig類型的對象作為參數(shù)

  • init方法只被執(zhí)行一次

服務(wù)

客戶端有一個請求時,容器會將請求ServletRequest與響應(yīng)ServletRequest對象轉(zhuǎn)給Servlet,以參數(shù)的形式傳給service方法

  • 此方法會執(zhí)行多次

銷毀

Servlet容器(Tomcat)停止或者重新啟動(Tomcat)都會引起銷毀Servlet對象并調(diào)用destroy方法

  • destroy方法執(zhí)行一次

實(shí)例:

package com.woniu.servlet2;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet(value = "/ls")
public class LifeServlet implements Servlet {
    public LifeServlet(){
        System.out.println("1.實(shí)例化");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2.初始化");
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3.提供服務(wù),接受請求,響應(yīng)結(jié)果");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
        System.out.println("4.銷毀");
    }
}
重啟或停止Tomcat即會輸出銷毀

在這里插入圖片描述

到此這篇關(guān)于關(guān)于Javaweb的轉(zhuǎn)發(fā)和重定向詳解的文章就介紹到這了,更多相關(guān)Javaweb的轉(zhuǎn)發(fā)和重定向內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java二分查找算法實(shí)現(xiàn)代碼實(shí)例

    Java二分查找算法實(shí)現(xiàn)代碼實(shí)例

    這篇文章主要介紹了Java二分查找算法實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java Arrays工具類實(shí)例詳解

    java Arrays工具類實(shí)例詳解

    這篇文章主要介紹了java Arrays工具類實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行

    IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行

    這篇文章主要介紹了IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行,需要的朋友可以參考下
    2021-01-01
  • SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證

    本文主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 從0開始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐

    從0開始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐

    這篇文章主要介紹了從0開始學(xué)習(xí)大數(shù)據(jù)之java spark編程入門與項(xiàng)目實(shí)踐,結(jié)合具體入門項(xiàng)目分析了大數(shù)據(jù)java spark編程項(xiàng)目建立、調(diào)試、輸出等相關(guān)步驟及操作技巧,需要的朋友可以參考下
    2019-11-11
  • Java連接MySQL數(shù)據(jù)庫命令行程序過程

    Java連接MySQL數(shù)據(jù)庫命令行程序過程

    SQL編程包括兩種形式,一種是過程化編程,主要通過數(shù)據(jù)庫交互式工具,通過存儲過程、觸發(fā)器、函數(shù)等形式的編程;另一種是嵌入式SQL編程,將SQL語句嵌入到高級開發(fā)語言,完成數(shù)據(jù)的各種操作
    2021-10-10
  • Shiro中session超時頁面跳轉(zhuǎn)的處理方式

    Shiro中session超時頁面跳轉(zhuǎn)的處理方式

    這篇文章主要介紹了Shiro中session超時頁面跳轉(zhuǎn)的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Java中的pinpoint1.8.5安裝及使用指南

    詳解Java中的pinpoint1.8.5安裝及使用指南

    pinpoint是開源在github上的一款A(yù)PM監(jiān)控工具,它是用Java編寫的,用于大規(guī)模分布式系統(tǒng)監(jiān)控。這篇文章主要介紹了pinpoint1.8.5安裝及使用指南,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Java線程中sleep和wait的區(qū)別詳細(xì)介紹

    Java線程中sleep和wait的區(qū)別詳細(xì)介紹

    Java中的多線程是一種搶占式的機(jī)制,而不是分時機(jī)制。搶占式的機(jī)制是有多個線程處于可運(yùn)行狀態(tài),但是只有一個線程在運(yùn)行
    2012-11-11
  • java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖實(shí)例代碼

    java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java easyUI實(shí)現(xiàn)自定義網(wǎng)格視圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10

最新評論