一、理论

* 转发的特点: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. jqplot php,JSON的jqPlot
  2. 【3.1】学习C++之再逢const
  3. win10如何关闭文件夹或者照片的最近浏览?
  4. 操作系统(一)操作系统的概念、功能
  5. html内联框上下重叠,如何解决IOS端两个内联块元素无法上下对齐的问题?
  6. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  7. Install Docker Mac OS X
  8. linux进程和计划任务,linux进程和计划任务
  9. ES8新特性_async和await结合使用读取文件内容---JavaScript_ECMAScript_ES6-ES11新特性工作笔记050
  10. Android开发学习之QQ好友列表的实现
  11. Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
  12. nginx工作原理:
  13. graphpad prism图标设置_科研绘图软件-Graphpad prism使用教程(六)
  14. html中让页面点击向左滑动,HTML5页面点击和左右滑动页面滚动详解
  15. AlphaGo Zero详解
  16. 小红帽linux各功能中英,英文短剧lbrack;小红帽rsqb;剧本台词完整版---中英对照文本版...
  17. 测试手机运行速度的软件,你的手机合格了吗 两款手机性能测试软件横评
  18. 知道创宇创始人赵伟荣登“中国产业创新百人榜”
  19. 服务器规范名字与IP地址的转换
  20. 英语对我们意味着什么?

热门文章

  1. Koa2调用java接口_入门koa2接口开发
  2. Magento用的哪个php框架,选择MAGENTO的十个强大理由
  3. weiphp执行的流程
  4. 交换机 (switch)、路由器 (router) 和集线器 (hub) 的区别
  5. Scrapy 应用之爬取《盗墓笔记》
  6. js读取解析JSON类型数据
  7. ASCII对应码表-键值(完整版)
  8. MySQL错误:SQLSTATE[42000]: Syntax error or access violation
  9. 用最少数量的箭引爆气球(Java)
  10. 学习笔记:创建Trie 树存储英文单词及中文意思