欢迎来到HELLO素材网! 南京网站制作选择顺炫科技
丰富的DIV CSS模版、JS,jQuery特效免费提供下载
当前位置:主页 > 建站教程 > 网站制作教程 >

servlet的2种重定向方法计划

发表于2019-04-24 20:08| 次阅读| 来源网络整理| 作者session

摘要:servlet的2种重定向方法计划

servlet的2种重定向方法计划

  在servlet/JSP编程中,服务器端重定向可能经过下面两个方法来完成:
  
  1,使用javax.servlet.RequestDispatcher接口的forward方法,
  
  2,或许使用javax.servlet.http.HttpServletResponse接口的sendRedirect方法。
  
  要使用RequestDispatcher接口的forward方法,首先要失去一个RequestDispatcher对象。servlet技术提供了三种模式来失去它:
  
  1.经过使用javax.servlet.ServletContext接口的getRequestDispatcher方法,将一个蕴含门路的String传递给其它资源。该门路是相对于ServletContext的根门路的。
  
  2.经过使用javax.servlet.ServletRequest接口的getRequestDispatcher方法,将一个蕴含门路的String传递到其它资源。该门路是相对于以后的HTTP申请的。
  
  3.经过使用javax.servlet.ServletContext接口的getNamedDispatcher方法,传递一个蕴含其它资源名字的String。
  
  但要留意,你只要在客户端没有输出时才可能调用forward方法。假设以后页面的缓冲区(buffer)不是空的,那么你在调用forward方法前必须先清空缓冲区。否则,会抛出一个IllegalStateException。forward方法也可能用来将申请发送到一个静态的页面。
  
  在使用RequestDispatcher对象的forward方法来将一个控件从一个叫做ABCServlet的servlet传递到另一个叫做XYZServlet的servlet时,最简略的方法就是把ABCServlet和XYZServlet的类文件放在同一个目录中。经过这种方法,你就可能从URL来调用ABCServlet,从URL来调用XYZServlet了。然后使用forward方法就很简略了。你可能从ServletRequest接口使用getRequestDispatcher,传递第二个servlet的名字。在ABCServlet中,你可能写下面的代码:
  
  RequestDispatcherrd=
  
  request.getRequestDispatcher("SecondServlet");
  
  rd.forward(request,response);
  
  你不需求在XYZServlet前放/符号。这种方法是最简略的,由于你基本不需求担心两个servlets的门路。
  
  稍简单的方法就是把下面这个String传递到ServletRequest的getRequestDispatcher:"/servlet/XYZServlet"
  
  假设你必须调用一个从ServletContext的getRequestDispatcher失去的RequestDispatcher对象的forward方法,你需求将“/VirtualDir/servlet/XYZServlet”作为门路参数来传递,如下:
  
  RequestDispatcherrd=
  
  getServletContext().getRequestDispatcher(
  
  "/servlet/XYZServlet");
  
  rd.forward(request,response);
  
  <jsp:forwardpage=”OtherPage.jsp”/>在后果servlet中就转换成了下面的代码:pageContext.forward("OtherPage.jsp");
  
  使用HttpServletResponse接口的sendRedirect方法
  
  该方法把一个命令发送到阅读器,让阅读器对在location中指定的URL提出申请。该方法可能承受绝对的或相对的URLs。假设传递到该方法的参数是一个相对的URL,那么Webcontainer在将它发送到客户端前会把它转换成一个绝对的URL。假设地址是相对的,没有一个’/’,那么Webcontainer就以为它是相对于以后的申请URI的。
  
  你应该使用哪种技巧?
  
  [QUOTE]为了编写最有效的代码,你应该了解这两种重定向技巧的不同。forward方法是在Webcontainer内部工作的。sendRedirect方法需求到客户端的一个往复。所以forward方法比sendRedirect要快。然而,使用forward方法有局限性,你只能重定向到同一个Web运用程序中的一个资源。而sendRedirect方法可能让你重定向到任何URL。论断:假设可能处理你的成绩,那么就用forward方法。只要当你不能用forward方法时才使用sendRedirect方法。
  
  forward不会扭转以后阅读器地址栏中的门路