最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(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ā),因為sendRedirect是明文傳遞不安全

Servlet生命周期(四階段)

Servlet 生命周期

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

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

在這里插入圖片描述

實例化

用戶第一次訪問Servlet是,由容器調(diào)用Servlet的構(gòu)造器創(chuàng)建具體的Servlet對象,也可以啟動容器后立刻創(chuàng)建實例,使用如下代碼可以設(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í)行一次

實例:

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.實例化");
    }
    @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)文章

  • 詳解Spring boot+CXF開發(fā)WebService Demo

    詳解Spring boot+CXF開發(fā)WebService Demo

    這篇文章主要介紹了詳解Spring boot+CXF開發(fā)WebService Demo,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • JDK13的新特性之AppCDS詳解

    JDK13的新特性之AppCDS詳解

    AppCDS的全稱是Application Class-Data Sharing。主要是用來在不同的JVM中共享Class-Data信息,從而提升應(yīng)用程序的啟動速度。這篇文章主要介紹了JDK13的新特性:AppCDS詳解,需要的朋友可以參考下
    2020-05-05
  • 基于SpringBoot實現(xiàn)大文件分塊上傳功能

    基于SpringBoot實現(xiàn)大文件分塊上傳功能

    這篇文章主要介紹了基于SpringBoot實現(xiàn)大文件分塊上傳功能,實現(xiàn)原理其實很簡單,核心就是客戶端把大文件按照一定規(guī)則進(jìn)行拆分,比如20MB為一個小塊,分解成一個一個的文件塊,然后把這些文件塊單獨上傳到服務(wù)端,需要的朋友可以參考下
    2024-09-09
  • 淺談Java中Collections.sort對List排序的兩種方法

    淺談Java中Collections.sort對List排序的兩種方法

    本文介紹了Java中Collections.sort對List排序的兩種方法以及Comparable 與Comparator區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • SpringBoot參數(shù)校驗之@Valid的使用詳解

    SpringBoot參數(shù)校驗之@Valid的使用詳解

    這篇文章主要通過示例為大家詳細(xì)介紹一下介紹了SpringBoot參數(shù)校驗中@Valid的使用方法,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • Java中調(diào)用第三方接口的詳細(xì)代碼示例

    Java中調(diào)用第三方接口的詳細(xì)代碼示例

    這篇文章主要介紹了Java中調(diào)用第三方接口的詳細(xì)代碼示例,文章總結(jié)了多種Java進(jìn)行HTTP請求的方法,每種方法都有其特點和適用場景,從原生到封裝,再到聲明式客戶端,滿足了不同復(fù)雜度的HTTP請求需求,需要的朋友可以參考下
    2024-12-12
  • spring?@Transactional注解中常用參數(shù)詳解

    spring?@Transactional注解中常用參數(shù)詳解

    這篇文章主要介紹了spring?@Transactional注解中常用參數(shù)詳解,事物注解方式:?@Transactional,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Java實現(xiàn)字符串解析為日期時間的方法示例

    Java實現(xiàn)字符串解析為日期時間的方法示例

    這篇文章主要介紹了Java實現(xiàn)字符串解析為日期時間的方法,結(jié)合具體實例形式分析了java日期時間字符串的解析操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • springboot整合redis實現(xiàn)發(fā)送郵箱并驗證

    springboot整合redis實現(xiàn)發(fā)送郵箱并驗證

    大家好,本篇文章主要講的是springboot整合redis實現(xiàn)發(fā)送郵箱并驗證,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Java終止線程實例和stop()方法源碼閱讀

    Java終止線程實例和stop()方法源碼閱讀

    這篇文章主要介紹了Java終止線程實例和stop()方法源碼閱讀,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12

最新評論

甘洛县| 扶绥县| 博野县| 罗江县| 德庆县| 增城市| 四川省| 鹰潭市| 亚东县| 长葛市| 吕梁市| 辰溪县| 金溪县| 大港区| 蕉岭县| 丰镇市| 玉溪市| 镇平县| 莱阳市| 河东区| 昭苏县| 台州市| 泗阳县| 铅山县| 镇远县| 新巴尔虎右旗| 彰化市| 盘锦市| 夏河县| 商城县| 武强县| 雷山县| 泰宁县| 昌黎县| 中超| 马公市| 平遥县| 淄博市| 榆林市| 静宁县| 涞源县|