请求转发--浅谈

客户端发送请求给Servlet,servlet经过处理,可以将处理完的数据转发给Servlet,jsp或html。请求转发格式如下:

RequestDispatcher requestDispatcher = request.getRequestDispatcher("/xxx");//获取requestDispatcher对象,/路径实际为:http://ip地址:端口号/项目名
requestDispatcher.forward(request,response);//将Serevlet转发到其他资源
//requestDispatcher.include(request,response);//

如果转发给Servlet,那么只能是其service方法可以执行此操作。forward是将控制权交出去,最后会返回原Servlet,但不能继续输入响应信息,include则控制器没有交出去,最后返回原Servlet的时候,可以继续输入响应信息。forward的HttpServletRespose对象不能写入数据,只能在转发过去的Respose对象中输入响应信息。include中的Servlet不能编写响应头和响应码。平时基本只会使用forward,故而,如果一个Servlet需要请求转发,只需要注意,不要在原Servlet中输入响应信息到HttpServletResponse对象中即可。

请求转发的几个特点:

1.浏览器地址栏不发生变化,他是一次请求。

2.可以转发到WEB-INF目录下。(ps:正常是无法访问这个目录下的)

3.转发的过程中,是共享HttpServletRequest的数据的。

4.不可以访问当前项目外的资源(URL

5./ 斜杠在请求转发中路径实际为:http://ip地址:端口号/项目名

 

posted @ 2020-03-29 16:33  linglongfang  阅读(199)  评论(0)    收藏  举报