转发与重定向

重定向:

重新确定请求方向,也就是说发送者是服务器,执行者是浏览器,服务器通知浏览器重新发送请求


response.sendRedirect( url );

建议使用绝对路径(http://localhost:8080/项目名/文件夹名/文件名)
也可以来使用相对路径:直接是文件名(前提是在与当前 servlet 一个路径下)
如果是以/ 开头,/项目名/文件名


转发:

在服务器端调用一个方法,这个时候浏览器端的 地址是不变的

request.getRequestDispatcher("/index1.jsp").forward(request, response); //只显示最后一个页面的内容

request.getRequestDispatcher("/index1.jsp").forward(request, response); //合并所有页面的内容
如果URL 以 / 开头 URL 应该是一个相对于当前项目的跟的路径

区别:

重定向:可以使用当前 web  项目的URL , 也可以指定其他 web 资源
转发:只可以指定当前 web 项目的URL

重定向:在第一次请求中设置值,在重定向后不能获取,因为两次请求,创建了两个 request 
转发:在第一次请求中设置值,在转发后可以获取,注意这里可以传递过去值的引用,但是request 的对象时不同的

如果仅仅是转到某个页面用重定向,如果需要多个 servlet 传递数据时,用转发


你可能感兴趣的:(Java)