国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > WEB開發(fā) > 正文

請(qǐng)求轉(zhuǎn)發(fā)與請(qǐng)求重定向的區(qū)別

2024-04-27 15:05:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

請(qǐng)求轉(zhuǎn)發(fā):

請(qǐng)求轉(zhuǎn)發(fā),即request.getRequestDispatcher().forward(),是一種服務(wù)器的行為,客戶端只有一次請(qǐng)求,服務(wù)器端轉(zhuǎn)發(fā)后會(huì)將請(qǐng)求對(duì)象保存,地址欄中的URL地址不會(huì)改變,得到響應(yīng)后服務(wù)器端再將響應(yīng)發(fā)給客戶端;

請(qǐng)求重定向:

請(qǐng)求重定向,即response.sendRedirect(),是一種客戶端行文,從本質(zhì)上講等同于兩次請(qǐng)求,前一次請(qǐng)求對(duì)象不會(huì)保存,地址欄的URL地址會(huì)改變。

用生活中一個(gè)常見的例子來(lái)說(shuō)明兩者之間的區(qū)別,某人要去辦理護(hù)照:

轉(zhuǎn)發(fā):某人去了甲局,甲局看了之后,直到護(hù)照應(yīng)該由乙局來(lái)管,但甲局的工作人員并沒有趕走某人,而是讓某人等著,自己在辦公室后面聯(lián)系了乙局的工作人員,乙局護(hù)照辦好后送到了甲局,然后甲局的工作人員將護(hù)照交給了某人;

重定向:某人去了甲局后,甲局的工作人員說(shuō)護(hù)照不歸他們關(guān),應(yīng)該去乙局。然后某人自己去了乙局,辦了護(hù)照。

這里寫一個(gè)例子演示兩者的不同。新建一個(gè)web項(xiàng)目,創(chuàng)建三個(gè)頁(yè)面:reg.jsp、response.jsp、request.jsp。

reg.jsp代碼如下:

[html] view plain copy 在CODE上查看代碼片<body>    <h1>你好</h1><hr>    <form name="regForm" action="response.jsp" method="post">    <table>      <tr>        <td>用戶名:</td>        <td><input type="text" name="username"/></td>      </tr>      <tr>         <td colspan="2"><input type="submit" value="提交"/></td>      </tr>    </table>    </form>  </body>  這里輸入用戶名,然后交給response.jsp處理。頁(yè)面如下:

response.jsp代碼如下:

[html] view plain copy 在CODE上查看代碼片<%      response.setContentType("text/html;charset=utf-8");            out.<body>    <h1>request對(duì)象</h1><hr>       你是誰(shuí)?<%=request.getParameter("username") %>    </body>  這里僅僅獲得用戶名進(jìn)行輸出。

使用重定向時(shí),結(jié)果如下:

可以看到,輸入的用戶名沒有顯示出來(lái),這是因?yàn)橹囟ㄏ虮举|(zhì)上相當(dāng)于兩次請(qǐng)求,而前一次請(qǐng)求不保存,所以沒能得到用戶名。同時(shí),可以看到地址欄中的URL地址由response.jsp變?yōu)榱藃equest.jsp。

第二次,修改response.jsp的代碼如下:

[html] view plain copy 在CODE上查看代碼片<%      response.setContentType("text/html;charset=utf-8");            out.println("<h1>response內(nèi)置對(duì)象</h1>");      out.println("<hr>");      //response.sendRedirect("request.jsp");      request.getRequestDispatcher("request.jsp").forward(request, response);  %>  使用轉(zhuǎn)發(fā),將請(qǐng)求轉(zhuǎn)發(fā)給request.jsp來(lái)處理,結(jié)果如下:

可以看到,頁(yè)面得到了請(qǐng)求中的用戶名并進(jìn)行顯示,這是由于轉(zhuǎn)發(fā)時(shí)客戶端只有一次請(qǐng)求,服務(wù)器會(huì)保存這次請(qǐng)求,等到轉(zhuǎn)發(fā)返回時(shí)將結(jié)果返回給客戶端。同時(shí),頁(yè)面顯示的是request.jsp的內(nèi)容,但地址欄中的URL地址并沒有變化。

這就是請(qǐng)求轉(zhuǎn)發(fā)與請(qǐng)求重定向的區(qū)別。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萍乡市| 六盘水市| 双辽市| 施甸县| 西乌珠穆沁旗| 宾阳县| 通榆县| 连城县| 略阳县| 和平区| 福海县| 阿拉善右旗| 八宿县| 十堰市| 鲁山县| 十堰市| 道孚县| 博白县| 浙江省| 昌平区| 肥城市| 鲁甸县| 枣强县| 晋江市| 南宁市| 比如县| 新蔡县| 安陆市| 东丰县| 抚宁县| 台安县| 滦平县| 阿勒泰市| 白朗县| 金华市| 崇文区| 新乐市| 祁东县| 琼海市| 泽普县| 娱乐|