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

区别

|

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值