請求轉發與重定向的區別


請求轉發

請求轉發是服務端的一種請求方式,相當於在服務端中直接請求某個資源。

    RequestDispatcher rd=request.getRequestDispatcher("/demo1.jsp"); rd.forward(request,response); //簡寫方式
    request.getRequestDispatcher("/demo1.jsp").forward(request,response);

 

 

 請求轉發與重定向的區別

  • 請求轉發對於客戶端瀏覽器而言是在一次請求與響應中完成,而重定向是在兩次請求兩次響應中完成。
  • 請求轉發並不會改變客戶端瀏覽器的地址欄中的內容(不會改變URL)。而重定向會改變客戶端瀏覽器地址欄中的內容(會改變URL)。
  • 請求轉發可以使用request對象傳遞數據,而重定向不能使用request對象傳遞數據。
  • 如果是處理的DML(查詢)操作,建議使用重定向方式為客戶端瀏覽器產生響應,可以解決表單重復提交現象

在Servlet中獲取客戶端瀏覽器所支持的語言,並通過JSP頁面將客戶端瀏覽器所支持的語言響應給客戶端瀏覽器

servlet編寫:

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 在Servlet中獲取客戶端瀏覽器所支持的語言, * 並通過JSP頁面將客戶端瀏覽器所支持的語言響應給客戶端瀏覽器 */ @WebServlet("/language") public class LanguageServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //獲取請求頭中所支持的語言
        String header=req.getHeader("Accept-Language"); //將數據存放到request對象中
        req.setAttribute("header",header); //請求轉發,跳轉到showMsg.jsp頁面
        req.getRequestDispatcher("showMsg.jsp").forward(req,resp); } }

JSP編寫:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
String header=(String) request.getAttribute("header"); %>
<font color="#663399">
<%=header%>
</font>
</body>
</html>

 

 

/**
* Servlet中獲取客戶端瀏覽器所支持的語言,
* 並通過JSP頁面將客戶端瀏覽器所支持的語言響應給客戶端瀏覽器
*/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM