网站建设费可以计业务费吗,网站的推广一般有什么方式,网页制作基础代码,怎么查询网站所有关键词Servlet页面跳转实现方法的区别 http://developer.51cto.com/art/200907/133803.htm本文向您介绍Servlet页面跳转实现方法的几种区别#xff0c;包括Servlet和JSP中的不同实现#xff0c;比如Servlet中的redirect方式和forward方式得区别等。一直对Servlet页面跳转的几种方式…Servlet页面跳转实现方法的区别 http://developer.51cto.com/art/200907/133803.htm本文向您介绍Servlet页面跳转实现方法的几种区别包括Servlet和JSP中的不同实现比如Servlet中的redirect方式和forward方式得区别等。一直对Servlet页面跳转的几种方式理解的糊里糊涂的今天在网上搜了一把找到一遍比较好的记下来以后看看。Servlet页面跳转分两部分一是发生在Servlet一是在JSP其实JSP也就是servlet不过还是有点差异滴。Servlet当然在servlet中一般跳转都发生在doGet, doPost等方法里面。1) redirect 方式response.sendRedirect(/a.jsp);页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面不一定局限于本web应用中如response.sendRedirect(URL);跳转后浏览器地址栏变化。这种方式要传值出去的话只能在url中带parameter或者放在session中无法使用request.setAttribute来传递。2) forward方式RequestDispatcher dispatcher request.getRequestDispatcher(/a.jsp);dispatcher .forward(request, response);Servlet页面跳转的路径是相对路径。forward方式只能跳转到本web应用中的页面上。跳转后浏览器地址栏不会变化。使用这种方式跳转传值可以使用三种方法url中带parametersessionrequest.setAttributeJSP1) response.sendRedirect();和servlet的response.sendRedirect()方式一样。此语句前不允许有out.flush()如果有会有异常java.lang.IllegalStateException: Cant sendRedirect() after data has committed to the client. at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)... 跳转后浏览器地址栏变化如果Servlet页面跳转要跳到不同主机下跳转后此语句后面的语句会继续执行如同新开了线程但是对response的操作已经无意义了如果要跳Servlet页面跳转要到相同主机下此语句后面的语句执行完成后才会跳转2) response.setHeader(Location,);此语句前不允许有out.flush()如果有页面不会跳转。跳转后浏览器地址栏变化此语句后面的语句执行完成后才会跳转3) jsp:forward page /此语句前不允许有out.flush()如果有会有异常java.lang.IllegalStateException: forward() not allowed after buffer has committed. at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836) ... Servlet页面跳转后浏览器地址栏不变但是只能跳到当前主机下此语句后面的语句执行完成后才会跳转