请求转发与重定向的区别


请求转发

请求转发是服务端的一种请求方式,相当于在服务端中直接请求某个资源。

    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