使用JSP大约有下列三种跳转方式
responsesendRedirect();
responsesetHeader("Location""");
<jsp:forward page="" />
经过试验得到下面的一些规则
一 responsesendRedirect()
此语句前不允许有outflush()如果有outflush()会有异常
javalangIllegalStateException: Cant sendRedirect() after data has committed to the client
at comcauchoserverconnectionAbstractHttpResponsesendRedirect(AbstractHttpResponsejava:)
跳转后浏览器地址栏变化
如果要跳到不同主机下跳转后此语句后面的语句会继续执行如同新开了线程但是对 response的操作已经无意义了
如果要跳到相同主机下此语句后面的语句执行完成后才会跳转
二 responsesetHeader("Location""")
此语句前不允许有outflush()如果有outflush()页面不会跳转
跳转后浏览器地址栏变化
此语句后面的语句执行完成后才会跳转
三 <jsp:forward page="" />
此语句前不允许有outflush()如果有会有异常
javalangIllegalStateException: forward() not allowed after buffer has committed
at comcauchoserverwebappRequestDispatcherImplforward(RequestDispatcherImpljava:)
at comcauchoserverwebappRequestDispatcherImplforward(RequestDispatcherImpljava:)
at comcauchojspPageContextImplforward(PageContextImpljava:)
跳转后浏览器地址栏不变但是只能跳到当前主机下
此语句后面的语句执行完成后才会跳转