欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

请求转发与重定向的区别,适用情况及路径问题

程序员文章站 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文件目录 /项目名… 即路径后需要加项目名。
只要不以/开头的都是相对路径,从当前资源出发找到其他资源的过程:
“./”:代表目前所在的目录。
“…/”:代表上一层目录。