请求转发--浅谈
客户端发送请求给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地址:端口号/项目名

浙公网安备 33010602011771号