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

Javaweb-HttpServletResponse的sendRedirectch重定向方式

 更新時間:2023年09月19日 16:43:51   作者:markliwei1  
這篇文章主要介紹了Javaweb-HttpServletResponse的sendRedirectch重定向方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一 、sendRedirect

1.1 重定向過程

當使用HttpServletResponse的sendRedirect()時會發(fā)生重定向時,服務(wù)器會在Servlet中設(shè)置HTTP狀態(tài)碼為301以及Location標頭返回給瀏覽器,瀏覽器收到這個標頭以后會再一次使用GET方法請求重定向的URL,因此地址欄的URL會發(fā)生變化。

1.2 sendRedirect使用方法

response.sendRedirect(URL url);

二、實驗

2.1使用sendRedirect()進行重定向,同時使用HttpServletRequest中的setAttribute進行屬性設(shè)置

在瀏覽器中輸入http://localhost:8088/send_redirect.html

send_redirect.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/send_redirect" method="post">
    Name:<input type="text" name="name"/><br/>
    Submit:<input type="submit" value="Submit By Post"/>
</form>
</body>
</html>

在網(wǎng)頁的Name這一欄輸入Zoubaitao

點擊Submit By Post,瀏覽器的地址欄會變成http://localhost:8088/send_redirect

服務(wù)器根據(jù)”/send_redirect”就會去服務(wù)器的web.xml找到對應(yīng)的url-pattern最后找到對應(yīng)的Servlet來處理;或者是根據(jù)@WebServlet來查找對應(yīng)的Servlet;

SendRedirectServlet.java

package httpservletresponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/send_redirect")
public class SendRedirectServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        doPost(request,response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        response.setContentType("text/html");
        request.setAttribute("name",name);
        //setAttribute("name",name);
        response.sendRedirect("http://localhost:8088/welcome.jsp");
    }
}

welcome.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    Welcome<br/>
    ${name}
</body>
</html>

最后輸出的結(jié)果為

結(jié)果分析:

  • 我們發(fā)現(xiàn)我們在request中設(shè)置的name屬性并沒有傳遞到welcome的request對象中。
  • 而welcome.jsp中的request對象不存在一個name 屬性值,所以不輸出

2.2使用sendRedirect()進行重定向,同時使用HttpServletRequest中的setAttribute進行屬性設(shè)置

在瀏覽器中輸入http://localhost:8088/send_redirect.html

send_redirect.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/send_redirect" method="post">
    Name:<input type="text" name="name"/><br/>
    Submit:<input type="submit" value="Submit By Post"/>
</form>
</body>
</html>

在網(wǎng)頁的Name這一欄輸入Yanzi

點擊Submit By Post,瀏覽器的地址欄會變成http://localhost:8088/send_redirect

服務(wù)器根據(jù)”/send_redirect”就會去服務(wù)器的web.xml找到對應(yīng)的url-pattern最后找到對應(yīng)的Servlet來處理;或者是根據(jù)@WebServlet來查找對應(yīng)的Servlet;

SendRedirectServlet.java

package httpservletresponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/send_redirect")
public class SendRedirectServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        doPost(request,response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        response.setContentType("text/html");
        this.getServletContext.setAttribute("name",name);
        //setAttribute("name",name);
        response.sendRedirect("http://localhost:8088/welcome.jsp");
    }
}

welcome.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    Welcome<br/>
    ${name}
</body>
</html>

結(jié)果輸出

結(jié)果分析

  • 我們通過ServletContext來設(shè)置的屬性,最后能夠在重定向的welcome.jsp中得到這個屬性值,最終輸出在瀏覽器上。
  • 因此如果我們需要在重定向的時候設(shè)置共享的變量,那么我們需要使用的ServletContext來設(shè)置屬性。
  • 同時我們可以看到URL地址欄變成了我們設(shè)置的重定向的地址

2.3使用sendRedirect()進行重定向,但是我們重定向的資源放在WEB-INF文件夾下

在瀏覽器中輸入http://localhost:8088/send_redirect.html

send_redirect.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/send_redirect" method="post">
    Name:<input type="text" name="name"/><br/>
    Submit:<input type="submit" value="Submit By Post"/>
</form>
</body>
</html>

在網(wǎng)頁的Name這一欄輸入Yanzi

點擊Submit By Post,瀏覽器的地址欄會變成http://localhost:8088/send_redirect

服務(wù)器根據(jù)”/send_redirect”就會去服務(wù)器的web.xml找到對應(yīng)的url-pattern最后找到對應(yīng)的Servlet來處理;或者是根據(jù)@WebServlet來查找對應(yīng)的Servlet;

SendRedirectServlet.java

package httpservletresponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/send_redirect")
public class SendRedirectServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        doPost(request,response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        String name = request.getParameter("name");
        response.setContentType("text/html");
        this.getServletContext.setAttribute("name",name);
        //資源路徑為WEB-INF文件夾下
        response.sendRedirect("http://localhost:8088/WEB-INF/welcome.jsp");
    }
}

welcome.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    Welcome<br/>
    ${name}
</body>
</html>

結(jié)果輸出

