请求转发的定义:

这是一种在服务器内部的资源跳转方式.(换言之,请求转发是不能跳到服务器之外的资源)

重要用途

1.把任务分布在不同的内部资源中完成
2.可以通过request在不同资源中实现资源的传递,因为请求转发是使用同一个请求

特点:

1.浏览器地址栏路径不发生变化

2.只能转发到当前服务器的内部资源中

3.转发只是一次请求(不过是内部发出的)

请求转发模拟

public class Servlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        获取请求的参数String username = request.getParameter("username");
//        查看参数System.out.println("获取到的请求参数为:"+username);System.out.println(" 一系列操作...");//添加域数据,相当于给材料盖章request.setAttribute("key","true");
//        问路Servlet2怎么走,请求转发必须要以 / 打头 表示地址为http://ip:port/工程名/,映射到idea代码的web目录RequestDispatcher requestDispatcher = request.getRequestDispatcher("/Servlet2");
//        得到跳转对象,并开始开始跳转requestDispatcher.forward(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
public class Servlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        获取请求参数String username = request.getParameter("username");
//        查看是否有servlet1的域数据Object key = request.getAttribute("key");System.out.println("查看是否有servlet1的域数据:"+key);System.out.println("一系列操作");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

简单对页面进行请求转发

servlet程序

public class Servlet_forC extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//        转发请求System.out.println("经过了Servlet_forC程序");RequestDispatcher requestDispatcher = request.getRequestDispatcher("/dd/a.html");requestDispatcher.forward(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

主页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>主页</title></head><body>这是主页<a href="./dd/a.html">跳转到./dd/a.html</a> <br><a href="http://localhost:8888/servelet_2_war_exploded/Servlet_forC">请求转发</a></body>
</html>

跳转的页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>dd下的a.html</title>
<!--   base标签设置页面相对路径工作时参照的地址 --><base href="http://localhost:8888/servelet_2_war_exploded/dd/a.html">
</head>
<body><a href="../index.jsp">跳转回主页</a>
</body>
</html>

如果没有使用base标签,又因为请求转发不会改变地址栏的信息,所以这时候跳转回首页的相对路径就是以Servlet的地址为基础来进行的,这时候就会出现错误的跳转地址

javaweb--请求转发相关推荐

  1. Javaweb 请求转发和请求重定向

    Javaweb 请求转发和请求重定向 1.请求转发和请求重定向区别 2.服务端内部转发案例 3.客户端重定向案例 1.请求转发和请求重定向区别 请求转发和请求重定向主要区别,包含以下 5 点: 定义不 ...

  2. 【JavaWeb】一文Servlet全解:继承关系、生命周期、容器和请求转发与重定向等

    文章目录 一.Servlet 概述 二.Servlet HelloWorld 三.Servlet 继承关系 四.Servlet 生命周期 五.ServletConfig 和 ServletContex ...

  3. 【相对/绝对路径】JavaWeb项目中,请求转发与重定向的路径写法

    相对路径.全路径 是要不以/开头,都是相对路径.相对路径是从当前资源出发,去寻找其他资源. 只要路径中以/开肉,就是全路径.全路径是从项目根目录出发,去寻找其他资源. 在开发中,写文件路径时,最好使用 ...

  4. 【JavaWeb】Response请求转发与重定向辨析

    请求转发与重定向对比 辨析 请求转发只有一次请求.一次响应,是在服务端内部跳转 重定向有两次请求.两次响应:将结果返回给客户端,让客户端重新发起一次跳转 请求转发的登陆界面实现 login.jsp & ...

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

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

  6. JSP中的重定向和请求转发以及它们的区别

    我们先硬着头皮看一下重定向的定义: 重定向(Redirect): 客户端浏览器向Web应用服务器端发送一个请求,Web服务器端使用HttpServletResponse的sendRedirect()方 ...

  7. jsp重定向与请求转发的路径404问题

    请求转发特点: 1. 浏览器地址栏路径不发生变化 还停留在首次访问的Servlet的URL 2. 只能转发到当前服务器内部资源中. 3. 转发是一次请求,可以使用request共享数据 4. 自我归纳 ...

  8. 3.相应重定向与请求转发的比较

    响应重定向与请求转发类似,但有下面的区别: (1)RequestDispatcher对象是一个Web资源的包装器,可以用来把当前请求转发到该资源.这种转发是服务器端控制权的转向,客户端发来的请求将交由 ...

  9. Servlet--06--解决乱码问题; 请求转发; 重定向;

    乱码问题: 一.  请求-乱码问题:服务器获取的请求数据,在console显示时,出现了乱码. (1)post请求方式解决:req.serCharacterEncoding("utf-8&q ...

  10. 请求转发与请求重定向

    请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变. 请求转发:服务器行为,request.getRe ...

最新文章

  1. 心理所发表关于神经科学研究可信度的评论文章
  2. 反向非归零编码_(宏)基因组编码基因预测
  3. 信息安全系统设计基础第七周学习总结
  4. lucene_Lucene组件概述
  5. 泛型技巧系列:类型字典和Type Traits
  6. sql server序列_SQL Server中身份和序列之间的区别
  7. FE File Explorer Pro for mac(文件管理器)
  8. ASP.NET Web程序设计 第九章 初识 Web Pages
  9. 【SpringMVC注解篇】SpringMVC 注解驱动开发(二)JSON数据交互相关注解
  10. 计算机不能删除用户,删除用户时提示无法在内置账户上运行此操作 -电脑资料...
  11. python怎么取百位_#python计算结果百位500向下取整,(0-499取000,500-999取500)
  12. Navicat怎样导入Excel表格和txt文本的数据
  13. c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点
  14. 域控下发脚本_域控下发脚本,安装zabbix客户端
  15. 拒绝时间与脑力浪费,不做数学守旧派
  16. 在线投票活动制作投票制作页面线上投票活动制作投票区制作
  17. 【MOOC】现代密码学(成电)(1)概述
  18. 零基础学python需要多长时间,一篇文章给你讲清楚?
  19. 【人人学IoT】01-初识物联网
  20. ViSP学习笔记(十五):关键点跟踪

热门文章

  1. msm8937 porting iic device
  2. 什么是弱密码,如何避免
  3. Netty权威指南 第2版
  4. canbus是什么意思_canbus.是什么意思
  5. 网络历史之金融投资三剑客03
  6. 通达oa mysql密码_谁知道通达OA数据库user表密码的加密方法?
  7. matlab绘制图形hold on_Matlab绘图示例
  8. 微信小程序地图和百度地图定位位置不一样
  9. java计算机毕业设计快滴预约平台MyBatis+系统+LW文档+源码+调试部署
  10. 双目立体匹配算法:ELAS