Java 请求转发和重定向的区别以及JavaWeb三大作用域
学习总结
1. 转发和重定向
转发
转发原理图

转发方法
1)request对象与转发相关方法
request.getRequestDispatcher("/要跳转的地址").forward(request,response);
重定向
重定向原理图

重定向方法
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三大作用域的详细介绍了,代码仅供参考,欢迎讨论交流。
Java 请求转发和重定向的区别以及JavaWeb三大作用域的更多相关文章
- Java中转发与重定向的区别
转发与重定向的区别 转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的:重定向是在客户端完成的2.转发的速度快:重定向速度慢3.转发的是同一次请求:重定向是两次不同请求4.转发不会 ...
- idea创建简单web项目分析Servlet的请求转发与重定向的区别
注:如需转载,请附上原文链接,如有建议或意见,欢迎批评指正! 需求说明: // index.jsp页面 1 <% 2 String basePath = request.getScheme() ...
- Java中级—转发和重定向的区别
在设计Web应用程序的时候,经常需要把一个系统进行结构化设计,即按照模块进行划分,让不同的Servlet来实现不同的功能,例如可以让其中一个Servlet接收用户的请求,另外一个Servlet来处理用 ...
- Servlet到Servlet的请求转发与重定向的区别
Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方 ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ...
- servlet之转发与重定向的区别
转发(服务器端跳转): 一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...
- 04_web基础(六)之请求转发与重定向
1.交互方式 Web组件之间跳转: 从AServlet 跳转到 BServlet. 三种类型: 1:请求转发(forward) 2:URL重定向(redirect) 3:请求包含(include) 3 ...
- spring mvc 请求转发和重定向(转)
spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ...
- Servlet中转发和重定向的区别
Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...
随机推荐
- 图解机器学习 | LightGBM模型详解
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/34 本文地址:http://www.showmeai.tech/article-det ...
- Solon 1.6.30 发布,更现代感的应用开发框架
相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...
- 创建vue脚手架步骤
一.在cmd配置npm淘宝镜像 npm config set registry https://registry.npm.taobao.org 二.仅第一次执行安装,安装好后关掉cmd后再开,这个时候 ...
- (七)React Ant Design Pro + .Net5 WebApi:后端环境搭建-日志、异常处理
一.日志 日志具有帮助开发者快速的定位问题,记录各种信息,配合其他分析框架使用等等功能,收集日志的各类框架如:Log4net.NLog.Exceptionless.Serilog等等,百度或园子里介绍 ...
- 1.1 STL基本概念
文章目录 1 STL概述 1.1 STL基本概念 1.2 STL 六大组件 1.3 STL优点 2.1 容器 2.2 算法 2.3 迭代器 2.4 示例 1 STL概述 STL是StandardTem ...
- 痞子衡嵌入式:MCUBootUtility v3.5发布,支持串行NOR的ECC及双程序启动
-- 痞子衡维护的 NXP-MCUBootUtility 工具距离上一个大版本(v3.4.0)发布过去半年了,这一次痞子衡为大家带来了版本升级 v3.5.0,这个版本主要有几个非常重要的更新需要跟大家 ...
- Caffeine缓存详解
概要 Caffeine是一个高性能,高命中率,低内存占用,near optimal 的本地缓存,简单来说它是 Guava Cache 的优化加强版,有些文章把 Caffeine 称为"新一代 ...
- WIFI-Pumpkin无线钓鱼渗透
WIFI-Pumpkin无线钓鱼渗透 描述 WiFi-Pumpkin是一款专用于无线环境渗透测试的完整框架,利用该工具可以伪造接入点完成中间人攻击,同时也支持一些其他的无线渗透测试功能.旨在提供更安全 ...
- Map的野路子
首先有一张user数据表,数据库名称为mybatis,数据如下: 我们使用以下两种方式实现数据更新的操作. 方式一 UserMapper.java如下: /** * @description: 更改用 ...
- HTTP1.0和HTTP1.1和HTTP2.0的区别
1 HTTP1.0和HTTP1.1的区别1.1 长连接(Persistent Connection) HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求 ...