学习总结

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. Applied Social Network Analysis in Python 相关笔记

  2. 基于pytorch实现Resnet对本地数据集的训练

    本文是使用pycharm下的pytorch框架编写一个训练本地数据集的Resnet深度学习模型,其一共有两百行代码左右,分成mian.py.network.py.dataset.py以及train.p ...

  3. 了解Redis持久化

    Redis是一个键值对数据库服务器,由于Redis是内存数据库,那么有很多内存的特点,例如掉电易失,或者进程退出,服务器中的数据也将消失不见,所以需要一种方法将数据从内存中写到磁盘,这一过程称之为数据 ...

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

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

  5. pygame.update()与pygame.flip()的区别

    flip函数将重新绘制整个屏幕对应的窗口. update函数仅仅重新绘制窗口中有变化的区域. 如果仅仅是几个物体在移动,那么他只重绘其中移动的部分,没有变化的部分,并不进行重绘.update比flip ...

  6. 半吊子菜鸟学Web开发 -- PHP学习3-文件

    目录 1 PHP文件系统 1.1 PHP文件的读取 1.4 获得文件的大小 1.5 PHP写入文件 1.6 删除文件 1 PHP文件系统 1.1 PHP文件的读取 文件读取的函数是file_get_c ...

  7. 为什么要使用 rabbitmq?

    1.在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; 2.拥有持久化的机制,进程消息,队列中的信息也可以保存下来. 3.实现消费者和生产者之间的解耦. 4.对于高并发场景下,利用消息队列可以使 ...

  8. 模糊查询 like 语句该怎么写?

    第 1 种:在 Java 代码中添加 sql 通配符. string wildcardname = "%smi%"; list<name> names = mapper ...

  9. 两个对象值相同(x.equals(y) == true),但却可以有不同的hashcode?

    这个得看情况,如果该对象重写了equals方法,那么可能会出现equals相同,但hashcode不同的情况,但假如没有重写equals方法,那么它默认继承是Object的equals方法,根据源码可 ...

  10. 为什么要配置JDK环境变量?

    1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH ...