forward 和 redirect 区别
一、理论
* 转发的特点:forward
1. 转发地址栏路径不变
2. 转发只能访问当前服务器下的资源
3. 转发是一次请求,可以使用request对象来共享数据
* 重定向的特点:redirect
1. 地址栏发生变化
2. 重定向可以访问其他站点(服务器)的资源
3. 重定向是两次请求。不能使用request对象来共享数据
二、代码演示
2.1、forward转发
1、新建JavaEE项目
2、配置tomcat
3、新建RequestDemo8类,代码如下
/*** @Author wang* @Date 2022/5/8 20:04* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/RequestDemo8")
public class RequestDemo8 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("Demo8被访问量。。。。。。。。。");//存储数据到Request域中request.setAttribute("msg","hello");//转发到Demo9request.getRequestDispatcher("/RequestDemo9").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
4、新建RequestDemo9类,代码如下
/*** @Author wang* @Date 2022/5/8 20:04* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/RequestDemo9")
public class RequestDemo9 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取数据Object msg = request.getAttribute("msg");System.out.println(msg);System.out.println("Demo9被访问量。。。。。。。。。");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
5、浏览器访问RequestDemo8 这个地方地址栏是没有变化的 一次请求,一次URL
6、控制台输出样式如下
7、验证是不是 `只能访问当前服务器下的资源`
注释代码——更改代码 如下图
// request.getRequestDispatcher("/RequestDemo9").forward(request,response);request.getRequestDispatcher("https://baidu.com").forward(request,response);
2.2、redirect 重定向
1、新建JavaEE项目
2、配置tomcat
3、新建ResponseDemo1类,代码如下
/*** @Author wang* @Date 2022/5/9 16:43* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO Response重定向* @Version 1.0*/
@WebServlet("/responseDemo1")
public class ResponseDemo1 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo1............");//访问/responseDemo1 会自动跳转/responseDemo2资源/* //设置状态码response.setStatus(302);//设置响应头locationresponse.setHeader("location","/day15_response/responseDemo2");*///简单的重定向方法response.sendRedirect("/day15_response/responseDemo2");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
4、新建ResponseDemo2类,代码如下
/*** @Author wang* @Date 2022/5/9 16:43* @PackageName:${PACKAGE_NAME}* @ClassName: ${NAME}* @Description: TODO* @Version 1.0*/
@WebServlet("/responseDemo2")
public class ResponseDemo2 extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("demo222222...........");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
5、浏览器访问responseDemo1这个地方地址栏是发生了变化 两次请求,两次URL
如图
6、控制台输出样式如下
7、验证是不是 `可以访问其他站点(服务器)的资源`
注释代码——修改代码
// response.sendRedirect("/day15_response/responseDemo2");response.sendRedirect("https://baidu.com");
8、验证是不是`不能使用request对象来共享数据 `
在ResponseDemo1类中增加存储数据代码
request.setAttribute("msg","hello");
在ResponseDemo2类中增加获取数据代码 打印输出 如果为null 即为不能使用request对象来共享数据
Object msg = request.getAttribute("msg"); System.out.println(msg);
forward 和 redirect 区别相关推荐
- Java面试题:forward和redirect区别
Java面试题:forward和redirect区别 Java面试题 本文章借鉴该链接文章深受启发!链接在此 共同点:Servlet中有两种实现跳转的方式:forward方式和redirect方式. ...
- web中的forward和redirect区别
forward 和 redirect 重定向的特点 redirect 转发地址栏路径不变 重定向可以访问其他站点的资源,可以理解其他服务器的资源 重定向是两次请求.不能使用request对象来共享数据 ...
- 前端 forward和redirect区别
forward(转发): 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器. 浏览器根本不知道服务器发送的内容从哪里来的,因为这个跳转过程实 ...
- forward和redirect区别
- forward和redirect的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把 ...
- forward 和redirect的区别
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地 ...
- forward和redirect有什么区别?
题目:下面有关forward和redirect的描述,正确的是() ? A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求 B.执行forward时,浏 ...
- java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别
Java教程分享:Forward和Redirect的区别,用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉 ...
- 如何在请求转发的时候对url解码_Java技术分享:Forward和Redirect这两种转发方式的区别...
用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的.根据转发方式的不同,可以区分为直接请求转发 ...
最新文章
- jqplot php,JSON的jqPlot
- 【3.1】学习C++之再逢const
- win10如何关闭文件夹或者照片的最近浏览?
- 操作系统(一)操作系统的概念、功能
- html内联框上下重叠,如何解决IOS端两个内联块元素无法上下对齐的问题?
- MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
- Install Docker Mac OS X
- linux进程和计划任务,linux进程和计划任务
- ES8新特性_async和await结合使用读取文件内容---JavaScript_ECMAScript_ES6-ES11新特性工作笔记050
- Android开发学习之QQ好友列表的实现
- Windows 下 Redis 服务无法启动,错误 1067 进程意外终止解决方案
- nginx工作原理:
- graphpad prism图标设置_科研绘图软件-Graphpad prism使用教程(六)
- html中让页面点击向左滑动,HTML5页面点击和左右滑动页面滚动详解
- AlphaGo Zero详解
- 小红帽linux各功能中英,英文短剧lbrack;小红帽rsqb;剧本台词完整版---中英对照文本版...
- 测试手机运行速度的软件,你的手机合格了吗 两款手机性能测试软件横评
- 知道创宇创始人赵伟荣登“中国产业创新百人榜”
- 服务器规范名字与IP地址的转换
- 英语对我们意味着什么?
热门文章
- Koa2调用java接口_入门koa2接口开发
- Magento用的哪个php框架,选择MAGENTO的十个强大理由
- weiphp执行的流程
- 交换机 (switch)、路由器 (router) 和集线器 (hub) 的区别
- Scrapy 应用之爬取《盗墓笔记》
- js读取解析JSON类型数据
- ASCII对应码表-键值(完整版)
- MySQL错误:SQLSTATE[42000]: Syntax error or access violation
- 用最少数量的箭引爆气球(Java)
- 学习笔记:创建Trie 树存储英文单词及中文意思