区别一:
<jsp:forward>属于服务器端跳转,跳转之后地址栏的信息不会有任何的改变。
response.sendRedirect()属于客户端跳转,跳转之后地址栏是会改变的,变为跳转之
后的页面地址。
区别二:
在使用request属性的时候,只有服务器端跳转才能将request范围的属性保存到跳转页面,
如果是客户端跳转则无法进行request属性的传递。
区别三:
如果使用的是服务器端跳转,则执行到跳转语句时就会立刻跳转;如果使用客户端跳转,则是在
整个页面执行完之后才执行跳转。
服务器端跳转:
<% out.println("**************** jsp:forward 之前 ****************") ; %>
<jsp:forward page="xxx.html">
<% out.println("**************** jsp:forward 之后 ****************") ; %>
后台Tomcat 信息 为 : **************** jsp:forward 之前 ****************
客户端跳转:
<% out.println("**************** sendRedirect()之前 ****************") ; %>
<% response.sendRedirect("xxx.html") ; %>
<% out.println("**************** sendRedirect()之后 ****************") ; %>
后台Tomcat 信息 为 :
**************** sendRedirect() 之前 ****************
**************** sendRedirect() 之后 ****************
总结:
如果在使用了JDBC的操作中,一定要在<jsp:forward>标签之前关闭数据库的连接,否则数据
库连接将再也无法关闭了。如果数据库连接始终没有关闭,当达到一定程度的时候将出现“数据库
已经达到最大的异常”,此时只能重新启动服务器了。
传参方面 。<jsp:forward>能通过<jsp:param>标签传递参数,而response.sendRedirect()
只能通过地址重写的方式传递参数。