=====框架用着用着感觉整个人都变笨了,昨天,连简单的getattribute和getparameter居然搞混了。趁现在时间充裕,复习一下以前的东西。坚持就是胜利。你不努力,没人替你努力。
1、得到RequestDispatcher对象:
RequestDispatcher对象:用于封装一个由路径所标示的服务器资源
方法一:通过ServletContext(可以是其他能得到的web应用程序的上下文对象,以转发到该应用程序的资源)
RequestDispatcher getRequestDispatcher(java.lang.String path)
//只能以“/”开头的路径,表示相当于当前上下文根的路径
RequestDispatcher getNamedDispatcher(java.lang.String name)
//在web.xml中给出的servlet-name为参数
方法二:通过ServletRequest
RequestDispatcher getRequestDispatcher(java.lang.String path)
//1、以“/”开头的路径,表示相对于当前上下文根的路径;2、没有以“/”开头的路径,表示相对于当前servlet的路径
2、使用RequestDispatcher中的方法
void forward(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOExceptiona、必须在响应被提交给客户端之前被调用
b、调用之后,原来响应缓存中没有提交的内容将被清除
void include(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOExceptiona、被调用的servlet的响应将被并入到原先的响应对象中,原servlet可以继续输出响应信息
3、HttpServletResponse对象的sendRedirect()方法和RequestDispatcher的forward()方法区别:
sendRedirect的工作原理图:
1、
调用sendRedirect()方法,实际上是告诉浏览器Servlet2所在的位置,让浏览器重新访问Servlet2。调用sendRedirect()方法,会在响应中设置Location响应报头。要注意的是,这个过程对于用户来说是透明的,浏览器会自动完成新的会话。
forward()方法:对浏览器和用户都是透明的,浏览器不会发起新的会话
2、
sendRedirect():可以重定向到其他的服务器上的应用程序