转发:
相当于你写了一张购物清单(清单很明确,就要买这些东西),交给 甲 去办,甲说好的,然后甲又把单子交给了乙(乙拿到的单子没变,相当于同一个request),然后乙把东西 买回来交给了甲,甲又 交给了你,帮你完成了。整个过程你可以把自己看做浏览器,只发送了一次请求给服务器 里的 servlet甲,然后甲又把 你的请求发送给了同一个服务器 里的 servlet乙,然后甲把乙的结果返回给你,最终看到的还是甲返还给你,所以url没有发生改变。
重定向:
相当于你拿着一个地址从家里出发(浏览器发送请求)去找一个老朋友,到了后发现他已经搬家了,邻居告诉了你一个新的地址(新的请求),此时天已经晚了,你回家休息一晚上(又回到了浏览器),第二天拿着新的地址去找(浏览器再次发送请求),终于找到了。整个过程,家可以看成浏览器,两个不同的地址可以看成两次不同的request,两个地址都是从家里开始出发,相当于浏览器发送两次不同的请求,先找到旧url,没找到,再回到浏览器去找新url,最终跳转到新的url上,这就是url发生改变的原因。
自己的理解就这样吧。