(URL转跳)forward跟sendredirect的区别

(URL转跳)forward和sendredirect的区别

response.sendRedirect("URL")

相当于服务器要客户端在IR重输入一串地址然后点转向,既客户端的重定向
并且URL会改变

注意:1.这个JSP后面的内容会继续执行,并不会中断
2.前一个JSP页面得到的参数全部丢失

<jsp:forward page="URL" />

是服务器内部的重定向,服务器内部可以有多个转换,而现实在客户端上的则只有一个页面url也不会改变

他可以传递参数

例:

<jsp:forward page="forforward1.jsp">
 <jsp:param name="name" value="m" />
 <jsp:param name="oldName" value='<%=request.getParameter("name")%>' />
 <jsp:param name="roles" value="manager" />
</jsp:forward>

forward和sendredirect的区别

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);

并且只能以/开头

常用
	

常用