转发与重定向:
1.1 转发与重定向的作用:
都可以进行页面的跳转
1.2 什么是转发:
l 概念:由服务器进行页面的跳转
l 原理图
1.2.1 转发的方法:
//转发到demo2 /* //1. 得到转发器,地址就是要转发过去地址 RequestDispatcher dispatcher = request.getRequestDispatcher("/demo2"); //2. 进行转发,带了request和response做为参数 dispatcher.forward(request, response); */ request.getRequestDispatcher("/demo2").forward(request, response); |
1.2.2 转发过程的分析:
1) 地址栏没有变化,还是原来的地址。 ,内容看到是demo2
2)请求只有1次
3) 根目录是项目WebRoot的根目录: /demo2
4) 请求域中的数据不会丢失,因为是同一次请求。方法把请求带到了第2个Servlet
1.3 重定向
1.4 什么是重定向:
l 概念:由浏览器发送的页面的跳转,2次请求。
l 原理图:
1.1.1 重定向的过程分析:
1) 地址栏会变,显示第2个Servlet的地址
2) 请求次数2次
3) 根目录是WebRoot的上一级:/day38-request/demo4
4) 请求域中的数据会丢失,因为不是同一次请求
//向请求域中添加数据 request.setAttribute("name", "李四"); //使用重定向到demo4 response.sendRedirect("/day38-request/demo4"); |
1.1 重定向和转发的区别
区别 | 转发 | 重定向 |
根目录 | WebRoot这一级 /demo2 | WebRoot的上一级webapps这级 /day38/demo2 |
地址栏 | 不会改变,还是原来的地址 | 会改变,显示新的地址 |
跳转者 | 由服务器进行跳转 | 由浏览器进行跳转 |
请求域 | 不会丢失 | 会丢失,不是同一次请求 |
² 转发或重定向后续的代码是否还会运行?
后续的代码都会运行