请求转发与重定向的区别,适用情况及路径问题
程序员文章站
2022-04-16 22:05:55
...
区别
|
重定向(response.sendRedirect) | 转发(request.getRequestDispatcher) |
---|---|
跳转在客户端发生 | 跳转在服务端发生 |
地址栏会发生改变 | 地址栏不会发生改变(本站点的网址) |
跳转前后是两个请求(request) | 跳转前后是一个请求(request) |
适用情况
前后两个页面 有数据传递 用请求转发,没有则用重定向。
查询的时候一般使用转发;增删改(update)的时候使用重定向,避免表单重复提交。
范例
查询使用请求转发
req.setAttribute(“list”, list);
req.getRequestDispatcher(“index.jsp”).forward(req, res);//请求转发
添加使用重定向
if (index>0)
res.sendRedirect(“show”);//重定向(防止表单重复提交)
// req.getRequestDispatcher(“show”).forward(req, res);//转发会导致表单数据重复提交
else {
// req.getRequestDispatcher(“add.jsp”).forward(req, res);
res.sendRedirect(“add.jsp”);
}
路径问题
只要路径中以/开头的都叫全路径:
(如果是请求转发)/表示项目根目录(WebContent),即路径后不需要加项目名。
(除了请求转发)重定向,静态资源引用,css引用时 其中/都表示tomcat的webapps文件目录 /项目名… 即路径后需要加项目名。
只要不以/开头的都是相对路径,从当前资源出发找到其他资源的过程:
“./”:代表目前所在的目录。
“…/”:代表上一层目录。
上一篇: CSS中的选择器有哪些?你知道选择器的优先级顺序吗?
下一篇: 请求的转发与重定向