jsp学习5-请求转发和重定向

来源:互联网 发布:农村淘宝开业剪彩流程 编辑:程序博客网 时间:2024/06/03 21:23

1、请求转发与重定向的实现

<body><a href="forwardServlet">forwardServlet</a><a href="redirectServlet">redirectServlet</a></body>

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("forwardServlet doGet()");//请求的转发//1、调用HttpServletRequest的getRequestDispatcher()方法获取RequestDispatcher对象//调用getRequestDispatcher()需要传入要转发的地址String path = "testServlet";RequestDispatcher requestDispatcher = request.getRequestDispatcher(path);//2、调用RequestDispatcher的forward(request,response)进行请求的转发requestDispatcher.forward(request, response);}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//执行请求的重定向,直接调用response的sendRedirect方法String path = "testServlet";response.sendRedirect(path);System.out.println("redirectServlet doGet()");}

2、请求转发与重定向的区别

-----本质区别
请求的转发只发出了一次请求,而重定向则发出了两次请求
----具体区别1
请求的转发:地址栏是初次发出请求的地址,比如上面的会显示../forwardServlet
请求的重定向:地址栏不再是初次发出请求地址,地址栏为最后响应的那个地址,比如上面经过redirectServlet的重定向会显示../testServlet
-----具体区别2
请求转发:在最终的 Servlet 中, request 对象和中转的那个 request 是同一个对象. 
请求的重定向: 在最终的 Servlet 中, request 对象和中转的那个 request 不是同一个对象.
如何验证:request设置attribute只有一个请求才可以访问到
request.setAttribute("hello", "forward");  //forwardServlet
Object attr = request.getAttribute("hello");
System.out.prinln(attr);
-----具体区别3
请求的转发:只能转发给当前web应用的资源
请求的重定向:可以重定向到任何资源,比如可以重定向到百度
------具体区别4
请求的转发:/代表的是当前web应用的根目录
请求的重定向:代表的是当前web站点的根目录



原创粉丝点击