接触过Java开发的小伙伴,一定对转发和重定向有所了解吧,也可能在java开发过程中使用过转发和重定向,那么今天我们来看一下在javaweb中,转发和重定向有哪些区别。
从概念上来讲,转发指的是当前Servlet将请求转交给其他的Servlet进行再次处理。重定向是Servlet发送给浏览器的一个特殊的响应,这个响应告诉浏览器,再去请求另一个地址,类似于政府的相关部门。
从特点上来说,转发的特点是,1.转发时浏览器只发送一次请求;2.转发是在服务器端进行的;3.转发时浏览器的地址没有发生变化;4.浏览器感知不到转发的发生。重定向的特点是,1.重定向时浏览器一共发了两次请求;2.重定向是在浏览器端进行的;3.浏览器的地址栏会发生改变;4.浏览器可以感知到重定向的发生。
在请求调用对象方面,请求的转发调用方法的是,HttpServletRequest的getRequestDispatcher()方法获取RequestDispathcher对象;调用getRequestDispatcher()需要传入要转发的地址:String path = "testServlet“;(testServlets是地址);RequestDispatcher requestDispatcher = request.getRequestDispatcher(”/“+path)。调用HttpServletRequest的forward(request,response)进行请求的转发;requestDispatcher.forward(request.response);请求的重定向调用的方法是:执行请求的重定向,直接调用response.sendredirect(path)方法;String path= "testServlet";response.sendredirect(path)。也就是重定向调用的方法是response.sendRedirect(),转发调用的方法是request.getrequestDispatcher(“”).forward(request.response)。
页面跳转的时候,转发和重定向都可以跳转页面,但是转发时浏览器只向服务器发送一次请求,可以使用同一个request携带数据(在这里,request的作用域为一次请求),而重定向时浏览器向服务器发送了两次请求,不可以利用request携带数据,能用重定向的就不要用转发。
Javaweb中转发和重定向的最大区别就是,概念不一样,特点方面差不多是相反的方向。在调用对象方面也不一样,还有页面跳转时的使用也不一样。大家根据自己的实际情况进行使用和编写代码就可以了。
HelloWorld10-31 08:24
军哥08-12 23:29
江湖人称小李白12-10 10:41
IT逐梦者08-17 21:43
HelloWorld11-06 11:19