成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP頁(yè)面的五種跳轉(zhuǎn)方法

開發(fā) 前端
JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。本文主要介紹的是JSP頁(yè)面的五種跳轉(zhuǎn)方法,一起來(lái)看。

JSP技術(shù)使用Java編程語(yǔ)言編寫類XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 下面讓我們來(lái)看JSP頁(yè)面的五種跳轉(zhuǎn)方法。

1. RequestDispatcher.forward() 

是在服務(wù)器端起作用,當(dāng)使用forward()時(shí),Servlet engine傳遞HTTP請(qǐng)求從當(dāng)前的Servlet or JSP到另外一個(gè)Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此時(shí)form提交的所有信息在 b.jsp都可以獲得,參數(shù)自動(dòng)傳遞. 但forward()無(wú)法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同時(shí)forward()無(wú)法在后面帶參數(shù)傳遞,比如servlet?name=frank,這樣不行,可以程序內(nèi)通過(guò)response.setAttribute("name",name)來(lái)傳至下一個(gè)頁(yè)面。 

重定向后瀏覽器地址欄URL不變。 

例:在servlet中進(jìn)行重定向

  1. public void doPost(HttpServletRequest request,HttpServletResponse response)   
  2. throws ServletException,IOException   
  3. {   
  4. response.setContentType("text/html; charset=gb2312");   
  5. ServletContext sc = getServletContext();   
  6. RequestDispatcher rd = null;   
  7. rd = sc.getRequestDispatcher("/index.jsp"); //定向的頁(yè)面   
  8. rd.forward(request, response);   
  9. }  

通常在servlet中使用,不在jsp中使用。

2. response.sendRedirect() 

是在用戶的瀏覽器端工作,sendRedirect()可以帶參數(shù)傳遞,比如servlet?name=frank傳至下個(gè)頁(yè)面,同時(shí)它可以重定向至不同的主機(jī)上,sendRedirect()可以重定向有frame.的jsp文件.

重定向后在瀏覽器地址欄上會(huì)出現(xiàn)重定向頁(yè)面的URL 

例:在servlet中重定向

  1. public void doPost(HttpServletRequest request,HttpServletResponse response)   
  2. throws ServletException,IOException   
  3. {   
  4.   response.setContentType("text/html; charset=gb2312");   
  5.   response.sendRedirect("/index.jsp");   
  6. }   

由于response是jsp頁(yè)面中的隱含對(duì)象,故在jsp頁(yè)面中可以用response.sendRedirect()直接實(shí)現(xiàn)重定位。

注意:

(1) 使用response.sendRedirect時(shí),前面不能有HTML輸出;  

這并不是絕對(duì)的,不能有HTML輸出其實(shí)是指不能有HTML被送到了瀏覽器。事實(shí)上現(xiàn)在的server都有cache機(jī)制,一般在8K(我是說(shuō) JSP SERVER),這就意味著,除非你關(guān)閉了cache,或者你使用了out.flush()強(qiáng)制刷新,那么在使用sendRedirect之前,有少量的HTML輸出也是允許的。

(2) response.sendRedirect之后,應(yīng)該緊跟一句return。 

我們已經(jīng)知道response.sendRedirect是通過(guò)瀏覽器來(lái)做轉(zhuǎn)向的,所以只有在頁(yè)面處理完成后,才會(huì)有實(shí)際的動(dòng)作。既然你已經(jīng)要做轉(zhuǎn)向了,那么后的輸出還的意義呢?而且有可能會(huì)因?yàn)楹竺娴妮敵鰧?dǎo)致轉(zhuǎn)向失敗。 

比較: 

(1) Dispatcher.forward()是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址; 

(2) response.sendRedirect()則是完全的跳轉(zhuǎn),瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。

前者更加高效,在前者可以滿足需要時(shí),盡量使用RequestDispatcher.forward()方法。

注:在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用HttpServletResponse.sendRequest()方法。

3. <jsp:forward page="" /> 

它的底層部分是由RequestDispatcher來(lái)實(shí)現(xiàn)的,因此它帶有RequestDispatcher.forward()方法的印記。

如果在之前有很多輸出,前面的輸出已使緩沖區(qū)滿,將自動(dòng)輸出到客戶端,那么該語(yǔ)句將不起作用,這一點(diǎn)應(yīng)該特別注意。

