建立一個(gè)叫StudentDBServlet 的servlet
StudentDBServlet包括以下的方法:初始化、服務(wù)請(qǐng)求、顯示一個(gè)學(xué)生記錄、登記記錄。
初始化Servlet
在Servlet的整個(gè)生命周期中,當(dāng)servlet被請(qǐng)求的時(shí)候,init()首先被調(diào)用
用戶請(qǐng)求服務(wù)
當(dāng)一個(gè)servlet 被請(qǐng)求的時(shí)候,service()方法被調(diào)用,service()方法是servlets的主要入口,如果是第一次調(diào)用這個(gè)servlet那么init()先被調(diào)用,接著是service()方法。
這個(gè)service()方法是根據(jù)用戶的不同請(qǐng)求去調(diào)用適當(dāng)?shù)姆椒ǎ缭谶@個(gè)例子中,如果所有的字段都不為空,那么可以調(diào)用registerstudent()方法了。
顯示這個(gè)學(xué)生列表
lastname=request.getParameter("lastname");
這個(gè)request對(duì)象是HttpServletRequest的一個(gè)實(shí)例,request對(duì)象包含了表單數(shù)據(jù),表單的數(shù)據(jù)被getParameter()方法取得。toString( )方法是返回?cái)?shù)據(jù)的字符串格式,toWebString( )方法返回的是HTML格式的列表,toTableString( )方法返回的是HTML格式的表格行。
servlet送一個(gè)請(qǐng)求到數(shù)據(jù)庫(kù)服務(wù)器去得到學(xué)生的列表,在init( )方法中準(zhǔn)備了這樣的SQL語(yǔ)句:
select * from students order by lastname;
這個(gè)SQL語(yǔ)句返回的是以lastname排序的學(xué)生里表,在下面的while 循環(huán)語(yǔ)句中去取得結(jié)果集中的每條記錄;
int rowNumber=1;
while((dataResultSet.next()){
aStudent=new Student(dataResultSet);
tableBody+=aStudent.toTableString(rowNumber);
rowNumber++;
}
每條記錄被用來(lái)產(chǎn)生以個(gè)新的Student對(duì)象,這個(gè)toTableString()方法是去得到學(xué)生數(shù)據(jù)的字符串描述,toTableString( )返回的是HTML格式的表格行。
大量的服務(wù)器端的程序已經(jīng)有了,但是我們還沒(méi)有完工,還必須把HTML頁(yè)面返回給Web瀏覽器。這個(gè)是被response對(duì)象中的output Stream來(lái)做的,這個(gè)response對(duì)象是HttpServletResponse的一個(gè)實(shí)例,response對(duì)象是用來(lái)返回給客戶端的
printWriter outputToBrowser=new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
outputToBrowser.println(htmlpage);
outputToBrowser.close();
登記一個(gè)學(xué)生
registerStudent( )方法產(chǎn)生以個(gè)基于HTML表單數(shù)據(jù)的Student對(duì)象,這個(gè)對(duì)象用來(lái)設(shè)置SQL語(yǔ)句的參數(shù)
registerStatement.setString(LAST_NAME_POSITION,aStudent.getLastName( ));
?。òィ付汲榻盍?,把原代碼都附送給你們吧,隨便你們?cè)趺刺幚砹耍?br>