servlet跳转页面的几种方法.doc
文本预览下载声明
servlet跳转页面的几种方法
一直对Servlet的几 ? 跳servlet,一是在JSP,其JSP也就是servlet,不 Servlet: 当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面。 1)? redirect 方式 response.sendRedirect(/a.jsp); sendRedirect可以将web应用中,如: response.sendRedirect(); 跳 这种方式要传值出去的话,只能在url中parameter或者放在session中,无法使用request.setAttribute来 2) forward方式 RequestDispatcher dispatcher = request.getRequestDispatcher(/a.jsp); dispatcher .forward(request, response); forward方式只能跳web应用中的页面上。 跳 使用这种方式跳转,传值可以使用三种方法:url中parameter,session,request.setAttribute JSP: 1)? 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) ... 跳 如果要跳到不同主机下,跳response的操作已 如果要跳到相同主机下,此 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) ... 跳转后浏览器地址栏不变,但是只能跳到当前主机下 此
说一下JSP的几种跳转吧!
下面是两种比较重要的跳转,我还是与上次的一次,把我做的笔记贴出来:
A、jsp:forward page=”url” /:效率高,速度快
a.地址栏不改变跳转——服务器端跳转,服务器之间内部转,相同的request,可传参;
b.执行到跳转语句后无条件立刻跳转——之后的代码不再被执行;
注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;
c.使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);
d.通过jsp:param name=”” value=”” /传递参数。
e.地址中的”/”代表是:http://localhost:8080/Test
B、response.sendRedirect(“地址”):效率低,速度慢
a.地址栏改变跳转——客户端跳转(其中地址可以是任意的)
b.所有代码执行完毕之后再跳转,跳转语句后面的代码还是会执行,除非在其后面加上return(return)需复杂一些。
%
Response.sendRedirect(“aa.jsp”);
boolean b = true;
if(b){
Return;
}
System.out.println(“aaaaaaaaaa”);
%
c.不能保存request属性——地址改变了,客户端跳转,不同的request
d.通过对URL地址的重写传递参数:
显示全部