一、理论

* 转发的特点:forward
            1. 转发地址栏路径不变
            2. 转发只能访问当前服务器下的资源
            3. 转发是一次请求,可以使用request对象来共享数据

* 重定向的特点:redirect
            1. 地址栏发生变化
            2. 重定向可以访问其他站点(服务器)的资源
            3. 重定向是两次请求。不能使用request对象来共享数据

二、代码演示

2.1、forward转发

1、新建JavaEE项目

2、配置tomcat

3、新建RequestDemo8类,代码如下

/*** @Author wang* @Date 2022/5/8 20:04* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/RequestDemo8")
public class RequestDemo8 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Demo8被访问量。。。。。。。。。");//存储数据到Request域中request.setAttribute("msg","hello");//转发到Demo9request.getRequestDispatcher("/RequestDemo9").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

4、新建RequestDemo9类,代码如下

/*** @Author wang* @Date 2022/5/8 20:04* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/RequestDemo9")
public class RequestDemo9 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取数据Object msg = request.getAttribute("msg");System.out.println(msg);System.out.println("Demo9被访问量。。。。。。。。。");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

5、浏览器访问RequestDemo8 这个地方地址栏是没有变化的 一次请求,一次URL

6、控制台输出样式如下

7、验证是不是 `只能访问当前服务器下的资源`

注释代码——更改代码 如下图

//        request.getRequestDispatcher("/RequestDemo9").forward(request,response);request.getRequestDispatcher("https://baidu.com").forward(request,response);

2.2、redirect 重定向

1、新建JavaEE项目

2、配置tomcat

3、新建ResponseDemo1类,代码如下

/*** @Author wang* @Date 2022/5/9 16:43* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO Response重定向* @Version 1.0*/
@WebServlet("/responseDemo1")
public class ResponseDemo1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo1............");//访问/responseDemo1 会自动跳转/responseDemo2资源/* //设置状态码response.setStatus(302);//设置响应头locationresponse.setHeader("location","/day15_response/responseDemo2");*///简单的重定向方法response.sendRedirect("/day15_response/responseDemo2");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

4、新建ResponseDemo2类,代码如下

/*** @Author wang* @Date 2022/5/9 16:43* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/responseDemo2")
public class ResponseDemo2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo222222...........");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

5、浏览器访问responseDemo1这个地方地址栏是发生了变化 两次请求,两次URL

如图

6、控制台输出样式如下

7、验证是不是 `可以访问其他站点(服务器)的资源`

注释代码——修改代码

//        response.sendRedirect("/day15_response/responseDemo2");response.sendRedirect("https://baidu.com");

8、验证是不是`不能使用request对象来共享数据   `

在ResponseDemo1类中增加存储数据代码

request.setAttribute("msg","hello");

在ResponseDemo2类中增加获取数据代码 打印输出 如果为null 即为不能使用request对象来共享数据

Object msg = request.getAttribute("msg");
System.out.println(msg);

forward 和 redirect 区别相关推荐

  1. Java面试题:forward和redirect区别

    Java面试题:forward和redirect区别 Java面试题 本文章借鉴该链接文章深受启发!链接在此 共同点:Servlet中有两种实现跳转的方式:forward方式和redirect方式. ...

  2. web中的forward和redirect区别

    forward 和 redirect 重定向的特点 redirect 转发地址栏路径不变 重定向可以访问其他站点的资源,可以理解其他服务器的资源 重定向是两次请求.不能使用request对象来共享数据 ...

  3. 前端 forward和redirect区别

    forward(转发): 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器. 浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程实 ...

  4. forward和redirect区别

  5. forward和redirect的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.从地址栏显示来说  forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把 ...

  6. forward 和redirect的区别

    1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地 ...

  7. forward和redirect有什么区别?

    题目:下面有关forward和redirect的描述,正确的是() ? A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求 B.执行forward时,浏 ...

  8. java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别

    Java教程分享:Forward和Redirect的区别,用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉 ...

  9. 如何在请求转发的时候对url解码_Java技术分享:Forward和Redirect这两种转发方式的区别...

    用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的.根据转发方式的不同,可以区分为直接请求转发 ...

最新文章

  1. 浅析Linux IO
  2. 浏览器根据什么来判定脚本失控?
  3. 如何部署同一个Spring boot web 应用到不同的环境
  4. [翻译] C# 8.0 新特性
  5. 写一个简单控制台启动的mcv服务
  6. 计算机里创建本地磁盘分区,大神教你如何将本地硬盘进行分区!
  7. @Builder(toBuilder=true) 链式初始化对象、修改对象
  8. 第一天学习笔记之数组(冒泡排序+二分查找)
  9. Zepto:基础学习
  10. SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析...
  11. ceb2Pdf.exe实现ceb文件转pdf,内网离线安装wine(手动编译32位)实现在centos(linux)上运行window程序exe程序,解决wine : Z:\xxx EXE格式无效
  12. VMware许可证过期解决方案
  13. ctfshow 密码挑战(上)
  14. 配对交易之统计套利配对:介绍
  15. 宏发41F-1Z-C2接线
  16. 微型计算机第十一章答案,计算机习题答案总.docx
  17. 弹出 think-cell 许可证密钥窗口丨使用教程
  18. 2021年Facebook广告投放的9条建议
  19. Python开发【项目】:生产环境下实时统计网站访问日志信息
  20. oracle 倒库详细步骤,超详细的倒车入库步骤

热门文章

  1. 【Vue实践】列表搜索框中模糊搜索功能的两种实现方式
  2. 机器人建模、计算正解、逆解
  3. 任务1_修改植物大战僵尸关卡和金币
  4. html怎么使用element ui,element-ui是什么,以及element-ui如何使用
  5. 运维决定价值 四川农信社如何支撑4万员工的IT管理?
  6. a区计算机调剂学校,A区接收调剂的一本院校及专业
  7. 在html5中drawimage,HTML5中drawImage用法分析
  8. 【 protobuf 】.proto转成.Java 教程
  9. 数据结构java实验 刘小晶_数据结构实例解析与实验指导:Java语言描述
  10. 重定向与转发的区别与应用