編碼規(guī)范及其代碼_第1頁
編碼規(guī)范及其代碼_第2頁
編碼規(guī)范及其代碼_第3頁
編碼規(guī)范及其代碼_第4頁
編碼規(guī)范及其代碼_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

北京長江軟件網(wǎng)上招聘系統(tǒng)編碼規(guī)范北京長江軟件PAGE第4頁共36頁 項目編號200602006文檔編號13密級內(nèi)部網(wǎng)上招聘系統(tǒng)編碼規(guī)范及其代碼說明V1.0北京長江軟件公司評審日期:2006年目錄1.導(dǎo)言 31.1目的 31.2范圍 31.3縮寫說明 31.4術(shù)語定義 41.5引用標(biāo)準(zhǔn) 41.6參考資料 41.7版本更新信息 42.編碼格式規(guī)范 42.1縮進(jìn)排版 52.2行長度 52.3斷行規(guī)則: 52.4空行 63.命名規(guī)范 73.1包(Packages) 73.2類(Classes) 73.3接口(Interfaces) 73.4方法(Methods) 73.5變量(Variables) 73.6實例變量(InstanceVariables) 83.7常量(Constants) 84.聲明規(guī)范 84.1每行聲明變量的數(shù)量 84.2初始化 84.3布局 94.4包的聲明 94.5類和接口的聲明 95.語句規(guī)范 95.1簡單語句 105.2復(fù)合語句 106.注釋規(guī)范 106.1注釋的方法 106.2開頭注釋 116.3類和接口的注釋 127.代碼范例 128.目錄規(guī)范 14

