jsp页面跳转的方式有两种:客户端重定向和服务器端转发。
对于初学者来说,客户端重定向和服务器端转发这两个概念十分难以理解。我就通过一个例子来解析它们的含义。
客户端重定向:你去一个*的某个单位办事情,结果被告知你要找的负责人不在这里,然后给你一个地址和时间等信息,要你自己根据提供的信息去找这个负责人。即客户端向服务器发送一个请求,服务器给客户端一个地址,让客户端去访问。
response:相应对象 将给客户端的响应信息封装
response.sendRedirect("地址");
特点:a.地址栏中的地址是最后一个页面的地址
b.请求的参数无法传递到后一个页面
c.可以跳转到外部的站点
服务器端转发:你去一个*的某个单位办事情,结果被告知你要找的负责人不在这里,然后这个单位的人很好,他们帮你寻找和联系你要找的负责人。
request.getRequestDispatcher("地址").forward(request,response);
特点:a.地址栏中的地址是请求的页面地址
b.请求的参数可以跳转到后面的页面
c.无法访问到外部的站点(即只能访问本服务器下的站点)
针对两种页面的跳转方式的特点,在这里进行较为详细的阐述:
两者的特点a:不用再多说了,可以在是实际的案例中看的到;
两者的特点b:http协议是一种无状态的协议(即无法保存上一次的信息),前者在向服务器发送第一次请求(带有相关的参数),服务器回应客户端的请求,并给出一个相应的地址,客户端第二次访问这个地址的时候,因为http协议无法保存上一次的信息,导致第二次访问时的参数消失;而后者在第一次向客户端发送请求(带有参数),服务器的反应是服务器端去寻找请求的地址,参数没有消失,找到后再回应客户端的请求,客户端只请求一次。
两者的特点c:因为前者是两次请求,第二次是客户端发送的请求,若该服务器下没有该站点,便可去访问其他服务器;而后者只请求一次,由本服务器去完成后续的寻找地址的工作,若服务器没有该请求的地址,则会访问失败。
由上面的特点可以得出,jsp页面的跳转方式的核心在于 客户端的请求是一次还是两次!请求次数的不同决定了不同的页面跳转方式。