多语言展示
当前在线:380今日阅读:113今日分享:31

请求转发,重定向

请求转发与重定向的适用场景及其异同
方法/步骤

如何从服务器端的某个资源访问另一个资源A:访问方式从服务器端的某个资源访问另一个资源通常有两种访问方式一种叫做请求转发一种叫做请求重定向B:请求转发eg:老师交给班长一个工作任务,就是今晚帮忙关闭机器;但是班长今晚有事情,不能做这个工作,但是班长怕我说他,他就把这个工作交给别人做了;转天老师来就看到  电脑已经被关闭了  在老师的眼里  这个工作还是班长做的在web程序中,就是一个servlet可以把一个请求再发送给另一个servlet(类似于工作转移)但是对于客户端来说  它还是认为工作是第一个servlet完成的第一个servlet把工作交给第二个servlet去完成的过程就叫做请求转发请求转发使用的request是同一个  请求转发是一次请求一旦把请求参数放入到request中,则只要是请求转发,无论转发过程中经历多少个资源,则在这些资源中都可以获取放入request中的参数值请求转发是不会改变浏览器的请求路径编写请求转发的路径是不需要写项目名称的请求转发的响应体是最后一个处理请求的servlet返回的信息C:请求重定向eg:老师交给班长一个工作任务,就是今晚帮忙关闭机器;但是班长今晚有事情,不能做这个工作;班长就向老师反馈,我不能做这个工作,但是某个同学可以做;然后老师就又找这个同学去做这个事情;最终事情做完,老师知道是哪个同学完成的这个事情在web程序中,就是一个servlet可以把请求再返回给客户端,由客户端再请求第二个servlet去完成但是对于客户端来说  它还是知道工作是第二个servlet完成的在以上的描述中,第一个servlet把工作返回了客户端,由客户端再交给第二个servlet去完成,这个过程就叫做请求重定向请求重定向是两次请求两次请求的结果就是对应两个request第一个request是客户端把参数发送给HelloServlet03在HelloServlet03输出了请求参数在HelloServlet03中使用重定向把一个请求路径返回给客户端浏览器第二个request是浏览器再使用第一个servlet返回的路径去访问HelloServlet04D:请求转发和重定向的区别 D1:请求转发——一个请求——一个request对象    请求重定向——两次请求——两个request D2:使用请求转发   浏览器的url是不会发生改变的    使用请求重定向   浏览器的url是会发生变化的 D3:使用请求转发   只要是在这个转发流程中,每一个servlet都可以获取请求参数    使用重定向, 只是第一次浏览器给某个servlet发送的请求参数可以被接收到。    重定向的servlet是接收不到请求参数的(需要把请求参数再次传递) D4:请求转发可以访问应用WEB-INF下的资源    而请求重定向是不可以访问应用WEB-INF下的资源     所以以上的问题就牵扯了  如果考虑资源的安全性,可以把资源放到本应用的WEB-INF下  这样使用重定向方式不能访问(也就意味着使用浏览器不能访问)  客户从别的地方使用浏览器就不能访问这个资源 只能使用请求转发从后台程序访问 D5:使用请求重定向可以从本系统的某个资源访问别的系统的某个资源

推荐信息