1.導(dǎo)言1.1目的該文檔的目的是描述網(wǎng)上招聘系統(tǒng)項目的編碼規(guī)范和對代碼的說明,其主要內(nèi)容包括:編碼規(guī)范命名規(guī)范注釋規(guī)范語句規(guī)范聲明規(guī)范目錄設(shè)置代碼說明本文檔的預(yù)期的讀者是:開發(fā)人員項目管理人員質(zhì)量保證人員1.2范圍該文檔定義了本項目的代碼編寫規(guī)范,以及部分代碼描述和所有代碼的說明。1.3縮寫說明JSPJavaServerPage(Java服務(wù)器頁面)的縮寫,一個腳本化的語言。MVCModel-View-Control(模式-視圖-控制)的縮寫,表示一個三層的結(jié)構(gòu)體系。EJBEnterpriseJavaBean(企業(yè)級JavaBean)的縮寫。1.4術(shù)語定義ClassJava程序中的一個程序單位,可以生成很多的實例。Packages由很多的類組成的工作包。1.5引用標(biāo)準(zhǔn)[1]《企業(yè)文檔格式標(biāo)準(zhǔn)》 北京長江軟件有限公司[2]《Java語言編寫規(guī)范》北京長江軟件有限公司軟件工程過程化組織1.6參考資料[1]《實戰(zhàn)struct》〔美〕TedHusted 機(jī)械工業(yè)出版社[2]《軟件重構(gòu)》清華大學(xué)出版社1.7版本更新信息本文檔的更新記錄如表D-1所示。表D-1版本更新記錄修改編號修改日期修改后版本修改位置修改內(nèi)容概述0002006.5.280.1全部初始發(fā)布版本0012006章修改代碼 2.編碼格式規(guī)范2.1縮進(jìn)排版4個空格作為縮進(jìn)排版的一個單位。2.2行長度盡量避免一行的長度超過80個字符,用于文檔中的例子應(yīng)該使用更短的行長,長度一般不超過70個字符。2.3斷行規(guī)則:當(dāng)一個表達(dá)式無法容納在一行內(nèi)時,可以依據(jù)如下一般規(guī)則斷開:在一個逗號后面斷開在一個操作符前面斷開寧可選擇較高級別(higher-level)的斷開,而非較低級別(lower-level)的斷開(見下面的例子)新的一行應(yīng)該與上一行同一級別表達(dá)式的開頭處對齊如果以上規(guī)則導(dǎo)致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進(jìn)8個空格以下是兩個斷開算術(shù)表達(dá)式的例子。前者屬于更高級別的斷開,因為斷開處位于括號表達(dá)式的外邊。longName1=longName2*(longName3+longName4-longName5)+4*longname6;//推薦longName1=longName2*(longName3+longName4-longName5)+4*longname6;//避免以下是兩個縮進(jìn)方法聲明的例子。前者是常規(guī)情形。后者若使用常規(guī)的縮進(jìn)方式將會使第二行和第三行移得很靠右,所以代之以縮進(jìn)8個空格。//規(guī)范的縮進(jìn) someMethod(intanArg,ObjectanotherArg,StringyetAnotherArg, ObjectandStillAnother){ … } //以8個空格來縮進(jìn),以避免非??v深的縮進(jìn) privatestaticsynchronizedhorkingLongMethodName(intanArg, ObjectanotherArg,StringyetAnotherArg, ObjectandStillAnother){ … }if語句的換行通常使用8個空格的規(guī)則,因為常規(guī)縮進(jìn)(4個空格)會使語句體看起來比較費勁。比如: //不可取的縮進(jìn)方法 if((condition1&&condition2) ||(condition3&&condition4) ||(condition5&&condition6)){ doSomethingAboutIt();} //可取的縮進(jìn)方法一 if((condition1&&condition2) ||(condition3&&conditin4) ||!(condition5&&condition6)){ doSomethingAboutIt(); } //可取的縮進(jìn)方法二 if((condition1&&condition2)||(conditin3&&condition4) ||!(condition5&&condition6)){ doSomethingAboutIt(); }三種可取的三元運算符的縮進(jìn)格式: alpha=(aLongBooleanExpression)?beta:gamma; alpha=(aLongBooleanExpression)?beta :gamma; alpha=(aLongBooleanExpression) ?beta :gamma;2.4空行空行將邏輯相關(guān)的代碼段分隔開,以提高可讀性。下列情況應(yīng)該總是使用兩個空行:一個源文件的兩個片段(section)之間類聲明和接口聲明之間下列情況應(yīng)該總是使用一個空行:兩個方法之間方法內(nèi)的局部變量和方法的第一條語句之間塊注釋或單行注釋之前一個方法內(nèi)的兩個邏輯段之間,用以提高可讀性3.命名規(guī)范命名規(guī)范使程序更易讀,從而更易于理解。它們也可以提供一些有關(guān)標(biāo)識符功能的信息,以助于理解代碼。3.1包(Packages)一個唯一包名的前綴總是全部小寫的ASCII字母并且是一個頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO3166標(biāo)準(zhǔn)所指定的標(biāo)識國家的英文雙字符代碼。包名的后續(xù)部分根據(jù)不同機(jī)構(gòu)各自內(nèi)部的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門(department),項目(project),機(jī)器(machine),或注冊名(loginnames)。如:com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese3.2類(Classes)類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)。3.3接口(Interfaces)大小寫規(guī)則與類名相似。3.4方法(Methods)方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。3.5變量(Variables)采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名不應(yīng)以下劃線或美元符號開頭,盡管這在語法上是允許的。變量名應(yīng)簡短且富于描述。變量名的選用應(yīng)該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為i,j,k,m和n,它們一般用于整型;c,d,e,它們一般用于字符型。3.6實例變量(InstanceVariables)大小寫規(guī)則和變量名相似,除了前面需要一個下劃線,如:int_employeeId.3.7常量(Constants)類常量和ANSI常量的聲明,應(yīng)該全部大寫,單詞間用下劃線隔開。4.聲明規(guī)范4.1每行聲明變量的數(shù)量推薦一行一個聲明,因為這樣以利于寫注釋。亦即:intlevel;//indentationlevelintsize;//sizeoftable要優(yōu)于:intlevel,size;不要將不同類型變量的聲明放在同一行,例如:intfoo,fooarray[];//WRONG!

