java轉發
⑴ 請教大神。java里如何獲得請求轉發的url
request.getRequestDispatcher(url2).forward(request, response);
然後獲取url2的數據用 req.getAttribute("name");
⑵ JAVA里重定向,轉發,轉向有什麼區別
java 重定向和轉發的區別
重定向和轉發有一個重要的不同:當使用轉發時,JSP容器將使用一個內部的方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。 與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。因為,當你使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL, 而當使用轉發時,該URL會保持不變。重定向的速度比轉發慢,因為瀏覽器還得發出一個新的請求。同時,由於重定向方式產生了一個新的請求,所以經過一次重 定向後,request內的對象將無法使用。
轉發和重定向的區別
不要僅僅為了把變數傳到下一個頁面而使用session作用域,那會無故增大變數的作用域,轉發也許可以幫助你解決這個問題。
重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。
轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。
⑶ java web!頁面轉發功能實現。
轉發用request.getRequestDispatcher(),這個是伺服器內部的跳轉,屬於同一次請求,所以request里的值可以傳遞。在Forward.jsp頁面里做判斷
if(request.getParameter("type").equals("teacher"))
request.getRequestDispatcher("Teacher.jsp")
然後在Teacher.jsp里,仍然可以用request.getParameter("name")來取出Login頁面里提交的用戶名,密碼也是一樣。
那麼Student頁面也是一樣的方法。
⑷ java中轉發和重定向的區別
轉發與重定向的區別如下:
轉發是伺服器行為,重定向是客戶端行為
1.轉發在伺服器端完成的;重定向是在客戶端完成的
2.轉發的速度快;重定向速度慢
3.轉發的是同一次請求;重定向是兩次不同請求
4.轉發不會執行轉發後的代碼;重定向會執行重定向之後的代碼
5.轉發地址欄沒有變化;重定向地址欄有變化
6.轉發必須是在同一台伺服器下完成;重定向可以在不同的伺服器下完成
在servlet中調用轉發、重定向的語句如下:
request.getRequestDispatcher("new.jsp").forward(request,
response);//轉發到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp
轉發過程:客戶瀏覽器發送http請求,web伺服器接受此請求,調用內部的一個方法在容器內部完成請求處理和轉發動作,將目標資源發送給客戶;在這里,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
重定向過程:客戶瀏覽器發送http請求,web伺服器接受後發送302狀態碼響應及對應新的location給客戶瀏覽器,客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址,伺服器根據此請求尋找資源並發送給客戶。在這里location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
重定向,其實是兩次request
第一次,客戶端request
A,伺服器響應,並response回來,告訴瀏覽器,你應該去B。這個時候IE可以看到地址變了,而且歷史的回退按鈕也亮了。重定向可以訪問自己web應用以外的資源。在重定向的過程中,傳輸的信息會被丟失。
⑸ Java中頁面跳轉和請求轉發的區別
讓瀏覽器獲得另外一個URL所指向的資源可以使用請求轉發(RequestDispatcher.forward)或則是重定向技術(HttpServletResponse.sendRedirect),但是兩者的內部機制有很大的區別:
1 請求轉發只能將請求轉發給同一個WEB應用中的組件,而重定向還可以重新定向到同一站點不同應用程序中的資源,甚至可以定向到一絕對的URL。
2 重定向可以看見目標頁面的URL,轉發只能看見第一次訪問的頁面URL,以後的工作都是有伺服器來做的。
3 請求響應調用者和被調用者之間共享相同的request對象和response對象,重定向調用者和被調用者屬於兩個獨立訪問請求和響應過程。
4 重定向跳轉後必須加上return,要不然頁面雖然跳轉了,但是還會執行跳轉後面的語句,轉發是執行了跳轉頁面,下面的代碼就不會在執行了。
假設你去辦理某個執照:
重定向:你先去了A局,A局的人說:「這個事情不歸我們管,去B局」,然後,你就從A退了出來,自己乘車去了B局。
轉發:你先去了A局,A局看了以後,知道這個事情其實應該B局來管,但是他沒有把你退回來,而是讓你坐一會兒,自己到後面辦公室聯系了B的人,讓他們辦好後,送了過來。
⑹ javaweb請求轉發和重定向
樓主的get.html目錄不正確,兩個修改方法:1.不改a標簽內容,在項目下新建一個HelloServlet目錄,把get.html放進去;2.修改a標簽,href="/WEB-INF/get.html"。但是有一點,WEB-INF目錄對外是不可見的,這種方法思路是對的,但沒實踐過。建議a標簽里寫一個servlet地址,由servlet重定向到get.html或get.jsp,這才是javaweb的設計思想。
⑺ java伺服器轉發
1、A B C 通過socket連接到伺服器
2、A和B進入游戲狀態的話,這個狀態由伺服器維護。
3、當A發消息給伺服器,比如走了一步棋,這時候由伺服器通過socket發給B就可以了。
通過socket轉發。
⑻ java ActionForward 如何轉發參數
可以這樣:在b的最後寫return new ActionForward("/xxx.do?method=a");
其中xxx是你在struts-config.xml配置的action訪問名稱,同時在b中記得寫request.setAttribute("id",id);這樣才能讓a接收
⑼ java 數據轉發
我們不能保證不丟失,但是我們可以在丟失的時候再發啊,所以我們可以模範TCP協議,下面是我的想法,僅供參考:
1。服務端為每一個發送的數據加一個標識,並在發送的時候該數據加入到一個數組中,這個數組同時要記錄這個數據加入的時間(之後要用到這個時間)
2。客戶端收到一個數據的時候,要返回服務端一個接受成功的信息,這個信息包含數據標識,服務端收到這個信息就將數組中對應的數據刪除;
3。伺服器隔一段時間,就讀取那個數組,判斷數據加入數組的時間到當前時間的時間差,如果時間差大於某一個值(這個值要好好考慮,不過應該要大於1秒),我們就假設發送失敗了,那就重發這個數據
4。重復第2和3步驟,直到所有數據發完以及數組為空,那麼客戶端就應該接受到所有數據了
當然這肯定會影響性能,祝你好運