日期:2014-05-17  浏览次数:20674 次

跳转问题
jsp中response.sendRedirect(""); 和<jsp:forword page=""/>两种跳转有什么区别?

------解决方案--------------------
1 response.sendRedirect(""); 这个是重定向,客户端浏览器的地址会发生改变。客户端跟服务器交互(请求-响应)的次数不止一次。
2 <jsp:forword page=""/>这个应该是转发吧,转发客户端浏览器的地址栏不会发生变化,客户端跟服务器交互(请求-响应)的次数只有一次。

------解决方案--------------------
Sendredirect Forward
是不同的request 虽然是不同的对象,但是,可以取到上一个页面的内容
send后的语句会继续执行,除非return forward后的语句不会继续发送给客户端
速度慢 速度快
需要到客户端的往返,可以转到任何页面, 服务器内部转换,
地址栏有变化 地址栏没有变化
可以传参数,直接写在url后面 可以传参数
/代表的是http://127.0.0.1/
<%response.sendRedirect("/test/ServletToJSP");%>
<form action="/test/ServletToJSP">
<a href="/test/ServletToJSP">test</a> /代表的是http://127.0.0.1/test
this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
并且只能以/开头
常用 常用
------解决方案--------------------
Sendredirect
是不同的request
send后的语句会继续执行,除非return
速度慢
需要到客户端的往返,可以转到任何页面,
地址栏有变化
可以传参数,直接写在url后面
/代表的是http://127.0.0.1/
<%response.sendRedirect("/test/ServletToJSP");%>
<form action="/test/ServletToJSP">
<a href="/test/ServletToJSP">test</a>
常用




Forward
虽然是不同的对象,但是,可以取到上一个页面的内容
forward后的语句不会继续发送给客户端
速度快
服务器内部转换,
地址栏没有变化
可以传参数
/代表的是http://127.0.0.1/test
this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp").forward(req, resp);
并且只能以/开头
常用
------解决方案--------------------
反正就是一个转发一个重定向你自己看着办
------解决方案--------------------
response.sendRedirect会丢失request中的数据会丢失。 
forword 不会。