形象的解释下两者的概念
转向:小明找小庸借钱,小庸不好意思说没有,就去找小黄借钱。其中小明就发起了一次请求。
重定向:小明找小庸借钱,小庸直接说没有钱,让小明找小黄借钱,小明跑去找小黄借钱。其中小明发起了两次请求。
转向:
代码中实现“转向”的方式:利用requestDispatcher 接口
例子:index.html ->servlet1(转发到)-> index2.jsp
利用HttpServletRequest的getRequestDispatcher(path) path是指定转发的目标地址。
req.getRequestDispatcher("/index2.jsp").forward(req, resp);//转发
假如设定个index.html 先跳转到servlet1里;然后在servlet1的doget方法里调用上述代码,实现跳转到index2.jsp里
重定向:
代码中实现“转向”的方式:利用Redirect接口
利用HttpServletResponse的sendRedirect(path)path是指定重定向的目标地址。
resp.sendRedirect("/WebPro/index2.jsp");//重定向
转发和重定向的区别:
1.请求的转发是一种服务器的行为,转发时request对象会被保存,也就是说“被转发到
了另一个servlet或其他资源中的request对象,跟请求转发的request是同一个对象”。
又由于这个过程是服务器行为,所以客服端的地址栏不会发生改变,从始到终请求只有一次,
一个。
2.请求的重定向是一种客服端行为,实际上期间发生了两次请求,前一次的请求request对象
不会作保存,两个servlet里的request对象不是同一个,且地址栏地址会发生改变。
3.转发只能装发到web应用的内部资源;重定向可以是任何资源例如重定向到百度。
4.转发中的地址“/”是web应用的根目录;重定向的地址“/”是站点根目录。注意web应用的根目录指定是项目里的webcontent下的目录,站点根目录指的是http://localhost:8080/后的目录
jsp页面也可以操作转向和重定向: