学习总结

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三大作用域的详细介绍了,代码仅供参考,欢迎讨论交流。

Java 请求转发和重定向的区别以及JavaWeb三大作用域的更多相关文章

  1. Java中转发与重定向的区别

        转发与重定向的区别 转发是服务器行为,重定向是客户端行为 1.转发在服务器端完成的:重定向是在客户端完成的2.转发的速度快:重定向速度慢3.转发的是同一次请求:重定向是两次不同请求4.转发不会 ...

  2. idea创建简单web项目分析Servlet的请求转发与重定向的区别

     注:如需转载,请附上原文链接,如有建议或意见,欢迎批评指正! 需求说明: // index.jsp页面 1 <% 2 String basePath = request.getScheme() ...

  3. Java中级—转发和重定向的区别

    在设计Web应用程序的时候,经常需要把一个系统进行结构化设计,即按照模块进行划分,让不同的Servlet来实现不同的功能,例如可以让其中一个Servlet接收用户的请求,另外一个Servlet来处理用 ...

  4. Servlet到Servlet的请求转发与重定向的区别

    Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方 ...

  5. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

      ServletRequest 基本概念 JavaWeb中的 "Request"对象  实际为   HttpServletRequest  或者  ServletRequest, ...

  6. servlet之转发与重定向的区别

    转发(服务器端跳转):  一次请求 <jsp:forward> request.getRequestDispatcher("new.jsp").forward(requ ...

  7. 04_web基础(六)之请求转发与重定向

    1.交互方式 Web组件之间跳转: 从AServlet 跳转到 BServlet. 三种类型: 1:请求转发(forward) 2:URL重定向(redirect) 3:请求包含(include) 3 ...

  8. spring mvc 请求转发和重定向(转)

    spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ...

  9. Servlet中转发和重定向的区别

    Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...

随机推荐

  1. LGP5363题解

    感觉博弈题都是高大上神秘结论... 感谢@KaiSuoShuTong 开锁疏通愿意教我这题的博弈部分/qq 考虑每次移动棋子,实际上是有一车 \(a_i\),每次操作相当于令 \(a_i-c,a_{i ...

  2. 常用命令行指令 Windows & Linux

    一.Linux linux常用命令详解:https://www.cnblogs.com/yuncong/p/10247583.html 挂载U盘到linux一个文件夹中 二.Windows 1.查看电 ...

  3. sql高级手工注入

    非常重要:首先在网站找到管理入口,否则,呵呵就算有用户名和密码,找不到入口,也是白玩.. 注入时,注意通过改变大小写.编码.转换等方式躲过系统检查,顺利执行语句!!! (一)数字型注入 正常步骤: 1 ...

  4. 亚马逊云储存器S3 BCUKET安全性学习笔记

    亚马逊云储存器S3 BCUKET安全性学习笔记 Bugs_Bunny CTF – Walk walk CTF 昨天玩了会这个比赛,碰到这题是知识盲点,来记录一下. 先从题目看起吧. http://ww ...

  5. 常见的反爬措施:UA反爬和Cookie反爬

    摘要:为了屏蔽这些垃圾流量,或者为了降低自己服务器压力,避免被爬虫程序影响到正常人类的使用,开发者会研究各种各样的手段,去反爬虫. 本文分享自华为云社区<Python爬虫反爬,你应该从这篇博客开 ...

  6. Lua协程的一个例子

    很久没记录笔记了,还是养成不了记录的习惯 下面是来自 programming in lua的一个协程的例(生产者与用户的例子) 帖代码,慢慢理解 -- Programming in Lua Corou ...

  7. (转载)linux下Yum的$releasever和$basearch的取值

    https://blog.csdn.net/whatday/article/details/51097456

  8. 用 Java 写一个线程安全的单例模式(Singleton)?

    请参考答案中的示例代码,这里面一步一步教你创建一个线程安全的 Java 单例类.当我们说线程安全时,意思是即使初始化是在多线程环境中,仍然能保证单个实例.Java 中,使用枚举作为单例类是最简单的方式 ...

  9. jvm-learning-类加载子系统

    类加载子系统的作用 类加载器ClassLoader角色 类的加载过程(广义加载)  加载  加载.class文件的方式 连接Linker 初始化  注意:如果类种没有变量赋值动作和静态代码块的语句是不 ...

  10. MyBatis 框架适用场合?

    1.MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案. 2.对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是 不错的选择.