請求**:
請求**,即request.getrequestdispatcher().forward(),是一種伺服器的行為,客戶端只有一次請求,伺服器端**後會將請求物件儲存,位址列中的url位址不會改變,得到響應後伺服器端再將響應發給客戶端;
請求重定向:
請求重定向,即response.sendredirect(),是一種客戶端行文,從本質上講等同於兩次請求,前一次請求物件不會儲存,位址列的url位址會改變。
用生活中乙個常見的例子來說明兩者之間的區別,某人要去辦理護照:
**:某人去了甲局,甲局看了之後,直到護照應該由乙局來管,但甲局的工作人員並沒有趕走某人,而是讓某人等著,自己在辦公室後面聯絡了乙局的工作人員,乙局護照辦好後送到了甲局,然後甲局的工作人員將護照交給了某人;
重定向:某人去了甲局後,甲局的工作人員說護照不歸他們關,應該去乙局。然後某人自己去了乙局,辦了護照。
這裡寫乙個例子演示兩者的不同。新建乙個web專案,建立三個頁面:reg.jsp、response.jsp、request.jsp。
reg.jsp**如下:
[html]view plain
copy
<
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>
<
tdcolspan="2"
>
<
input
type="submit"
value="提交"
/>
td>
tr>
table
>
form
>
body
>
這裡輸入使用者名稱,然後交給response.jsp處理。頁面如下:
response.jsp**如下:
[html]view plain
copy
response.setcontenttype("text/html;charset=utf-8");
out.println("<
h1>response內建物件
h1>");
out.println("<
hr>");
response.sendredirect("request.jsp");
"request.jsp").forward(request, response);
%>
首先,使用重定向交給request.jsp來處理。
response.jsp**如下:
[html]view plain
copy
<
body
>
<
h1>request物件
h1>
<
hr>
你是誰?
body
>
這裡僅僅獲得使用者名稱進行輸出。
使用重定向時,結果如下:
可以看到,輸入的使用者名稱沒有顯示出來,這是因為重定向本質上相當於兩次請求,而前一次請求不儲存,所以沒能得到使用者名稱。同時,可以看到位址列中的url位址由response.jsp變為了request.jsp。
第二次,修改response.jsp的**如下:
[html]view plain
copy
response.setcontenttype("text/html;charset=utf-8");
out.println("<
h1>response內建物件
h1>");
out.println("<
hr>");
"request.jsp");
request.getrequestdispatcher("request.jsp").forward(request, response);
%>
使用**,將請求**給request.jsp來處理,結果如下:
可以看到,頁面得到了請求中的使用者名稱並進行顯示,這是由於**時客戶端只有一次請求,伺服器會儲存這次請求,等到**返回時將結果返回給客戶端。同時,頁面顯示的是request.jsp的內容,但位址列中的url位址並沒有變化。
這就是請求**與請求重定向的區別。
SSH開發常用常見的src下建的包名
com.公司名.專案名.action 寫控制邏輯,客戶傳送請求到此處,經過處理 如資料庫操作 將介面返回給客戶。com.公司名.專案名.dao 資料庫操作的方法。com.公司名.專案名.daoimpl 資料庫操作的方法的具體實現 com.公司名.專案名.service 業務邏輯的方法 com.公司名...
Linux下建立rpm包介紹
本文只是簡單的介紹乙個linux下為乙個新的專案,建立自己的rpm 安裝包,裡面包含rpm 一些基本術語和基本概念的介紹.作為入門級的參考使用 rpmbuild的預設建立目錄為 home rpmbuild 目錄,可以通過如下命令建立 rpmdev setuptree這個預設工作路徑通常在 usr l...
Linux下建立倉庫的軟體包createrepo
createrepo是linux下的建立倉庫的軟體包。create是建立的意思,repo是repository的縮寫,是倉庫的意思。yum yellow dog updater,modified 主要的功能是方便新增 刪除和更新rpm軟體包。可以解決軟體包依存問題,更便於管理大量的系統更新問題。它可...