日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts result type redirect 重定向和转发的区别

發(fā)布時(shí)間:2024/4/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts result type redirect 重定向和转发的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們在使用struts2進(jìn)行配置struts.xml的時(shí)候,<result>中有個(gè)tyep屬性用來配置跳轉(zhuǎn)類型

默認(rèn)不寫時(shí)tyep="dispatcher",我們可以根據(jù)我們的需要選擇跳轉(zhuǎn)類型

例如:<result name="list" type="redirect">User_list</result>

這個(gè)result-type的具體類型可以在對應(yīng)的struts2-croe-2.*.jar或者struts2源代碼中的struts-default.xml中找到,在這個(gè)文件中找到<result-type>標(biāo)簽,所有的result-type都在其中有定義.代碼如下:

?

[html]?view plaincopyprint?
  • <result-types>??
  • ??????<result-type?name="chain"?class="com.opensymphony.xwork2.ActionChainResult"/>??
  • ??????<result-type?name="dispatcher"?class="org.apache.struts2.dispatcher.ServletDispatcherResult"?default="true"/>??
  • ??????<result-type?name="freemarker"?class="org.apache.struts2.views.freemarker.FreemarkerResult"/>??
  • ??????<result-type?name="httpheader"?class="org.apache.struts2.dispatcher.HttpHeaderResult"/>??
  • ??????<result-type?name="redirect"?class="org.apache.struts2.dispatcher.ServletRedirectResult"/>??
  • ??????<result-type?name="redirectAction"?class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>??
  • ??????<result-type?name="stream"?class="org.apache.struts2.dispatcher.StreamResult"/>??
  • ??????<result-type?name="velocity"?class="org.apache.struts2.dispatcher.VelocityResult"/>??
  • ??????<result-type?name="xslt"?class="org.apache.struts2.views.xslt.XSLTResult"/>??
  • ??????<result-type?name="plainText"?class="org.apache.struts2.dispatcher.PlainTextResult"?/>??
  • ??</result-types>??
  • ?具體介紹如下:

    chain???
    ????? 用來處理Action鏈,將一個(gè)action的執(zhí)行與另外一個(gè)配置好的action串連起來。用第一個(gè)action的getter方法和第二個(gè)action的setter方法來完成action之間屬性的復(fù)制。?
    ??? com.opensymphony.xwork2.ActionChainResult???
    ??
    dispatcher?????
    ??? 用來轉(zhuǎn)向JSP頁面,這是默認(rèn)的結(jié)果類型,假如在action配置中沒有配置其他的結(jié)果類型,它就會(huì)被使用???
    ??? org.apache.struts2.dispatcher.ServletDispatcherResult???
    ??
    freemaker???
    ????? 處理FreeMarker模板???
    ????? org.apache.struts2.views.freemarker.FreemarkerResult???
    ??
    httpheader???
    ????? 控制非凡HTTP行為的結(jié)果類型?????
    ???? org.apache.struts2.dispatcher.HttpHeaderResult???
    ??
    redirect???
    ????? 重定向到一個(gè)URL?????
    ????? org.apache.struts2.dispatcher.ServletRedirectResult???
    ??
    redirectAction???
    ??? 重定向到一個(gè)Action???
    ??? org.apache.struts2.dispatcher.ServletActionRedirectResult???
    ??
    stream???
    ????? 向?yàn)g覽器發(fā)送InputSream對象,通常用來處理文件下載,還可用于返回AJAX數(shù)據(jù)???
    ???? org.apache.struts2.dispatcher.StreamResult???
    ??
    velocity???
    ????? 處理Velocity模板???
    ???? org.apache.struts2.dispatcher.VelocityResult???
    ??
    xslt???
    ???? 處理XML/XLST模板???
    ???? org.apache.struts2.views.xslt.XSLTResult???
    ??
    plainText???
    ????? 顯示原始文件內(nèi)容,例如文件源代碼???
    ??? org.apache.struts2.dispatcher.PlainTextResult


    重定向和轉(zhuǎn)發(fā)的區(qū)別

    區(qū)別一:

      重定向時(shí)瀏覽器上的網(wǎng)址改變

      轉(zhuǎn)發(fā)是瀏覽器上的網(wǎng)址不變

    區(qū)別二:

      重定向?qū)嶋H上產(chǎn)生了兩次請求

    轉(zhuǎn)發(fā)只有一次請求?

    重定向:?

      發(fā)送請求 -->服務(wù)器運(yùn)行-->響應(yīng)請求,返回給瀏覽器一個(gè)新的地址與響應(yīng)碼-->瀏覽器根據(jù)響應(yīng)碼,判定該響應(yīng)為重定向,自動(dòng)發(fā)送一個(gè)新的請求給服務(wù)器,請求地址為之前返回的地址-->服務(wù)器運(yùn)行-->響應(yīng)請求給瀏覽器?

    轉(zhuǎn)發(fā):?

      發(fā)送請求 -->服務(wù)器運(yùn)行-->進(jìn)行請求的重新設(shè)置,例如通過request.setAttribute(name,value)-->根據(jù)轉(zhuǎn)發(fā)的地址,獲取該地址的網(wǎng)頁-->響應(yīng)請求給瀏覽器?

    區(qū)別三:

      重定向時(shí)的網(wǎng)址可以是任何網(wǎng)址

      轉(zhuǎn)發(fā)的網(wǎng)址必須是本站點(diǎn)的網(wǎng)址

    詳解:

      重定向:以前的request中存放的變量全部失效,并進(jìn)入一個(gè)新的request作用域。
    轉(zhuǎn)發(fā):以前的request中存放的變量不會(huì)失效,就像把兩個(gè)頁面拼到了一起。

    正文開始:?

      先是看上去不同,他們的調(diào)用分別如下:
      request.getRequestDispatcher("apage.jsp").forward(request, response);//轉(zhuǎn)發(fā)到apage.jsp
    response.sendRedirect("apage.jsp");//重定向到apage.jsp
    在jsp頁面中你也會(huì)看到通過下面的方式實(shí)現(xiàn)轉(zhuǎn)發(fā):
      <jsp:forward page="apage.jsp" />
      我在初學(xué)jsp的時(shí)候,對這兩個(gè)概念非常模糊,看別人的例子的時(shí)候,也是一頭霧水,不知道什么時(shí)候該用哪個(gè)。希望下面的解說能對你有所幫助。
      提到轉(zhuǎn)發(fā)和重定向就不得不提到request作用域。很多初學(xué)者都知道當(dāng)我們提交一個(gè)表單時(shí),就創(chuàng)建了一個(gè)新的請求。實(shí)際上,當(dāng)我們點(diǎn)擊一個(gè)鏈接時(shí),也創(chuàng)建了一個(gè)新的請求。那么一個(gè)請求的作用于到底有多大呢?例如:
    在頁面a.jsp中有一個(gè)鏈接<a href="b.jsp?id=1">這是指向b的一個(gè)鏈接,而且還帶了一個(gè)參數(shù)</a>。當(dāng)我們點(diǎn)擊這個(gè)連接的時(shí)候,就產(chǎn)生了一個(gè)請求,為了明確起見,我們把它叫做requestA->B。現(xiàn)在,在b.jsp頁面中我們就可以從這個(gè)請求中獲取信息了。在b.jsp中你可以寫入out.println(request.getParameter("id"))進(jìn)行測試。下面更復(fù)雜一點(diǎn),我們在b.jsp頁面中增加下面的語句:
      request.setAttribute("name","funcreal");
    out.println(request.getAttriblute("name"));//成功顯示了name變量的值。
      現(xiàn)在在b.jsp中再增加一個(gè)鏈接:<a href="c.jsp?age=23">這是指向c的一個(gè)鏈接,而且還帶了一個(gè)參數(shù)</a>,當(dāng)我們點(diǎn)擊這個(gè)連接的時(shí)候,將產(chǎn)生一個(gè)新的請求,這時(shí)requestA-B也就安息了,新的請求叫做requestB-C。同樣的道理,在c.jsp中,我們可以訪問到的變量只有age,因?yàn)閕d,name這兩個(gè)變量都屬于requestA-B,此時(shí)他已經(jīng)不存在了。下面是源代碼:
    a.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <body bgcolor="#ffffff">
    <a href="b.jsp?id=1">指向b.jsp,而且還帶了一個(gè)參數(shù)id=1。requestA-B現(xiàn)在誕生了</a>
    </body>
    </html>?

    b.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <body bgcolor="#ffffff">
    <%
    out.println("id=" + request.getParameter("id"));
    request.setAttribute("name","Func Real");
    out.println("name=" + request.getAttribute("name"));
    %>
    <a href="c.jsp?age=23">requestA-B已經(jīng)結(jié)束了。指向c.jsp,而且還帶了一個(gè)參數(shù)age=23</a>
    </body>
    </html>?

    c.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <body bgcolor="#ffffff">
    <%
    out.println("id=" + request.getParameter("id"));
    out.println("name=" + request.getAttribute("name"));
    out.println("age=" + request.getParameter("age"));
    %>
    </body>
    </html>?

      那么轉(zhuǎn)發(fā)又是怎么回事呢?現(xiàn)在增加一個(gè)頁面叫做d.jsp,并且在c.jsp中</body>前面增加一句<jsp:forward page="d.jsp"/>
    d.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <html>
    <body bgcolor="#ffffff">
    requestB-C的魔爪已經(jīng)伸到了d.jsp頁面
    <%
    out.println("age=" + request.getParameter("age"));
    %>
    </body>
    </html>
    運(yùn)行程序,你會(huì)發(fā)現(xiàn)c頁面中的內(nèi)容沒有顯示出來,因?yàn)閒orward是自動(dòng)執(zhí)行的,地址欄中雖然是c.jsp但實(shí)際上,但瀏覽器中顯示的已經(jīng)是d.jsp的內(nèi)容了,而且看到了從b.jsp傳過來的參數(shù)。你可以簡單得這樣理解:轉(zhuǎn)發(fā),就是延長了requestB-C的作用域,<jsp:forward page="d.jsp"/>,這一句話實(shí)際上是把c.jsp和d.jsp粘到了一起,他們就像是在一個(gè)頁面中。
    如果你用過struts,那么你就知道為什么在Action中,最后一句幾乎總是mapping.findForward("xxx");了。因?yàn)槲覀冊谶@個(gè)Action中設(shè)置的請求作用域的變量都將會(huì)在下一個(gè)頁面(也許是另一個(gè)Action)中用到,所以要用轉(zhuǎn)發(fā)。?

    總結(jié):
    用重定向和轉(zhuǎn)發(fā)不是一個(gè)習(xí)慣問題。而是什么情況下必須用什么的問題。


    總結(jié)

    以上是生活随笔為你收集整理的struts result type redirect 重定向和转发的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 91水蜜桃 | 欧美熟妇7777一区二区 | 在线毛片网站 | 99久久综合国产精品二区 | 男女ss视频 | 337p亚洲精品色噜噜狠狠 | 欧美18免费视频 | 天堂va蜜桃一区二区三区漫画版 | 国产毛片电影 | 性xx紧缚网站 | 精品视频99 | 一卡二卡国产 | 中文字幕成人在线观看 | 日韩一区二区不卡视频 | 15p亚洲| 九色91 | 国产成人 综合 亚洲 | av片在线播放 | 中文字幕在线观看一区二区三区 | 国产一级内谢 | 狠狠干2021 | 搡国产老太xxx网站 高h喷汁呻吟3p | 三级网站国产 | 光溜溜视频素材大全美女 | 涩涩99| 名校风暴在线观看免费高清完整 | 亚洲大色网 | 男男车车的车车网站w98免费 | 精品无码久久久久久久久果冻 | 美女福利影院 | 亚洲xxxxx| 91精品国自产在线观看 | 国产妇女乱一性一交 | 91精品国产视频 | 成人免费一级视频 | 老熟女高潮喷水了 | 国产高潮自拍 | 亚洲天堂激情 | 国产精品系列在线 | 无码一区二区波多野结衣播放搜索 | 91成年人网站 | 新超碰97 | 亚洲精品无码久久久久 | 乱熟女高潮一区二区在线 | 国产精品无码久久久久一区二区 | 熟妇高潮喷沈阳45熟妇高潮喷 | 校园激情亚洲 | 无码av免费精品一区二区三区 | 久久视频中文字幕 | 亚洲永久免费网站 | 国产成人精品视频在线观看 | 黄在线观看 | av不卡一区二区三区 | 亚洲高清无码久久 | 国产人妻精品一区二区三区 | 亚洲性生活网站 | 伊人久久久久噜噜噜亚洲熟女综合 | 色91av| 欧性猛交ⅹxxx乱大交 | 色狠狠av| 亚洲第一区在线播放 | 五月婷婷,六月丁香 | 日本老太婆做爰视频 | 欧美一区二区三区在线播放 | 国产三级午夜理伦三级 | 黄在线免费观看 | 疯狂揉花蒂控制高潮h | 黄色av电影在线观看 | 亚洲美女一区二区三区 | 青草成人| 亚洲伦理视频 | 国产成人aaaa | 女人av在线 | 3d毛片 | 久草剧场| 一区二区三区日韩精品 | caopor在线视频 | 久草视频在线资源站 | 国产毛片久久久久久国产毛片 | a级片在线观看视频 | 视频区小说区图片区 | 日韩欧美国产一区二区 | 91麻豆视频 | 男人的天堂狠狠干 | 久久久男人的天堂 | 久久小草 | 国产精品一级片在线观看 | 国产av国片偷人妻麻豆 | 91看篇| 四虎成人精品在永久免费 | 97中文在线 | www.四虎影视.com | 国产制服丝袜 | 国产三级aaa | 欧美视频一区二区三区四区 | 91最新视频| 一级大片免费 | 国产视频一区二区在线播放 | 亚洲成人一区在线观看 |