文章編號(hào):1962-5913(2008)13-0098-03
摘要:本文以構(gòu)建一個(gè)簡(jiǎn)單軟件實(shí)訓(xùn)網(wǎng)絡(luò)管理平臺(tái)的項(xiàng)目為例,闡述了編寫(xiě)Java Web開(kāi)發(fā)應(yīng)用技術(shù)教學(xué)案例的總體設(shè)計(jì)思路,并從開(kāi)發(fā)環(huán)境、系統(tǒng)功能等方面介紹了整個(gè)平臺(tái)的開(kāi)發(fā)過(guò)程。
關(guān)鍵詞:軟件項(xiàng)目;教學(xué)案例;開(kāi)發(fā)過(guò)程
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
高等學(xué)校計(jì)算機(jī)專(zhuān)業(yè)教學(xué)從最初的計(jì)算機(jī)理論教育到實(shí)施理論與實(shí)訓(xùn)一體化已成為計(jì)算機(jī)教育改革的必然趨勢(shì),不少學(xué)院成立了IT實(shí)訓(xùn)基地,旨在培養(yǎng)學(xué)生在實(shí)際項(xiàng)目中計(jì)算機(jī)運(yùn)用的綜合能力。為了使學(xué)生更好地理解Java Web開(kāi)發(fā)應(yīng)用技術(shù)知識(shí),我們?cè)O(shè)計(jì)了一個(gè)完整的軟件實(shí)訓(xùn)項(xiàng)目案例,從中提取部分任務(wù)下發(fā)給學(xué)生,讓學(xué)生在完成任務(wù)的同時(shí)獲取專(zhuān)業(yè)理論知識(shí)和相應(yīng)的IT技能。
1軟件項(xiàng)目的設(shè)計(jì)環(huán)節(jié)
1.1設(shè)計(jì)思路
以介紹Servlet、Web頁(yè)面技術(shù)和JSP應(yīng)用為理論依據(jù),以軟件實(shí)訓(xùn)網(wǎng)絡(luò)管理平臺(tái)—Lidasoft項(xiàng)目貫穿整個(gè)案例。內(nèi)容模塊組織結(jié)構(gòu)如表1所示。
1.2項(xiàng)目任務(wù)設(shè)計(jì)
Java Web開(kāi)發(fā)主要由Servlet、Web頁(yè)面技術(shù)和JSP應(yīng)用三個(gè)方面組成,在完成的整個(gè)項(xiàng)目中要分別體現(xiàn)出這些技術(shù)的使用。設(shè)計(jì)的項(xiàng)目任務(wù)描述如下:
(1)Servlet簡(jiǎn)介
Lidasoft是一個(gè)規(guī)范軟件項(xiàng)目實(shí)訓(xùn)管理流程的校園服務(wù)系統(tǒng)。校領(lǐng)導(dǎo)想了解該平臺(tái)的普及和使用程度,項(xiàng)目組需要開(kāi)發(fā)跟蹤訪問(wèn)Lidasoft站點(diǎn)。
每個(gè)用戶(hù)訪問(wèn)Lidasoft主頁(yè)時(shí),點(diǎn)擊數(shù)加1,客戶(hù)瀏覽器運(yùn)行在不同機(jī)器上。如果把點(diǎn)擊計(jì)數(shù)的數(shù)據(jù)保存在客戶(hù)端上,只能用來(lái)記錄某個(gè)特定用戶(hù)登錄平臺(tái)的次數(shù),因此該數(shù)據(jù)必須保存在服務(wù)器端。
為了解決上述問(wèn)題,需要使用編寫(xiě)Web服務(wù)器端程序—Java Servlet技術(shù)。
(2)Web頁(yè)面設(shè)計(jì)
Lidasoft項(xiàng)目組準(zhǔn)備開(kāi)發(fā)一個(gè)Web站點(diǎn),要進(jìn)入軟件項(xiàng)目實(shí)訓(xùn)管理主頁(yè)面,必須首先從此Web站點(diǎn)上登錄。學(xué)生使用學(xué)號(hào)與口令進(jìn)行平臺(tái)登錄。包含確認(rèn)和取消按鈕。當(dāng)學(xué)生點(diǎn)擊確認(rèn)按鈕時(shí),顯示當(dāng)前登錄的人數(shù)。點(diǎn)擊取消按鈕時(shí),刪除輸入的數(shù)據(jù)。
(3)JSP應(yīng)用
需要?jiǎng)?chuàng)建一個(gè)應(yīng)用來(lái)驗(yàn)證學(xué)生輸入的學(xué)號(hào)與口令,即在學(xué)生輸入信息單擊確認(rèn)后,驗(yàn)證輸入數(shù)據(jù)不為空且與存放在數(shù)據(jù)庫(kù)服務(wù)器中的學(xué)號(hào)與口令是否一致。信息正確鏈接顯示當(dāng)前登錄人數(shù)的頁(yè)面,否則不跳轉(zhuǎn)。
為了加速項(xiàng)目開(kāi)發(fā),需要同時(shí)實(shí)現(xiàn)驗(yàn)證數(shù)據(jù)不為空和查詢(xún)數(shù)據(jù)庫(kù)的功能。可以使用服務(wù)器端JSP技術(shù)來(lái)解決同時(shí)構(gòu)造靜態(tài)(Web用戶(hù)登錄界面)和動(dòng)態(tài)(驗(yàn)證數(shù)據(jù)不為空、查詢(xún)數(shù)據(jù)庫(kù))頁(yè)面的問(wèn)題。
2部分界面及功能的實(shí)現(xiàn)
2.1開(kāi)發(fā)跟蹤訪問(wèn)Lidasoft站點(diǎn)
客戶(hù)端每次點(diǎn)擊http://10.11.5.64:8000/lidasoft/jishu,即向服務(wù)器端發(fā)送了一個(gè)請(qǐng)求,通過(guò)調(diào)用Servlet的service()中的doPost()方法來(lái)實(shí)現(xiàn)計(jì)數(shù)變量count加1。下面是點(diǎn)擊數(shù)加1的Servlet服務(wù)器端子程序:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class jishuServlet extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
//ServletConfig對(duì)象內(nèi)容傳遞至超類(lèi)
super.init(config);
}
// 定義計(jì)數(shù)變量跟蹤訪問(wèn)Lidasoft站點(diǎn)
static int count;
//處理請(qǐng)求對(duì)象并用\"響應(yīng)\"對(duì)象的方法將響應(yīng)傳回給客戶(hù)機(jī)
public void doGet(HttpServletRequest r, HttpServletResponse s) throws ServletException, IOException
{
s.setContentType(\"text/html\");
PrintWriter out=s.getWriter();
count++;
out.println(\"<html>\");
out.println(\"<head><title> HTTPServlet </title></head>\");
out.println(\"<body>\");
out.println(\"Now the Number is :\" + String.valueOf(count) + \"\\");
out.println(\"</body></html>\");
}
public void doPost(HttpServletRequest r, HttpServletResponse s) throws ServletException, IOException
{
s.setContentType(\"text/html\");
PrintWriter out=s.getWriter();
count++;
out.println(\"<html>\");
out.println(\"<head><title> HTTPServlet </title></head>\");
out.println(\"<body>\");
out.println(\"Now the Number is :\" + String.valueOf(count) + \"\\");
out.println(\"</body></html>\");
}
//提供相關(guān)Servlet的信息
public String getServletInfo()
{
return \"HTTPServlet Information\";
}
public void destroy()
{}
}
2.2創(chuàng)建Web用戶(hù)界面
用戶(hù)登錄界面是一個(gè)包含表單的HTML頁(yè)面,當(dāng)用戶(hù)點(diǎn)擊確認(rèn)按鈕時(shí),名為jishu的Servlet將接收登錄材料,并執(zhí)行doPost()方法。創(chuàng)建的Web用戶(hù)界面效果如圖1所示。
2.3創(chuàng)建基于JSP的動(dòng)態(tài)Web頁(yè)面
JSP是充滿(mǎn)標(biāo)準(zhǔn)HTML代碼的文本文件,其中加入了一些類(lèi)似Java的代碼,它向JavaBean描述需求的數(shù)據(jù)。后者提供所需的Bean組件。組件中定義相應(yīng)屬性,類(lèi)及數(shù)據(jù)操作的方法。以下是JavaBean查詢(xún)數(shù)據(jù)庫(kù)的子程序。
import java.io.*;
import java.sql.*;
public class loginBean
{
//聲明Bean的私有屬性,初值為空
private String textfield=\" \";
private String password=\" \";
//用來(lái)連接和查詢(xún)數(shù)據(jù)庫(kù)的類(lèi)
Connection con = 1;
Statement s = 1;
ResultSet r = 1;
//使用set與get方法訪問(wèn)Bean屬性
public void settextfield(String textfield)
{
this.textfield=textfield;
}
public void setpassword(String password)
{
this.password=password;
}
public String gettextfield()
{
return textfield;
}
public String getpassword()
{
return password;
}
public loginBean() throws ClassNotFoundException
{
Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
}
//查詢(xún)數(shù)據(jù)庫(kù),驗(yàn)證數(shù)據(jù)正確性
public boolean AccountValidate()
{
booleanvalidate=1;
String passwordNo=\"\";
try
{
textfield=gettextfield();
password=getpassword();
con=DriverManager.getConnection(\"jdbc:odbc:LidaSource\",\"sa\",\"\");
String Query = \"Select password_no from Login_inf where textfield_id='\"+
textfield+\"'\" ;
s = con.createStatement();
r = s.executeQuery(Query);
//執(zhí)行查詢(xún)
while(r.next())
{
passwordNo = r.getString(1);
}
passwordNo=passwordNo.trim();
password=password.trim();
//檢驗(yàn)外部輸入值是否與 passwordNo值相符,相同則為有效數(shù)據(jù)
if(passwordNo.equals(password))
{
validate = true;
}
}
catch(Exception e)
{
System.err.print(e);
}
return validate;
}
}
3結(jié)束語(yǔ)
Java Web開(kāi)發(fā)應(yīng)用的教學(xué)案例以完整的軟件項(xiàng)目結(jié)合Java Web開(kāi)發(fā)技術(shù)的方式分別介紹了Java的Web開(kāi)發(fā)應(yīng)用中所使用的服務(wù)器端技術(shù)。內(nèi)容涵蓋Servlet的生命周期,如何在J2EE服務(wù)器上部署Servlet,怎樣從Html頁(yè)面訪問(wèn)Servlet,怎樣在表單中調(diào)用Servlet的方法,如何使用JavaBean從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù),如何使用JSP標(biāo)簽從內(nèi)部調(diào)用JavaBean顯示數(shù)據(jù),以及怎樣從JSP跳轉(zhuǎn)至Servlet頁(yè)面中。
通過(guò)項(xiàng)目任務(wù)的指派,引導(dǎo)學(xué)生在操作步驟的指引下自主獨(dú)立的完成實(shí)踐任務(wù),整合系統(tǒng),然后再體會(huì)項(xiàng)目設(shè)計(jì)的思路和流程,從而掌握專(zhuān)業(yè)知識(shí)的要點(diǎn)。
參考文獻(xiàn)
[1] Steven Haines, Stephen Potts. Java 2 Primer Plus中文版[M]. 北京:人民郵電出版,2003:271-368.
[2] NIIT. Enterprise Java Programming Part2(企業(yè)級(jí)JAVA的應(yīng)用)[M]. 2001:13-42.
A Teaching case in Java Web programming
ZHANG Qin
(Department of Computer Science, Shanghai Lida Polytechnic Institute, Shanghai 201609,China)
Abstract: This paper introduces a design for a network management platform of the software project development., including some teaching case in Java Web programs, the development environment of the platform, system functions and so on..
Key words: software project, teaching case, software process design