手撕forward 和 redirect

在设计Web应用的时候,通常要把有一个系统进行结构化设计,按照模块进行划分,让不同的Servlet来实现不同的功能,例如可以让其中的一个Servlet接收用户的请求,另一个Servlet来处理用户的请求。为了实现这种程序的模块化,就需要保证在不同的Servlet之间可以相互跳转,而Servlet有两种方式:forward和redirect方式

  1. forward是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL相应的内容读取过来,而客户端并不知道,因此客户端浏览器的地址栏中不会显示向后的地址,还是原来的地址。由于在整个定向的过程中用的是同一个request,因此forward会将request信息带到被定向的JSP或Servlet中使用。

                                 

 

 

      2. redirect则是客户端重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重新发送请求,因此,浏览器中会显示跳转后的地址。同时由于这种方式比forward方式多了一次网络请求,所以forward效率更高。需要注意的是,客户端重定向可以通过设置特定的http头或者写Javascript脚本实现。

 

                          

 一般当forward方式可以满足要求时候,尽可能使用forward方式。但在有些情况下,需要跳转到其他服务器上的资源,则必须使用redirect方式。

filter作用是什么?

 filter使用户可以改变一个reqeust并且修改一个response。filter不是一个Servlet,不能产生一个response。而且能够在一个request到达Servlet之前预处理request,也可以在离开时处理response,filter其实是一个“servlet chaining”(Servlet 链)

一个filter包括:

1) 在Servlet被调用之前截获;

2)在Servlet被调用之前检查Servlet Request;

3)根据需要修改Request头和Request数据;

4)根据需要修改Response头和Response数据;

5)在Servlet调用之后截获。

 

拒绝平庸,拒绝码农。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值