servlet中请求转发(forword)和重定向(redirect)的区别
servlet请求转发与重定向的区别:
request.setAttribute("test","hello");
request.getRequestDispatcher("/test.jsp").forword(request,response);
request.sendRedirect("test.jsp");
一 显示结果:
1.当用request.getReuqestDispatcher("/test.jsp").forword(reuqest,response);请求转发后,结果页面输出:hello
2.当用response.sendRedirect("test.jsp");重定向后,结果页面输出null
二 底层分析
1.请求转发(RequestDispatcher)的过程:
客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispatcher()方法,请求转发给指定的test.jsp,整个流程都在服务器端完成,而且是在同一个请求里完成,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端,整个过程是一个请求,一个响应
2.重定向(sendRedirect)的工作原理:
客户发送一个请求到服务器,服务器匹配servlet,servlet处理完之后,调用了sendRedirect()方法,这个方法是response的方法,所以当这个servlet处理完之后,看到response.sendRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须在发送一个请求,去访问test.jsp,紧接着客户端收到请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干涉,相互独立,在前面request里面setAtrribute()的任何东西,在后面的request里面都获得不了,可见在sendRedirect()里面是两个请求,两个响应
三、表面分析:
servlet中请求转发(forword)和重定向(redirect)的区别的更多相关文章
- 请求转发(forward)和重定向(redirect)的区别
		转发不会改变地址栏,重定向会. 转发是请求一次,重定向请求两次. 转发过程中只有一个request对象产生,重定向是两个. 转发不能转发到站外,重定向可以发送到站外. 重定向的第2个请求的请求方式是什 ... 
- servlet中请求转发(forword)与重定向(sendredirect)
		请求转发和重定向 request.setAttribute("test","hello"); request.getRequestDispacther(&quo ... 
- servlet中请求转发(forword)与重定向(sendredirect)的区别
		摘自:http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html 通俗易懂 servlet请求转发与重定向的区别: request.s ... 
- servlet中请求转发获取数据等,,,
		String uname= req.getParameter("uname"); 获取请求的字符串 req.setAttribute("str"," ... 
- 转发(Forward)和重定向(Redirect)的区别
		转发是服务器行为,重定向是客户端行为. 转发(Forword) :通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServle ... 
- 转发forward和重定向redirect的区别
		本质区别:转发只发送一次请求,重定向发送两次请求. 转发: request.getRequestDispatcher("/HiServlet").forward(request,r ... 
- javaWeb中request请求转发和response重定向
		1.访问资源 运用forward方法只能重定向到同一个Web应用程序中的一个资源. 而sendRedirect方法可以让你重定向到任何URL. 2.request.get Forward代码中的&q ... 
- Servlet的请求转发和重定向
		在学习servlet中对于转发和重定向的理解是非常重要的,但是常常把重定向和转发给混了,今天特地花点时间来总结以下. 一.servlet的转发 1.请求原理图如下所示: 2.可以简单理解转发就好比一 ... 
- Servlet中的转发
		public class OneServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServ ... 
随机推荐
- LOW逼三人组(一)----冒泡算法
			排序 1.冒泡排序 冒泡算法 import random # 随机模块 def bubble_sort(li): ###################################冒泡排序#### ... 
- nginx 配置代理某个路径
			location /test{ proxy_pass http://localhost:8765/test; proxy_set_header Host $http_host; } 其中红色的那句可以 ... 
- 用户空间与内核空间数据交换的方式(9)------netlink【转】
			转自:http://www.cnblogs.com/hoys/archive/2011/04/10/2011722.html Netlink 是一种特殊的 socket,它是 Linux 所特有的,类 ... 
- sicily 1259. Sum of Consecutive Primes
			Description Some positive integers can be represented by a sum of one or more consecutive prime numb ... 
- Machine Learning系列--L0、L1、L2范数
			今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个 ... 
- es6 class 中 constructor 方法 和 super
			首先,ES6 的 class 属于一种“语法糖”,所以只是写法更加优雅,更加像面对对象的编程,其思想和 ES5 是一致的. <1>constructor function Point(x, ... 
- 想弄一弄tensorflow,先弄numpy
			现在晚上凉快点了, 下班回家可以学会东东了.. 这次的书是一个印度人写的. 按着示例代码弄起先.. #!/usr/bin/env python # -*- coding: utf-8 -*- impo ... 
- 【转】【delphi】ClientDataSet详细解读
			原文:http://www.cnblogs.com/lcw/p/3496764.html TClientDataSet的基本属性和方法 TClientDataSet控件继承自TDataSet,其数据存 ... 
- Flume(一)Flume的基础介绍与安装
			一.背景 Hadoop业务的整体开发流程: 从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步. 许多公司的平台每天会产生大量的日志 ... 
- hadoop环境安装及错误总结
			历时N天的hadoop环境,终于配好了 主要参考 Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 1.开机默认进入字符界面或者是图形界面:http://blog.cs ... 