注意:上面的例子中,在類型和標(biāo)識符之間放了一個空格??崭窨墒褂弥票矸娲?.2初始化盡量在聲明局部變量的同時初始化。唯一不這么做的理由是變量的初始值依賴于某些先前發(fā)生的計算。4.3布局只在代碼塊的開始處聲明變量。(一個塊是指任何被包含在大括號"{"和"}"中間的代碼。)不要在首次用到該變量時才聲明之。這會把注意力不集中的程序員搞糊涂,同時會妨礙代碼在該作用域內(nèi)的可移植性。voidmyMethod(){ intint1=0;//beginningofmethodblock if(condition){ intint2=0;//beginningof"if"block }}該規(guī)則的一個例外是for循環(huán)的索引變量for(inti=0;i<maxLoops;i++){...}4.4包的聲明在多數(shù)Java源文件中,第一個非注釋行是包語句。我們的網(wǎng)上招聘系統(tǒng)包的聲明采用如下規(guī)范:packagecom.changjiangcompany.struts.form;//form包packagecom.changjiangcompany.struts.action;//action包4.5類和接口的聲明當(dāng)編寫類和接口是,應(yīng)該遵守以下格式規(guī)則:在方法名與其參數(shù)列表之前的左括號"("間不要有空格左大括號"{"位于聲明語句同行的末尾右大括號"}"另起一行,與相應(yīng)的聲明語句對齊,除非是一個空語句,"}"應(yīng)緊跟在"{"之后方法與方法之間以空行分隔5.語句規(guī)范5.1簡單語句每行至多包含一條語句,例如:argv++;//推薦argc--;//推薦argv++;argc--;//避免5.2復(fù)合語句復(fù)合語句是包含在大括號中的語句序列,形如"{語句}"。遵循原則如下:被括其中的語句應(yīng)該較之復(fù)合語句縮進(jìn)一個層次左大括號"{"應(yīng)位于復(fù)合語句起始行的行尾;右大括號"}"應(yīng)另起一行并與復(fù)合語句首行對齊。大括號可以被用于所有語句,包括單個語句,只要這些語句是諸如if-else或for控制結(jié)構(gòu)的一部分。這樣便于添加語句而無需擔(dān)心由于忘了加括號而引入bug。6.注釋規(guī)范Java程序有兩類注釋:實現(xiàn)注釋(implementationcomments)和文檔注釋(documentcomments)。實現(xiàn)注釋使用/*...*/和//界定的注釋。文檔注釋(被稱為"doccomments")是Java獨有的,并由/**...*/界定。文檔注釋可以通過javadoc工具轉(zhuǎn)換成HTML文件,描述Java的類、接口、構(gòu)造器,方法,以及字段(field)。一個注釋對應(yīng)一個類、接口或成員。若你想給出有關(guān)類、接口、變量或方法的信息,而這些信息又不適合寫在文檔中,則可使用實現(xiàn)塊注釋或緊跟在聲明后面的單行注釋。例如,有關(guān)一個類實現(xiàn)的細(xì)節(jié),應(yīng)放入緊跟在類聲明后面的實現(xiàn)塊注釋中,而不是放在文檔注釋中。注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。注釋應(yīng)該僅包含與閱讀和理解在注釋里,對設(shè)計決策中重要的或者不是顯而易見的地方進(jìn)行說明是可以的,但應(yīng)避免提供代碼中己清晰表達(dá)出來的重復(fù)信息。6.1注釋的方法程序可以有四種實現(xiàn)注釋的風(fēng)格:塊注釋、單行注釋、尾端注釋和行末注釋。①塊注釋塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個文件的開始處以及每個方法之前。它們也可以被用于其他地方,比如方法內(nèi)部。在功能和方法內(nèi)部的塊注釋應(yīng)該和它們所描述的代碼具有一樣的縮進(jìn)格式。塊注釋之首應(yīng)該有一個空行,用于把塊注釋和代碼分割開來,比如:/**Hereisablockcomment.*/publicclassExample{...注意頂層(top-level)的類和接口是不縮進(jìn)的,而其成員是縮進(jìn)的。描述類和接口的文檔注釋的第一行(/**)不需縮進(jìn);隨后的文檔注釋每行都縮進(jìn)1格(使星號縱向?qū)R)。成員,包括構(gòu)造函數(shù)在內(nèi),其文檔注釋的第一行縮進(jìn)4格,隨后每行都縮進(jìn)5格。②單行注釋短注釋可以顯示在一行內(nèi),并與其后的代碼具有一樣的縮進(jìn)層級。如果一個注釋不能在一行內(nèi)寫完,就該采用塊注釋(參見"塊注釋")。單行注釋之前應(yīng)該有一個空行。以下是一個Java代碼中單行注釋的例子:if(condition){/*Handlethecondition.*/...}③尾端注釋極短的注釋可以與它們所要描述的代碼位于同一行,但是應(yīng)該有足夠的空白來分開代碼和注釋。若有多個短注釋出現(xiàn)于大段代碼中,它們應(yīng)該具有相同的縮進(jìn)。以下是一個Java代碼中尾端注釋的例子:if(input==2){ returnTRUE;/*特殊處理*/}else{ returnisMine(input);/*調(diào)用函數(shù)isMine*/}④行末注釋注釋界定符"http://",可以注釋掉整行或者一行中的一部分。它一般不用于連續(xù)多行的注釋文本;然而,它可以用來注釋掉連續(xù)多行的代碼段。注意:頻繁的注釋有時反映出代碼的低質(zhì)量。當(dāng)你覺得被迫要加注釋的時候,考慮一下重寫代碼使其更清晰。注釋不應(yīng)寫在用星號或其他字符畫出來的大框里。注釋不應(yīng)包括諸如制表符和回退符之類的特殊字符。6.2開頭注釋所有的源文件都應(yīng)該在開頭有一個類似C語言風(fēng)格的注釋,其中列出類名、版本信息、日期、作者以及版權(quán)聲明。我們的網(wǎng)上招聘系統(tǒng)采用的頭注釋統(tǒng)一為:/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006byXXX,Inc.AllRightsReserved.*@Class:ValidateSessionTag*@Summary:對用戶的身份驗證*@Create:2006.05.2江明*@Update:2006.05.02江明*/6.3類和接口的注釋①類/接口文檔注釋(/**……*/):該注釋中所需包含的信息,參見"LogonAction.java"②類/接口實現(xiàn)的注釋(/*……*/):如果有必要的話,該注釋應(yīng)包含任何有關(guān)整個類或接口的信息,而這些信息又不適合作為類/接口文檔注釋。7.代碼范例/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006byXXX,Inc.AllRightsReserved.*@Summary:循環(huán)打印用戶信息*@Create:2006.05.28馮飛*@Update:*/<%@pagelanguage="java"%><%@tagliburi="/struts/tags-bean"prefix="bean"%><%@tagliburi="/struts/tags-html"prefix="html"%><html> <head> <title>JSPforsampleFormform</title> </head> <body> <%--判斷用戶信息--%> <logic:presentname="SampleForm"property="userList"> <%--循環(huán)顯示用戶信息--%> <logic:iterateid="user"name="SampleForm"property="userList"> <tr> <td><bean:writename="user"property="id"/></td> <td><bean:writename="user"property="name"/></td> </tr> </logic:iterate></logic:present> </body></html>

8.目錄規(guī)范開發(fā)環(huán)境是eclipse,開發(fā)之后需要部署到Tomcat服務(wù)器環(huán)境上。所以開發(fā)環(huán)境的目錄結(jié)構(gòu)與運行環(huán)境的目錄結(jié)構(gòu)是一致的,只是在部署的運行環(huán)境中,可以不設(shè)置源代碼的目錄。開發(fā)目錄如圖D-1。編碼過程應(yīng)該按照詳細(xì)設(shè)計的規(guī)劃進(jìn)行,在偽代碼的基礎(chǔ)上,按照編碼標(biāo)準(zhǔn)和規(guī)范進(jìn)行分模塊編碼。開發(fā)環(huán)境是eclipse,首先開發(fā)人員在開發(fā)過程中按照開發(fā)的目錄將相應(yīng)的文件存放在指定的目標(biāo)下,進(jìn)行調(diào)試,如果調(diào)試完成,代碼評審?fù)ㄟ^后,放入基線庫,再從基線庫將代碼放入運行(Tomcat)環(huán)境中。各個目錄的說明如下:1)OnlineCV/src/share 目錄中存放所有的JAVA公用的模塊,詳見基線庫OnlineCV/src/share目錄下文件,表D-2是公用模塊中關(guān)于數(shù)據(jù)庫的基本操作類的代碼。表D-2:數(shù)據(jù)庫的基本操作/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:DB*@Summary:取得數(shù)據(jù)庫連接并對數(shù)據(jù)庫進(jìn)行查詢、增加記錄、刪除記錄操作*@Create:2006.04.27李林*@Update:2006.05.9鞏俐*/packagecom.changjiangcompany.struts.javashare;importjava.sql.*;importjava.util.*;importcom.microsoft.jdbcx.sqlserver.SQLServerDataSource;publicclassDBConnect{ privateStatementstmt=null; privateResultSetrs=null; publicDBConnect(){ try{//初始化連接 Class.forName(("com.microsoft.jdbc.sqlserver.SQLServerDriver")); }catch(java.lang.ClassNotFoundExceptione){ System.err.println("opendb():"+e.getMessage()); } }/** *方法:executeQuery *描述:執(zhí)行查詢記錄操作 *輸入:Stringstrsql要執(zhí)行操作的sql語句 *@返回:ArrayListArrayRs查詢的結(jié)果 *@異常處理:throwsSQLException */publicArrayListexecuteQuery(SQLServerDataSourcesource,StringstrSql)throwsSQLException{Connectioncon=null; rs=null; ArrayListArrayRs=newArrayList(); try{ con=source.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery(strSql); ResultSetMetaDatarsmd=rs.getMetaData(); intnumberOfColumns=rsmd.getColumnCount(); //判斷是否為空 if(!ArrayRs.isEmpty()){ ArrayRs.clear(); } /* *將每條記錄寫入ArrayList里 */ while(rs.next()){ ArrayListarrlist1=newArrayList(); for(intj=1;j<=numberOfColumns;j++){ Strings=rs.getString(j); if(s==null){ s=""; } arrlist1.add(s); } ArrayRs.add(arrlist1); } }catch(Exceptione){ System.out.println("queryerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } } returnArrayRs; }/** *方法:executeInsert *描述:執(zhí)行插入記錄操作 *輸入:Stringstrsql要執(zhí)行操作的sql語句 *返回:boolean插入操作是否正確執(zhí)行 *異常處理:SQLException */ publicbooleanexecuteInsert(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(true); inti=stmt.executeUpdate(strSql); if(i==1){ return(true); } }catch(Exceptione){ System.out.println("Inserterror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } } return(false);}/** *方法:executeUpdate *描述:執(zhí)行更新操作 *輸入:Stringstrsql要執(zhí)行操作的sql語句 *返回:int更新操作的記錄數(shù) *異常處理:SQLException */ publicintexecuteUpdate(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; intj=0; try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(false); j=stmt.executeUpdate(strSql); if(j>0){ mit(); }else{ con.rollback(); } }catch(Exceptione){ System.out.println("updateerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } }returnj;}/** *方法:executeDelete *描述:執(zhí)行刪除操作 *輸入:Stringstrsql要執(zhí)行操作的sql語句 *返回:int刪除操作的記錄數(shù) *異常處理:throwsSQLException */ publicintexecuteDelete(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; intj=0;try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(false); j=stmt.executeUpdate(strSql); if(j>0){ mit(); con.rollback(); } }catch(Exceptione){ System.out.println("Deleteerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } }returnj;}2)OnlineCV/src/Form目錄中存放所有模塊的form模塊,詳見基線庫的OnlineCV/src/Form目錄下文件,表D-3是職位管理中的formAddJobForm模塊的代碼。表D-3:職位管理中的formAddJobForm模塊的代碼/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:AddJobForm*@Summary:只增加職位信息的Form*@Create:2006.05.23章飛*@Update:2006.05.28章飛*/packagecom.changjiangcompany.struts.form;importjavax.servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMapping;/***MyEclipseStruts*Creationdate:04-16-2006**XDocletdefinition:*@struts.formname="submitAnswerForm"*/publicclassSubmitAnswerFormextendsActionForm{ //InstanceVariables /**職位名稱*/ privateStringJobName; /**職位發(fā)布日期*/ privateStringPubDate; /**職位發(fā)布結(jié)束日期*/ privateStringEndDate; /**職位描述*/ privateStringDescription; /**職位要求*/ privateStringRequirements; /**招聘人數(shù)*/ privateintJobNum; //Methods /** *Methodvalidate *@parammapping *@paramrequest *@returnActionErrors */ publicActionErrorsvalidate( ActionMappingmapping, HttpServletRequestrequest) { 。。。。。。 } /** *Methodreset *@parammapping *@paramrequest */ publicvoidreset(ActionMappingmapping,HttpServletRequestrequest) { 。。。。。。 } /** *返回JobName. * */ publicStringgetJobName(){ returnJobName; } /** *賦值JobName. * */ publicvoidsetJobName(StringJobName){ this.JobName=JobName; } /** *返回PubDate. * */ publicStringgetPubDate(){ returnPubDate; } /** *賦值PubDate. * */ publicvoidsetPubDate(StringPubDate){ this.PubDate=PubDate; } /** *返回EndDate. * */ publicStringgetEndDate(){ returnEndDate; } /** *賦值EndDate. * */ publicvoidsetPubDate(StringEndDate){ this.EndDate=EndDate; } /** *返回Description. * */ publicStringgetDescription(){ returnDescription; } /** *賦值Description. * */ publicvoidsetDescription(StringDescription){ this.Description=Description; } /** *返回Requirements. * */ publicStringgetRequirements(){ returnRequirements; } /** *賦值Requirements. * */ publicvoidsetRequirements(StringRequirements){ this.Requirements=Requirements; } /** *返回JobNum. * */ publicintgetJobNum(){ returnJobNum; } /** *賦值JobNum. * */ publicvoidsetJobNum(intJobNum){ this.JobNum=JobNum; }}3)OnlineCV/src/Action目錄中存放所有模塊的Action模塊,詳見基線庫的OnlineCV/src/Action目錄下文件,表D-4是職位管理中的formAddJobAction模塊的代碼。表D-4:職位管理中的formAddJobAction模塊的代碼/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:AddJobAction*@Summary:只增加職位信息的Action*@Create:2006.05.23章飛*@Update:2006.05.28章飛*@Update:2006.05.28章飛*@Update:2006.06.1李杰玉*/packagecom.changjiangcompany.struts.action;importjava.util.Vector;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importjavax.sql.DataSource;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.action.DynaActionForm;importshare.Constants;importcom.changjiangcompany.DB;importcom.changjiangcompany.Job;/***MyEclipseStrutsCreationdate:04-19-2006**XDocletdefinition:**@struts.actionpath="/addJob"name="AddJobForm"input="/position/joblist.jsp"*scope="request"validate="true"*@struts.action-forwardname="addjob"path="/position/jobdetail.jsp"*/publicclassAddJobActionextendsAction{ /** *Methodexecute *@parammapping *@paramform *@paramrequest *@paramresponse *@returnActionForward */ publicActionForwardexecute( ActionMappingmapping, ActionFormform, HttpServletRequestrequest, HttpServletResponseresponse){ //獲取新增加的職位信息 DynaActionFormAddJobForm=(DynaActionForm)form; StringJobName=(String)AddJobForm.get("JobName"); StringPubDate=(String)AddJobForm.get("PubDate"); StringEndDate=(String)AddJobForm.get("EndDate"); StringDescription=(String)AddJobForm.get("Description"); StringRequirements=(String)AddJobForm.get("Requirements"); IntegerJobNum=(Integer)AddJobForm.get("JobNum"); HttpSessionsession=request.getSession(); VectorJobList=newVector(); //連接數(shù)據(jù)庫 ServletContextcontext=servlet.getServletContext(); DataSourcedataSource=(DataSource)context .getAttribute(Constants.DATASOURCE_KEY); DBdb=newDB(dataSource); //將職位基本信息封裝到員工類型的對象 try{ Jobjob=newJob(); job.setJobName(JobName); job.setPubDate(PubDate); job.setEndDate(EndDate); job.setDescription(Description); job.setRequirements(Requirements); job.setJobNum(JobNValue()); //將增加的職位信息加入到對應(yīng)的數(shù)據(jù)庫 if(job.addJob(db,JobName,PubDate,EndDate,Description,Requirements,JobNValue())){ db.close();} }catch(Exceptione){ e.printStackTrace(); } return(mapping.findForward("toaddjob")); }}4)OnlineCV/src/Model是目錄中存放所有模塊的模型模塊,詳見基線庫的OnlineCV/src/Model目錄下文件,表D-5是職位管理中的Job模塊的代碼。表D-5:Job模塊的代碼/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:Job*@Summary:處理Job信息的bean*@Create:2006.05.23張祥*@Update:2006.05.28張祥*/packagecom.changjiangcompany;importjava.sql.ResultSet;importjava.util.Vector;publicclassJob{ //與職位信息相關(guān)的基本屬性和方法 publicintJobID; publicintJobNum; publicStringJobName; publicStringPubDate; publicStringEndDate; publicStringDescription; publicStringRequirements; publicJob(){} //職位描述屬性的set及get方法 publicStringgetDescription(){ returnDescription; } publicvoidsetDescription(StringDescription){ this.Description=Description; } //職位描述截止日期set及get方法 publicStringgetEndDate(){ returnEndDate; } publicvoidsetEndDate(StringEndDate){ this.EndDate=EndDate; } //職位ID的set及get方法 publicintgetJobID(){ returnJobID; } publicvoidsetJobID(intJobID){ this.JobID=JobID; } //職位名稱的set及get方法 publicStringgetJobName(){ returnJobName; } publicvoidsetJobName(StringJobName){ this.JobName=JobName; } //職位招聘人數(shù)的set及get方法 publicintgetJobNum(){ returnJobNum; } publicvoidsetJobNum(intJobNum){ this.JobNum=JobNum; } //職位發(fā)布日期的set及get方法 publicStringgetPubDate(){ returnPubDate; } publicvoidsetPubDate(StringPubDate){ this.PubDate=PubDate; } //職位要求屬性的set及get方法 publicStringgetRequirements(){ returnRequirements; } publicvoidsetRequirements(StringRequirements){ this.Requirements=Requirements; }/** *方法:jobSearch *描述:查詢滿足條件的職位信息 *@paramDBdb數(shù)據(jù)庫對象 *@paramStringJobName職位名稱 *@paramStringPubDate發(fā)布日期 *@paramStringEndDate截止日期 *@returnVector職位列表 *@throwsException */ publicstaticVectorjobSearch(DBdb,StringJobName, StringPubDate,StringEndDate)throwsException{ VectorJobList=newVector(); ResultSetrs; StringstrSql=null; strSql="select*fromJobListwhereJobNamelike'%"+JobName+"%'" +"andPubDatelike'%"+PubDate+"%'" +"andEndDatelike'%"+EndDate+"%'"; rs=db.OpenSql(strSql); while(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setDescription(rs.getString("Description")); job.setRequirements(rs.getString("Requirements")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); System.out.println("nnnnnnnnnn,,,,,,,"+rs.getString("JobName")); } returnJobList; } /** *方法:getJobList *描述:獲取職位列表 *@paramDBdb數(shù)據(jù)庫對象 *@returnVector職位列表 *@throwsException */ publicstaticVectorgetJobList(DBdb)throwsException{ VectorJobList=newVector(); ResultSetrs; StringstrSql=null; strSql="select*fromJobListorderbyJobID"; rs=db.OpenSql(strSql); while(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); } returnJobList; } /** *方法:getJobDetail *描述:獲取職位詳細(xì)信息 *@paramDBdb數(shù)據(jù)庫對象 *@paramintJobID職位代號 *@returnVector職位列表 *@throwsException */ publicVectorgetJobDetail(DBdb,intJobID)throwsException{ ResultSetrs; StringstrSql=null; strSql="select*fromJobListwhereJobID="+JobID; rs=db.OpenSql(strSql); VectorJobList=newVector(); if(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); System.out.println("JobID"+rs.getString("JobID")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setDescription(rs.getString("Description")); job.setRequirements(rs.getString("Requirements")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); } returnJobList; } /** *方法:addJob *描述:新加職位Form信息 *@paramDBdb數(shù)據(jù)庫對象 *@paramStringJobName職位名稱 *@paramStringPubDate發(fā)布日期 *@paramStringEndDate截止日期 *@paramStringDescription職位描述 *@paramStringRequirements職位要求 *@paramStringJobNum招聘人數(shù) *@returnboolean數(shù)據(jù)庫操作是否成功 *@throwsException */ publicbooleanaddJob(DBdb,StringJobName,StringPubDate,StringEndDate,StringDescription,StringRequirements,intJobNum)throwsException{ StringstrSql=null; ResultSetrs; intJobIDMax; strSql="selectmax(JobID)fromJobList"; rs=db.OpenSql(strSql); if(rs.next()){ JobIDMax=rs.getInt(1)+1; }else{ JobIDMax=1; } strSql="insertintoJobListvalues('"+JobName+"','"+PubDate +"','"+EndDate+"','"+Description+"','"+Requirements +"','"+JobNum +"')"; if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; } }/** *方法:modifyJob *描述:修改職位信息 *@paramDBdb數(shù)據(jù)庫對象 *@paramStringJobID職位代號 *@paramStringJobName職位名稱 *@paramStringPubDate發(fā)布日期 *@paramStringEndDate截止日期 *@paramStringDescription職位描述 *@paramStringRequirements職位要求 *@paramStringJobNum招聘人數(shù) *@returnboolean數(shù)據(jù)庫操作是否成功 *@throwsException */ publicbooleanmodifyJob(DBdb,intJobID,StringJobName, StringPubDate,StringEndDate,StringDescription, StringRequirements,intJobNum)throwsException{ System.out.print("lokkeewwwww"); StringstrSql=null; strSql="updateJobListsetJobName='"+JobName+"'," +"PubDate='"+PubDate+"'," +"EndDate='"+EndDate+"'," +"Description='"+Description+"'," +"Requirements='"+Requirements+"'," +"JobNum="+JobNum +"whereJobID="+JobID; System.out.print("JobID"+JobID); if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; } } /** *方法:DeleteJob *描述:刪除職位信息 *@paramDBdb數(shù)據(jù)庫對象 *@paramintJobID職位代號 *@returnboolean數(shù)據(jù)庫操作是否成功 *@throwsException */ publicbooleanDeleteJob(DBdb,intJobID)throwsException{ StringstrSql=null; strSql="deletefromJobListwhereJobID="+JobID; if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; }}}5)OnlineCV/struts-bean.tld,OnlineCV/struts-html.tld,OnlineCV/struts-logic.tld,OnlineCV/CVTld.tld,是標(biāo)簽庫。其中OnlineCV/CVTld.tld是自定義標(biāo)簽庫,其他是struct系統(tǒng)標(biāo)準(zhǔn)的標(biāo)簽庫,詳見基線庫的OnlineCV/CVTld目錄下文件,表D-6是身

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論