結(jié)果分析

  • 我們將我們重定向的資源放在了WEB-INF文件夾下,所以瀏覽器是無法訪問到的。
  • 這是重定向和轉(zhuǎn)發(fā)之間的一個不同點,轉(zhuǎn)發(fā)有服務(wù)器自己處理轉(zhuǎn)發(fā)請求,但是重定向是瀏覽器對重定向的資源再一次進行請求。
  • 這從請求次數(shù)上,轉(zhuǎn)發(fā)只請求一次,但是重定向至少請求兩次。

三、總結(jié)

RequestDispatcher的forward()和HttPServletResponse的sendRedirect()之間的不同

1) foward()就可以訪問WEB-INF文件夾下的資源,而sendRedirect()不能重定向在WEB-INF文件夾下的資源

2) forward()進行轉(zhuǎn)發(fā)時是服務(wù)器內(nèi)部進行處理,因此瀏覽器不知道發(fā)生的變化,所以瀏覽器的URL不會發(fā)生變化,而sendRedirect()會發(fā)生變 換,是因為瀏覽器會從服務(wù)器得到301狀態(tài)碼以后會再一次按照重定向的URL以get的方式請求服務(wù)器。所以服務(wù)器地址欄的URL發(fā)生變化

3) forward()可以通過HttpServletRequest的setAttribute()和ServletContex的setAttribute()設(shè)置共享屬性。而sendRedirect()只能通過ServletContext()的setAttribute()進行訪問屬性(其實二者另外還都可以使用Session來存儲共享的數(shù)據(jù))

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)6種字符串數(shù)組的排序(String array sort)

    java實現(xiàn)6種字符串數(shù)組的排序(String array sort)

    這篇文章主要介紹了java實現(xiàn)6種字符串數(shù)組的排序(String array sort),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • java線程池使用場景及一些建議

    java線程池使用場景及一些建議

    本文主要介紹了java線程池使用場景及一些建議,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • springcloud-feign調(diào)用報錯問題

    springcloud-feign調(diào)用報錯問題

    這篇文章主要介紹了springcloud-feign調(diào)用報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java高效實現(xiàn)PDF與OFD的相互轉(zhuǎn)換的示例代碼

    Java高效實現(xiàn)PDF與OFD的相互轉(zhuǎn)換的示例代碼

    在數(shù)字化辦公日益普及的今天,文檔格式的標準化與跨平臺兼容性成為企業(yè)和開發(fā)者面臨的重要挑戰(zhàn),OFD作為國家標準,在政務(wù)、金融等領(lǐng)域具有不可替代的地位,而PDF則以其廣泛的兼容性成為日常交流的首選本文將深入探討如何高效地實現(xiàn)PDF與OFD的相互轉(zhuǎn)換
    2025-10-10
  • Java JDBC數(shù)據(jù)庫連接失敗的7種常見原因及解決方案

    Java JDBC數(shù)據(jù)庫連接失敗的7種常見原因及解決方案

    Java JDBC(Java Database Connectivity)是Java平臺中用于執(zhí)行SQL語句的標準API,它為開發(fā)者提供了與各種關(guān)系型數(shù)據(jù)庫進行交互的能力,本文為大家介紹了Java JDBC數(shù)據(jù)庫連接失敗的7種常見原因及解決方案,需要的朋友可以參考下
    2025-11-11
  • mybatis之多參數(shù)查詢方式

    mybatis之多參數(shù)查詢方式

    這篇文章主要介紹了mybatis之多參數(shù)查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • ConditionalOnProperty配置swagger不生效問題及解決

    ConditionalOnProperty配置swagger不生效問題及解決

    這篇文章主要介紹了ConditionalOnProperty配置swagger不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 淺談java String.split丟失結(jié)尾空字符串的問題

    淺談java String.split丟失結(jié)尾空字符串的問題

    下面小編就為大家?guī)硪黄獪\談java String.split丟失結(jié)尾空字符串的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Tomcat調(diào)優(yōu)詳解

    Tomcat調(diào)優(yōu)詳解

    這篇文章主要介紹了Tomcat調(diào)優(yōu)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 盤點SpringBoot中@Async注解的遇到的坑點及解決辦法

    盤點SpringBoot中@Async注解的遇到的坑點及解決辦法

    SpringBoot是一個流行的Java開發(fā)框架,在異步編程方面,Spring Boot提供了@Async注解,它能夠讓方法異步執(zhí)行,然而,在使用@Async注解時,有一些潛在的坑需要注意,本文將深入探討Spring Boot中使用@Async注解時可能遇到的8大坑點,并提供相應(yīng)的解決方案
    2024-03-03

最新評論

大埔区| 深水埗区| 灵川县| 长阳| 淄博市| 天津市| 绥宁县| 安塞县| 沈丘县| 桐柏县| 周至县| 沧州市| 凌源市| 顺平县| 寻甸| 广元市| 和平县| 辽阳县| 温宿县| 汝阳县| 三江| 会昌县| 临洮县| 溧阳市| 甘孜| 沂源县| 北碚区| 巫山县| 岑溪市| 大理市| 宁陕县| 海安县| 吉首市| 青田县| 丰城市| 东光县| 沙河市| 酉阳| 潮州市| 海宁市| 水富县|