Java 请求转发和重定向的区别以及JavaWeb三大作用域

本文深入探讨了Java中请求转发和重定向的区别,包括它们的工作原理、使用方法和选择策略。同时,还详细讲解了JavaWeb的三大作用域——请求域、会话域和上下文域,分析了如何根据需求选择合适的作用域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



学习总结

1. 转发和重定向

转发

  1. 转发原理图
    在这里插入图片描述

  2. 转发方法
    1)request对象与转发相关方法
      request.getRequestDispatcher("/要跳转的地址").forward(request,response);

重定向

  1. 重定向原理图
    在这里插入图片描述

  2. 重定向方法
    1)response对象与重定向相关方法
      response.sendRedirect("/要跳转的地址");

转发和重定向的区别:

区别转发 forward重定向 redirect
地址栏不同不会发生变化会发生变化
根目录包含项目访问地址没有项目访问地址
跳转位置服务器端进行的跳转,不可访问站外资源浏览器端进行的跳转,可以访问站外资源
请求对象(域)中数据请求域数据不会丢失,因为是同一个请求请求域数据会丢失,因为不是同一个请求
是否可以访问WEB-INF下面的资源可以访问WEB-INF下面的资源(包含静态和动态)不可以访问WEB-INF下面的资源(包含静态和动态)

什么时候用转发什么时候用重定向

  • 问:什么时候使用转发,什么时候使用重定向?
    1)如果要保留请求域中的数据,使用转发,否则使用重定向。以后访问数据库,增删改使用重定向,查询使用转发。

  • 问:转发和重定向后面的代码是否还会执行
    1)无论转发或重定向后续的代码都会执行

三大作用域

作用域类型

作用域类型作用范围操作
请求域HttpServletRequest只在同一次请求中起作用request.setAttribute(String key, Object value);
request.getAttribute(String key);
会话域HttpSession同一个回话中起作用
一次会话是从浏览器打开开始,到关闭浏览器结束
request.getSession().setAttribute(String key, Object value);
request.getSession().getAttribute(String key);
上下文域ServletContext同一应用中起作用
上下文域也称application应用程序域,application作用范围为程序开始运行到运行停止
request.getServletContext().setAttribute(String key, Object value);
request.getServletContext().getAttribute(String key);

作用域方法

  • 哪个作用域对象调用方法就操作对应的作用域数据
作用域相关方法作用
Object setAttribute(“键”)从中得到一个值
void setAttribute(“键”, Object数据)向作用域中存储键值对数据
void removeAttribute(“键”)删除作用域种的键值对数据

如何选择作用域

  • 先考虑作用范围小的作用域,如果小作用范围的作用域能满足需求就使用小作用范围的作用域
  • 由小到大的考虑顺序:请求域 --> 会话域 --> 上下文域

总结

以上就是对请求转发和JavaWeb三大作用域的详细介绍了,代码仅供参考,欢迎讨论交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值