response.sendRedirect("")和request.getRequestDispatcher("").forward(req,resp);
1:request.getRequestDispatcher("转发路径").forward(req,resp)该语句是实现请求转发的,当请求进入到该servlet中执行到该语句时,服务器不会直接响应而是转发到转发路径得servlet继续处理,由于将req和resp带过去了,所以这期间是没有重新创建request和response对象,所以在接下来的servlet中同样可以获得当前servlet的request中的参数。
2:response.sendRedirect("")当运行到servlet的该条语句时,服务器会响应浏览器一个小心头告诉浏览器重新请求方法中的路径对应的servlet,因为是浏览器从新请求所以会创建新的request和response对象,因此上一次请求的request中的参数无法得到。
很好的理解这两者的原理和区别有助于熟练操作请求的转发和重定向。熟练的控制参数获取。
==============================以下是通过firebug来看转发和重定向的请求情况==========================================
通过观察发现重定向时有一个请求响应信息状态为302,其实这个就是服务器返回给浏览器的一个重新请求的消息,让浏览器重新请求。
下图是重定向的请求截图:
以下是转发的firebug请求图:
response.sendRedirect("")和request.getRequestDispatcher("").forward(req,resp);的更多相关文章
- response.sendRedirect()与request.getRequestDispatcher().forward()区别
Servlet中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳 ...
- 转response.sendRedirect()与request.getRequestDispatcher().forward()区别
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...
- 让你明白response.sendRedirect()与request.getRequestDispatcher().forward()区别
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转,但是 ...
- response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
转发方式:request.getRequestDispatcher().forward(); 重定向方式:response.sendRedirect(); 下面是HttpServletRespons ...
- javaweb中重定向和请求转发(response.sendRedirect()和request.getRequestDispatcher(rul).forward(request,response)))的区别
先来两张图,方便理解: 可以看出,重定向时,是服务器向游览器重新发送了一个response命令,让游览器再次向url2发送请求,以获取url2的资源 而请求转发时,类似于是服务器自己向自己发了一个跳转 ...
- Jsp重定向(response.sendRedirect())和转发(request.getRequestDispatcher().forward(request,r)的差别
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- 新版的 Springsecurity request.getRequestDispatcher).forward(request, response); 404 问题,已解决
旧版本的 可以直接 转发登陆 request.getRequestDispatcher).forward(request, response); 新版本的转发会404,原因 SpringSecurit ...
- request.getRequestDispatcher().forward(request.response)
request.getRequestDispatcher().forward(request.response)中的那两个参数是哪里来的? 2010-11-09 23:13 QQ357169111 | ...
- response.sendRedirect(location)与rd.forward()区别
在Java Web开发中,经常会用到跳转页面的方法,一般有下面两种方法. HttpServletResponse response = new HttpServletResponse(); respo ...
随机推荐
- C++惯用法:通过成员模板实现隐式转换(Coercion 强迫 by Member Template)
Intent To increase the flexibility of a class template's interface by allowing the class template to ...
- VS2010/MFC对话框一:创建对话框模板和修改对话框属性
创建对话框主要分两大步: 第一,创建对话框资源,主要包括创建新的对话框模板.设置对话框属性和为对话框添加各种控件: 第二,生成对话框类,主要包括新建对话框类.添加控件变量和控件的消息处理函数等. 创建 ...
- 关于 firefox 无法在 passport.csdn.net 找到该服务器
很奇怪的现象:用firefox上网,某些网站打开总是会提示 无法在XXX找到该服务器.但是使用其他浏览器,比如360却可以正常打开. 我已经将firefox加入了防火墙的信任列表,但是仍旧是这样. 而 ...
- postgresql文档生成注意事项
如果要生成中文版的postgresql,目前我所知道的方法见我的一篇博客http://www.cnblogs.com/codeblock/p/4812445.html 里面有详细的介绍,但是生成的文档 ...
- Java Project部署到Tomcat服务器上
所有的JAVA程序员,在编写WEB程序时,一般都通过工具如 MyEclipse,编写一个WEB Project,通过工具让这个WEB程序和Tomcat关联.其实在我们可以通过JAVA程序部署到Tomc ...
- django 时间计数
value必须replace(tzinfo=None)变成datetime格式,否则格式不对不能相减.
- 17.1.1.7 Setting Up Replication with New Master and Slaves 设置复制对于新的Master和Slaves:
17.1.1.7 Setting Up Replication with New Master and Slaves 设置复制对于新的Master和Slaves: 最简单和最直接的方法是设置复制用于使 ...
- 基于visual Studio2013解决算法导论之019栈实现(基于数组)
题目 用数组实现栈 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <time.h> #in ...
- 基于visual Studio2013解决C语言竞赛题之0520相邻元素
题目
- 一步一步重写 CodeIgniter 框架 (11) —— 使用 CodeIgniter 函数库
在完成了CI框架的类库扩展后,很自然我们就会想到函数库的扩展.函数库的扩展在 CI 中称为 helper 函数与类有不同的地方,它不能继承,只能覆盖或者添加新的函数,或者直接完全新定义的一组函数. 由 ...