转发/重定向笔记

本文介绍了请求转发相关知识。请求转发在服务器端进行,客户端并不知晓。通过request.getRequestDispatcher(“xxxx.jsp”).forward(request,response)实现,在服务器内部移交request/response处理权,客户端仅知首次请求地址,传输信息不会丢失,还提及了转发和重定向过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请求转发:转发是在服务器端转发的,客户端是不知道的

request.getRequestDispatcher(“xxxx.jsp”).forward(request,response);

请求转发,在一个服务器内部移交request/response的处理权,客户端只会知道第一次请求的地址,中间过程请求的一个甚至多个页面客户端是不知道的,传输的信息不会丢失

转发过程:

客户端首先发送一个请求到服务器端,服务器端发现了匹配的Servlet,并指定其去执行,当Servlet执行完之后,调用getRequestDispacther()方法,把请求转发给指定的页面。

整个流程都是在服务器端完成的,所以Servlet和jsp共享一个request,在转发到的jsp页面中可以取到所有东西,通过getAttribute(),执行完之后把结果返回给客户端。整个过程是一个请求,一个相应。

重定向过程:

客户端发送一个请求到服务器,服务器匹配对应的Servlet,Servlet处理完之后调sendRedirect()方法,这个方法是response(服务器响应回来的方法),让客户端再发送一个请求,去访问sendRedirect()指定的页面,客户端收到命令后立刻发出新的请求去访问页面。这两个请求互不干扰。

在前面的request中setAttribute()的所有东西在后面的request中都获得不了,所以在请求重定向中是两对请求和响应。

总结:

1.转发在服务器端完成的;重定向是在客户端完成的 
2.转发的速度快;重定向速度慢 
3.转发的是同一次请求;重定向是两次不同请求 
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码 
5.转发地址栏没有变化;重定向地址栏有变化 
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成


Forward是在服务器端的跳转,就是客户端一个请求发给服务器,服务器直接将请求相关的参数的信息原封不动的传递到该服务器的其他jsp或servlet去处理,而sendredirect是在客户端的跳转,服务器会返回给客户端一个响应报头和新的URL地址,原来的参数什么的信息如果服务器端没有特别处理就不存在了,浏览器会访问新的URL所指向的servlet或jsp,这可能不是原先服务器上的webservce了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值