Java Web 请求转发&重定向
重要区别:
1. 地址栏变化
重定向(站外跳转):地址栏变化,显示跳转页面路径
请求转发(站内跳转):地址栏不变化
2. 取值
重定向(站外跳转):不可以获取到在request中的参数与保存的值
请求转发(站内跳转):可以获取到在request中的参数与保存的值
3.请求次数
重定向(站外跳转): 发起多次请求,所以不能获取到保存在request中的值
请求转发(站内跳转):发起一次请求
4.性能: 重定向(站外跳转) < 请求转发(站内跳转)
5.请求转发:request.getRequestDispatcher("/request/Servlet2").forward(request, response);//默认GET请求 /代表项目根
因为以防因为相对路径的原因造成404,所以建议前面加/,请求转发时/代表项目根路径(example:http://localhost:8088/day03_servlet_scope)
重定向:response.sendRedirect(request.getContextPath() + "/request/Servlet2?username=" + p_username); /代表服务器根
因为以防因为相对路径的原因造成404,所以建议前面加/,请求转发时/代表服务器根路径(example:http://localhost:8088),所以要在前面动态添加request得到的项目名(自带/)