日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Servlet頁(yè)面跳轉(zhuǎn)實(shí)現(xiàn)方法的區(qū)別

一直對(duì)Servlet頁(yè)面跳轉(zhuǎn)的幾種方式理解的糊里糊涂的,今天在網(wǎng)上搜了一把,找到一遍比較好的,記下來(lái),以后看看。

Servlet頁(yè)面跳轉(zhuǎn)分兩部分,一是發(fā)生在Servlet,一是在JSP,其實(shí)JSP也就是servlet,不過(guò)還是有點(diǎn)差異滴。

Servlet:
 
當(dāng)然,在servlet中,一般跳轉(zhuǎn)都發(fā)生在doGet, doPost等方法里面。

1)  redirect 方式

response.sendRedirect("/a.jsp");

頁(yè)面的路徑是相對(duì)路徑。sendRedirect可以將頁(yè)面跳轉(zhuǎn)到任何頁(yè)面,不一定局限于本web應(yīng)用中,如:

response.sendRedirect("URL");

跳轉(zhuǎn)后瀏覽器地址欄變化。
 
這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無(wú)法使用request.setAttribute來(lái)傳遞。

2) forward方式

RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp");

dispatcher .forward(request, response);

Servlet頁(yè)面跳轉(zhuǎn)的路徑是相對(duì)路徑。forward方式只能跳轉(zhuǎn)到本web應(yīng)用中的頁(yè)面上。

跳轉(zhuǎn)后瀏覽器地址欄不會(huì)變化。

使用這種方式跳轉(zhuǎn),傳值可以使用三種方法:url中帶parameter,session,request.setAttribute

JSP

1)  response.sendRedirect();

和servlet的response.sendRedirect()方式一樣。

此語(yǔ)句前不允許有out.flush(),如果有,會(huì)有異常:

java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)

...
跳轉(zhuǎn)后瀏覽器地址欄變化

如果Servlet頁(yè)面跳轉(zhuǎn)要跳到不同主機(jī)下,跳轉(zhuǎn)后,此語(yǔ)句后面的語(yǔ)句會(huì)繼續(xù)執(zhí)行,如同新開(kāi)了線程,但是對(duì)response的操作已經(jīng)無(wú)意義了;

如果要跳Servlet頁(yè)面跳轉(zhuǎn)要到相同主機(jī)下,此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn);

2)  response.setHeader("Location","");

此語(yǔ)句前不允許有out.flush(),如果有,頁(yè)面不會(huì)跳轉(zhuǎn)。

跳轉(zhuǎn)后瀏覽器地址欄變化

此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn)

3) 

此語(yǔ)句前不允許有out.flush(),如果有,會(huì)有異常:

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頁(yè)面跳轉(zhuǎn)后瀏覽器地址欄不變,但是只能跳到當(dāng)前主機(jī)下

此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn)


本文標(biāo)題:Servlet頁(yè)面跳轉(zhuǎn)實(shí)現(xiàn)方法的區(qū)別
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/djcdipo.html