使用Java Bean組件
特點(diǎn):是可以在任何地方重用包括了可以在應(yīng)用程序中、其它組件、文檔、web站點(diǎn)和應(yīng)用程序構(gòu)造器工具的多種方案中再利用。
JavaBean的概念
JavaBean是一種獨(dú)立于平臺(tái)和結(jié)構(gòu)的應(yīng)用程序接口,它本身可以忽略內(nèi)部的結(jié)構(gòu)及細(xì)節(jié)問題,只需定義其外部的特征及對(duì)外功能就行。
它有三種接口面可以獨(dú)立對(duì)外進(jìn)行開發(fā),就是:屬性、方法和事件
JavaBean的屬性
JSP組件的屬性有兩種:?jiǎn)沃祵傩?、索引屬?div style="height:15px;">
單值屬性:
相當(dāng)于平時(shí)編程中定義的一個(gè)成員變量,它只能有一個(gè)數(shù)據(jù)值,這個(gè)數(shù)據(jù)值的類型可以是Java中的任意數(shù)據(jù)類型,包括類和接口。
如:
int counter;
float tax;
String name;
Date datetime;
注:一種特殊的單值屬性(布爾屬性),它只有兩種允許的值:true、false
索引屬性:
相當(dāng)于平時(shí)說的數(shù)組,當(dāng)存放一批同類型的數(shù)據(jù)時(shí),需要用到索引屬性。
如:int ID[];
String name[];
Float score[];
JavaBean的方法
方法包括構(gòu)造方法和訪問方法。
構(gòu)造方法:
類似于類中的構(gòu)造器(即對(duì)它及它的成員變量進(jìn)行初始化),它的方法名要和此JavaBean的類相同。如:
package student;
public class student{
int counter;ind ID[];
String name[];
float score[];
boolean whiszkid;
public student(){
ID=new int[50];
name=new String[50];
score=new float[50];
counter=0;
}
}
訪問方法:
就是對(duì)組件中定義的屬性的訪問,包括讀和寫(一般情況與在Java中定義和使用的方法差不多),注意它的取名規(guī)則:
讀取一個(gè)屬性:getXXX()
改寫一個(gè)屬性:setXXX()
訪問單值屬性:如對(duì)上面的counter單值屬性,它的兩個(gè)訪問方法可以為:
讀取屬性值:
public int getCounter{
return counter;
}
改寫屬性值:
public void setCounter(int counter){
this.counter=counter;
}
訪問布爾型的單值屬性:對(duì)讀取屬性值采用isXXX()方法
如對(duì)上面的布爾型的屬性whizkid的訪問可以為:
public boolean isWhizkid(){
return whizkid;
}
訪問索引屬性:有時(shí)要定義好幾個(gè)訪問方法,但它們的取名規(guī)則還是一樣的,如對(duì)上面的姓名屬性,它的讀取和改寫方法需這樣定義:
讀取索引屬性中的一個(gè)屬性值:
public String getName(int index){
return name[index];
}
讀取索引屬性中的所有屬性值:
public String[] getName(){
return name;
}
改寫索引屬性中的一個(gè)屬性值:
public void setName(int index,String str){
name[index]=str;
}
改寫索引屬性中的所有屬性值:
public void setName(String[] str){
name=str;
}
在JSP中創(chuàng)建用JavaBean編寫的一個(gè)bean,實(shí)際上就是創(chuàng)建此類的一個(gè)對(duì)象。
客戶端做的工作
客戶端的工作可分兩部分:
一、向服務(wù)器端發(fā)出請(qǐng)求即向服務(wù)器端發(fā)出提交
二、在客戶端進(jìn)行校驗(yàn)、以及頁面的修飾等功能
客戶端提交的方法
客戶端的提交方法分兩種:get與post提交
get可傳遞的信息只有2kb左右,而且是明碼傳送信息,所有的信息均可在地址欄中看見。
post可傳遞大量信息,加密傳送,所有的信息均可在地址欄中是不可見的。
post提交
所有的post提交只能在form中產(chǎn)生,提交方式又分兩種:直接提交(submit提交)、間接提交(腳本提交)
1)直接提交:點(diǎn)擊提交按鈕,立即發(fā)生提交
<form method=post action=*.asp>
<input type=submit value="注冊(cè)">
注:submit按鈕有一個(gè)默認(rèn)事件,就是提交
<input type=submit value="注冊(cè)" onclick="alert(‘hello‘);return ture or false;">
注:在提交前,首先在屏幕上返回一個(gè)警告框"hello",若return的是true,則頁面發(fā)生提交;若return的是false,頁面不會(huì)發(fā)生提交。</form>
2)間接提交:是指點(diǎn)擊按鈕本身并不能完成提交,而只有通過腳本才能完成的提交,稱為間接提交。
<input type=button value="注冊(cè)" onclick="check();submit();">
注:
在onclick處還可為onmousedown、onmouseup等事件名稱
button只是普通按鈕,本身并不能發(fā)生提交,只能通過onclick指定的腳本程序才能完成提交
點(diǎn)擊"注冊(cè)"后,先執(zhí)行onclick事件觸發(fā)的函數(shù),若返回值為true則發(fā)生提交,否則提交中止。
get提交
get提交發(fā)生在form表單和url中
1)在form中產(chǎn)生的
<form method=get action=*.asp>
2)在所有的url中產(chǎn)生的
在地址欄中輸入url地址,后跟所要傳遞的參數(shù)http://*.asp?name=www&age=20
在超鏈接上<a href="*.asp>mode=1&grade=1">click me </a>
在圖片的src屬性中<img src="*.asp?name=www">
在幀里的src屬性中<frame src=" *.asp?name=www" name=框架名>
在asp重定向語句中response.redirect " *.asp?name=www"
在客戶端對(duì)象document中:document.location=" http:// *.asp?name=www"
在客戶端對(duì)象window中:window.open(" http:// *.asp?name=www")
服務(wù)器端做的工作
獲得客戶端信息的方法是通過request對(duì)象來完成的。
客戶端提交到服務(wù)器端的信息分為三類:
第一類:客戶機(jī)信息(包括客戶端的ip地址、端口號(hào)、主機(jī)名、提交方式等等)
第二類:通過form或url方式提交到服務(wù)器端的信息
第三類:cookie信息
獲得第一類信息用:
request.getHeader("User-agent")返回客戶端瀏覽器的版本號(hào)、類型
getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息
request. getMethod():獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法有GET、POST、PUT等類型
request. getRequestURI():獲得發(fā)出請(qǐng)求字符串的客戶端地址
request. getServletPath():獲得客戶端所請(qǐng)求的腳本文件的文件路徑
request. getServerName():獲得服務(wù)器的名字
request.getServerPort():獲得服務(wù)器的端口號(hào)
request.getRemoteAddr():獲得客戶端的IP地址
request.getRemoteHost():獲得客戶端電腦的名字,若失敗,則返回客戶端電腦的IP地址
request.getProtocol():
request.getHeaderNames():返回所有request header的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例
request.getHeaders(String name):返回指定名字的request header的所有值,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例
獲得第二類 get 信息用:
request. getQueryString("變量名呀或控件名")獲得查詢字符串,該串由客戶端以GET方法向服務(wù)器端傳送
獲得第二類 post 信息用:
request.getParameter(String name):獲得客戶端傳送給服務(wù)器端的參數(shù)值,該參數(shù)由name指定
request.getParameterNames():獲得客戶端傳送給服務(wù)器端的所有的參數(shù)名,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例
request.getParameterValues(String name):獲得指定參數(shù)所有值
獲得第三類Cookie信息用:
request.getCookies( "cookie變量名"):返回客戶端的cookie對(duì)象,結(jié)果是一個(gè)cookie數(shù)組