另外要注意:它不能改變?yōu)g覽器地址,刷新的話會(huì)導(dǎo)致重復(fù)提交

4. 修改HTTP header的Location屬性來(lái)重定向

通過(guò)設(shè)置直接修改地址欄來(lái)實(shí)現(xiàn)頁(yè)面的重定向。 

jsp文件代碼如下:

  1. <%   
  2.  response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);   
  3.  String newLocn = "/newpath/jsa.jsp";   
  4.  response.setHeader("Location",newLocn);   
  5. %>  

5. JSP中實(shí)現(xiàn)在某頁(yè)面停留若干秒后,自動(dòng)重定向到另一頁(yè)

在html文件中,下面的代碼:

  1. <meta http-equiv="refresh" content="300; url=target.jsp">   

它的含義:在5分鐘之后正在瀏覽的頁(yè)面將會(huì)自動(dòng)變?yōu)閠arget.html這一頁(yè)。代碼中300為刷新的延遲時(shí)間,以秒為單位。targer.html為你想轉(zhuǎn)向的目標(biāo)頁(yè),若為本頁(yè)則為自動(dòng)刷新本頁(yè)。

由上可知,可以通過(guò)setHeader來(lái)實(shí)現(xiàn)某頁(yè)面停留若干秒后,自動(dòng)重定向到另一頁(yè)面。 

關(guān)鍵代碼:

  1. String content=stayTime+";URL="+URL;   
  2. response.setHeader("REFRESH",content); 
責(zé)任編輯:于鐵 來(lái)源: phpet.com
相關(guān)推薦

2009-02-17 10:40:26

頁(yè)面跳轉(zhuǎn)JSP教程

2009-07-03 17:48:24

JSP頁(yè)面跳轉(zhuǎn)

2009-07-03 18:32:18

JSP頁(yè)面跳轉(zhuǎn)

2010-08-13 13:25:53

Flex頁(yè)面跳轉(zhuǎn)

2009-07-03 18:12:49

JSP頁(yè)面

2009-07-06 18:23:56

Struts和JSPJSP頁(yè)面

2009-07-02 09:25:41

JSP實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)

2009-07-01 18:08:18

JSP頁(yè)面跳轉(zhuǎn)

2009-07-02 13:36:24

動(dòng)態(tài)頁(yè)面JSP技術(shù)

2009-08-24 18:00:52

ASP.NET模板生成

2009-12-24 17:57:53

WPF頁(yè)面跳轉(zhuǎn)

2010-08-05 09:33:08

Flex頁(yè)面跳轉(zhuǎn)

2009-09-04 16:10:49

JSP頁(yè)面間傳遞參數(shù)

2009-01-18 10:56:27

JSTLEL表達(dá)式JSP標(biāo)準(zhǔn)標(biāo)記庫(kù)

2009-12-16 17:24:26

Ruby on Rai

2010-11-15 11:15:55

2009-07-03 17:24:31

Servlet頁(yè)面跳轉(zhuǎn)

2011-12-16 14:45:36

JavaJSP

2011-05-30 13:37:46

JSP

2015-05-05 10:51:32

php頁(yè)面跳轉(zhuǎn)方法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品一区二区三区四区 | 日本欧美视频 | 国产午夜av片 | 国产视频久久 | 成人伊人网 | av特级毛片 | 久久久九九九九 | 国产乱精品一区二区三区 | 一区二区福利视频 | 色爽女| 久久精品亚洲欧美日韩久久 | 亚洲欧美日韩中文在线 | 日韩免费一区二区 | 国产日韩精品在线 | 51ⅴ精品国产91久久久久久 | 午夜电影网站 | 久久久久国产一区二区三区四区 | 羞羞视频网站免费观看 | 91av久久久 | 中文字幕一区二区三区精彩视频 | 国产精品福利一区二区三区 | 色啪网 | 欧美国产中文 | 成人在线观看免费 | 久久一二区 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 久久se精品一区精品二区 | 99国内精品| 欧美日韩在线播放 | 日韩毛片中文字幕 | 亚洲aⅴ | 香蕉久久久 | 韩日精品视频 | 久久久久国产精品一区三寸 | 一级在线| 色婷婷综合久久久中字幕精品久久 | 免费天天干 | 亚洲欧美一区二区三区在线 | 日韩av一区二区在线观看 | 九九热这里只有精品6 | 做a视频 |