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不会 ...
随机推荐
- IntelliJ IDEA 中打包时报aspose-cells错误缺失
异常情况 在本地执行word转换为pdf是没有问题,但是在maven中提示错误: 解决方案 将com\aspose\aspose-cells\9.0.0下除了[aspose-cells-9.0.0.j ...
- GoLang设计模式21 - 装饰模式
装饰器模式是一种结构型设计模式.通过装饰器模式可以为一个对象添加额外的功能而不需对其作出调整. 还是通过具体的案例来了解装饰器模式:假设我们开了一家披萨店,现在店里主营两款披萨: 素食狂披萨(Vegg ...
- vue 组件间的几种通信方式
Props配置 原理:通过props配置,进行父子组件间的通信,跨父子通信需要其他组件进行过渡. 使用: 传递方在标签中添加传递内容 <Son :newName="name" ...
- 结合AngularJS实现拖拽
最近项目中要实现,左侧树向右侧树中元素的拖拽功能,开始在网上看了好多ng-drag等等操作,都没有实现预想的效果,偶然发现一篇博客,然后根据博客改编,实现了自己想要的效果.下面简单的分析一下实现过程. ...
- 企业网络防范Serv-U的漏洞
很多企业都将自己的网站建立在互联网上,日常有专门的维护人员进行维护,很多时候对网站的更新当然不是直接在服务器上操作,而是将要更新的网页页面通过FTP工具上传到服务器上实现.因此必须要在服务器上搭建起一 ...
- CSV格式的文件与EXCEL文件的区别
CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...
- 《前端运维》二、Nginx--3静态资源服务、跨域与其他
一.静态资源服务 首先,静态资源一般是指客户端发送请求到Web服务器,web服务器从内存中取得相应的文件,返回给客户端,客户端解析并渲染出来.动态资源呢,则是由客户端发起请求,先交由web容器,web ...
- 重写(Override)与重载(Overload)的区别(面试题)
概念:重写(Override):是存在子父之间的关系,子类里定义的方法与父类里定义的方法具有相同的方法名以及相同的返回值和参数类型 重写规则: 1.方法名形参列表相同: 2.访问权限,子类大于等于父类 ...
- 什么是root帐户?
root帐户就像一个系统管理员帐户,允许你完全控制系统.你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限.每次安装Linux时都是默认帐户.
- Kerberos与各大组件的集成
1. 概述 Kerberos可以与CDH集成,CDH里面可以管理与hdfs.yarn.hbase.yarn.kafka等相关组件的kerberos凭证.但当我们不使用CDH的时候,也需要了解hdfs. ...