servlet请求转发于重定向
请求的转发与重定向是Servlet控制页面跳转的主要方法,在Web应用中使用非常广泛。
一. 请求的转发
- Servlet接收到浏览器端请求后,进行一定的处理,先不进行响应,而是在服务器端内部“转发”给其他Servlet程序继续处理。在这种情况下浏览器端只发出了一次请求,浏览器地址栏不会发生变化,用户也感知不到请求被转发了。
- 转发请求的Servlet和目标Servlet共享同一个request对象。
- 实现转发的API
 protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//1.使用RequestDispatcher对象封装目标资源的虚拟路径
		RequestDispatcher dispatcher = request
				.getRequestDispatcher("/index.html");
 		//2.调用RequestDispatcher对象的forward()方法“前往”目标资源
 		//[注意:传入的参数必须是传递给当前Servlet的service方法的
		//那两个ServletRequest和ServletResponse对象]
 		dispatcher.forward(request, response);
 	}
二. 请求的重定向
- Servlet接收到浏览器端请求并处理完成后,给浏览器端一个特殊的响应,这个特殊的响应要求浏览器去请求一个新的资源,整个过程中浏览器端会发出两次请求,且浏览器地址栏会改变为新资源的地址。
- 重定向的情况下,原Servlet和目标资源之间就不能共享请求域数据了。
- 实现重定向的API
protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//1.调用HttpServletResponse对象的sendRedirect()方法
		//2.传入的参数是目标资源的虚拟路径
		response.sendRedirect("index.html");
	}
protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		//1.调用HttpServletResponse对象的sendRedirect()方法
		//2.传入的参数是目标资源的虚拟路径
		response.sendRedirect("index.html");
	}
对比请求的转发和重定向
| # | 转发 | 重定向 | 
|---|---|---|
| 浏览器地址栏 | 不改变 | 改变 | 
| 请求次数 | 1 | 2 | 
| 能否共享request对象数据 | 能 | 否 | 
| 是否共享数据 | 转发一次请求,共享数据 | 重定向两次请求,不共享数据(在request级别使用信息共享,使用重定向必然出错) | 
| 发生行为不同 | 服务器 | 客户端 | 
| 目标资源:WEB-INF下的资源 | 能访问 | 不能访问 | 
servlet请求转发于重定向的更多相关文章
- servlet请求转发与重定向的差别------用生活实例来形象说明两者的差别
		1,请求重定向:client行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保留,地址栏的URL地址会改变. 2,请求转发:server行为,req ... 
- Servlet的请求转发和重定向
		在学习servlet中对于转发和重定向的理解是非常重要的,但是常常把重定向和转发给混了,今天特地花点时间来总结以下. 一.servlet的转发 1.请求原理图如下所示: 2.可以简单理解转发就好比一 ... 
- Spring MVC 3.0 请求转发和重定向
		首先看一下如何获得request对象.session对象: 普通的Controller类,示例代码如下: @Controller @RequestMapping(value = "user& ... 
- HttpServletRequest 接口、HttpServletResponse 接口、请求转发与重定向
		上篇文章我们讲了servlet的基本原理,这章将讲一下剩余的部分. HttpServletRequest 接口 该接口是 ServletRequest 接口的子接口,封装了 HTTP 请求的相关信息, ... 
- ServletRequest HttpServletRequest  请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
		ServletRequest 基本概念 JavaWeb中的 "Request"对象 实际为 HttpServletRequest 或者 ServletRequest, ... 
- Servlet中转发和重定向的路径问题【转】
		转发和重定向的路径问题 Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获 ... 
- 04_web基础(六)之请求转发与重定向
		1.交互方式 Web组件之间跳转: 从AServlet 跳转到 BServlet. 三种类型: 1:请求转发(forward) 2:URL重定向(redirect) 3:请求包含(include) 3 ... 
- spring mvc 请求转发和重定向(转)
		spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ... 
- spring mvc 请求转发和重定向
		spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ... 
随机推荐
- MSF使用OpenSSL流量加密
			MSF使用OpenSSL流量加密 前言 之前在博客里使用了Openssl对流量进行加密,这次我们来复现暗月师傅红队指南中的一篇文章,尝试用OpenSSL对Metasploit的流量进行加密,以此来躲避 ... 
- C++ 封装类 2   设计一个学生类 属性有姓名学号  可以给姓名 和学号赋值 可以显示学生的姓名和学号
			1 //设计一个学生类 属性有姓名学号 可以给姓名 和学号赋值 可以显示学生的姓名和学号 2 #include <iostream> 3 #include<string> 4 ... 
- Build a ZenTao Server on Linux
			Download xampp for linux on Apache Friends, file name: xampp-linux-1.8.3-2-installer.run; Intallatio ... 
- WPF自定义控件三:消息提示框
			需求:实现全局消息提示框 一:创建全局Message public class Message { private static readonly Style infoStyle = (Style)A ... 
- awk-08-综合例子
			分析nginx日志 1.统计访问IP次数 2.统计访问IP大于10次的 3.统计访问IP次数,并取出前几的访问数 4.统计时间段访问最多的IP 5.统计访问最多的10个页面 6.统计每个 URL 数量 ... 
- Golang语言系列-12-网络编程
			网络编程 互联网协议介绍 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网.我们理解了这些协 ... 
- 那些shellcode免杀总结
			首发先知: https://xz.aliyun.com/t/7170 自己还是想把一些shellcode免杀的技巧通过白话文.傻瓜式的文章把技巧讲清楚.希望更多和我一样web狗也能动手做到免杀的实现. ... 
- C#多线程---委托实现异步
			一.概述 通过调用ThreadPool的QueueUserWorkItem方法来来启动工作者线程非常方便,但委托WaitCallback指向的是带有一个参数的无返回值的方法. 如果我们实际操作中需要有 ... 
- Verilog实例数组
			编写 Verilog 代码多年,至今才无意中发现了一种奇怪的语法,估计见过的这种的写法的人,在 FPGA 开发者中不会超过 20% 吧. 直接来看代码吧.先定义了一个简单的模块,名为 mod. mod ... 
- 笔记本Linux系统,修改合盖不待机
			最近买了一个新笔记本,所以就把老的笔记本当作服务器使用了.但是一盒笔记本的盖子就会待机,真的是麻烦.操作如下可以解决问题: 1.编辑 logind.conf 文件,命令如下 vi /etc/syste ... 
