request和response的學習總結

親愛的朋友們,雖然我們沒有認識,但是爲了讓更多的朋友少犯錯,我在這裏提醒大家,當要使用web技術傳遞字符串時,切記:傳過來的字符串有可能爲null,這時候,如果你要使用字符串進行比較,要注意了,千萬不要把有可能爲空的字符串作爲主要比較者,例如,字符串str1有可能爲空,而字符串str2一定不會爲空,這時如果想要比較這兩個字符串,應該這樣比較:str2.equals(str1);千萬不要這樣寫str1.equals(str2);如果你非要寫後者,如果出現了什麼問題,會讓你很苦惱的,切記切記。

下面是我對請求轉發和請求轉向的膚淺理解。
request對象有一個請求轉發的方法:request.getRequestDispatcher("路徑").forward(request,response);
response對象有一個請求重定向 方法:response.sendRedirect("路徑");
關於請求轉發和請求重定向的區別:
相同點:
 都可以轉向另一個指定的頁面
不同點:
 1.轉向的頁面地址欄不同:
  a.請求轉發轉向後的地址欄仍然是原地址
  b.請求重定向轉向後的地址欄是另一個地址
 2.指向路徑不同:
  a.請求轉發指定的是當前工程下的相對或者絕對路徑,路徑只能是本服務器地址
   1.相對路徑:
    如:request.getRequestDispatcher("servlet路徑").forward(request,response);
   2.絕對路徑
    如:request.getRequestDispatcher("/servlet路徑").forward(request,response);
   注意:推薦大家使用請求轉發時使用相對路徑,使用絕對路徑也可以,但要保證你的xml中的配置的路徑要對應到這個地址,不然一個小小的不注意,會讓你很苦惱    的。
說說我的一個苦惱吧
我建立了一個工程名稱爲login的項目,在login中建立了一個包one,在one中建立了兩個servlet,分別命名爲Servlet1、Servlet2,都是按照默認的方式自動生成。在Servlet1中還用了請求轉發到Servlet2,採用絕對路徑的方式發送。關鍵代碼如下:
  request.getRequestDispatcher("/Servlet2").forward(request,response);
運行後出現了404錯誤。提示錯誤信息是請求路徑不存在。我記得在此之前,我也是這麼寫的代碼,不出現什麼問題。於是 我檢查代碼,重新認識體驗了轉發的路徑的問題。原來我之前建立的servlet的路徑是直接在工程下面的。而絕對路徑,就是在工程下的絕對路徑。然而我的這個Servlet2在服務器中的路徑是login/servletervlet2。所以採用絕對路徑寫轉向到servlet2時,代碼應該是:request.getRequestDispatcher("/servlet/Servlet2").forward(request,response);

  b.請求重定向指定的是絕對路徑,可以是本服務器地址,也可以是其他的網頁地址
   如:response.sendRedirect("/工程名稱/servlet路徑");

 

發佈了66 篇原創文章 · 獲贊 13 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章