页面跳转(request.getRequestDispatcher and sendRedirect)
/**
web跳转页面:
1、请求转发(站内跳转)
2、请求重定向(站外跳转)
地址栏:
请求转发(站内跳转):地址不变
请求重定向(站外跳转):显示跳转路径的名字
取值:
请求转发(站内跳转):可以获取保存在request中的数据
请求重定向(站外跳转):不能获取保存在request中的数据
请求次数:
请求转发(站内跳转):仅一次,所以可以获取到request中的数据
请求重定向(站外跳转):多次,所以不能获取到request中的数据
效率:
请求转发(站内跳转)》请求重定向(站外跳转)
*/
//1、请求转发(站内跳转)
request.getRequestDispatcher("/路径").forward(request, response);// 这里的/表示的是项目根路径
//2、请求重定向(站外跳转)
response.sendRedirect(request.getContextPath()+"/路径");// 这里的/表示的是Tomcat服务器的根路径,如果要在项目里面跳转,就要在前面加request.getContextPath()获取项目名,这样就跟站内跳转的路径一样了。
//3、为什么还叫站外和站内?
request.getRequestDispatcher("http://www.baidu.com").forward(request, response);//不能访问,它会在项目根路径下查找这个路径
response.sendRedirect("http://www.baidu.com");//可以访问
//4、如果使用sendRedirect想要取参数怎么办?
String username = request.getParameter("username");
response.sendRedirect(request.getContextPath()+"/路径?username="+username);
实在抱歉之前的重定向一直都是错的。
这里的获取参数和存储参数在上一篇。