JSP由淺入深(10)Beans and Forms處理

來源:互聯網
上載者:User
js 表單(Forms)是在網站互動的一個很普通的方法。JSP使表單處理更加簡單。在JSP中處理表單的標準方法是定義一個“bean”。這個“bean”不是一個完全的Java bean。你只需在定義一個類使它有個地區,這個地區跟表單中的每一個地區相對應。這個類地區必須有“setters”來匹配表單區域的名字。舉個例子,讓我們修改一下前面教程的GetName.html並且收集Email地址和使用者的年齡。具體代碼修改如下:

<HTML>


<BODY>



<FORM METHOD=POST ACTION="SaveName.jsp">



What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>



What's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>



What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4>



<P><INPUT TYPE=SUBMIT>



</FORM>



</BODY>



</HTML>

為了收集資料,我們要定義一個Java類,使它有“username”、“email”、“age”的地區,並且我們要提供“setter”方法“setUsername”、“setEmail”和“setAge”。這個“setter”方法只是一個以“set”開始其後是地區名的一種方法。地區名字的第一個字母要用大寫的。所以如果地區為“email”,它的“setter”方法就為“setEmail”。同樣的,“Getter”方法也類似定義,它只不過是用“get”來代替“set”而已。並且要使得setters和getters必須為公用的(public)。例如:

public class UserData {

String username;

String email;

int age;

public void setUsername( String value )

{

username = value;

}

public void setEmail( String value )

{

email = value;

}

public void setAge( int value )

{

age = value;

}

public String getUsername() { return username; }

public String getEmail() { return email; }

public int getAge() { return age; }

}


一旦你定義了這個類,再編譯它,並且將它放置於網路伺服器的類路徑中。這個伺服器同樣要定義一個特殊的目錄來放置bean類。如果你是使用Blazix你可以將它們放置到“classes”目錄中。如果你必須改變類路徑並且伺服器正在運行,那麼網路伺服器就必須停止並重新啟動。

下面我們來修改一下“SaveName.jsp”以使用bean來收集資料:

<jsp:useBean id="user" class="UserData" scope="session"/>


<jsp:setProperty name="user" property="*"/>



<HTML>



<BODY>



<A HREF="NextPage.jsp">Continue</A>



</BODY>



</HTML>



這裡所有我們需要作的事情是增加一個jsp:useBean標誌以及jsp:setProperty標誌。這個useBean標誌是在session中尋找“UserData”的執行個體。如果執行個體被找到了,它就將更新舊的執行個體;如果執行個體沒有被找到,它就將建立一個UserData新的執行個體(UserData的執行個體被稱為bean),然後將它放置於session中。而setProperty標誌會自動收集輸入的資料,並匹配bean方法的名字,在將資料放置於bean中。

下面修改NextPage.jsp以從bean取出資料:

<jsp:useBean id="user" class="UserData" scope="session"/>

<HTML>



<BODY>



You entered<BR>



Name: <%= user.getUsername() %><BR>



Email: <%= user.getEmail() %><BR>



Age: <%= user.getAge() %><BR>



</BODY>



</HTML>



這裡要注意useBean標籤被重複使用了。這個bean是作為類“UserData”的變數的。由使用者鍵入的資料都被收集在bean中。我們可以不需要“SaveName.jsp”,“GetName.html”的目標就是“NextPage.jsp”,並且只要我們增加一個jsp:setProperty 標誌資料同樣有效。在下一個教程中,我們要使用SaveName.jsp作為一個錯誤處理並自動連接到NextPage.jsp上,換句話說,它叫使用者校正錯誤的資料。

本節教程的輔助練習為:A)編寫一個JSP/HTML使得使用者可以鍵入系統屬性的名字並將顯示有System.getProperty返回數值。B)回到我們剛才手動修改的boolean變數,這時我們不用boolean變數,而是將來自HIDDEN表單區域的變數設定為true或者false。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.