平臺框架采用了Java EE搭建,其主要的應用程序采用了SSH框架,其應用在Java EE的三層結構,表示層、業務層和持久層[5]。
頁面表示層主要由Struts2標簽的JSP頁面實現,Struts2可以完成控制器功能,其核心配置文件struts.xml主要負責管理全局屬性、用戶請求和響應操作的對應關系[5]。對于Struts2框架來說,還需要在web.xml文件中配置FilterDispatcher核心控制器來加載Struts2框架,在web.xml文件中的配置如下:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPre?
pareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
在業務層,管理服務組件的SpringIOC 容器負責提供業務模型(Model)組件,和協作對象數據處理(DAO)組件完成業務邏輯。在持久層,依賴于Hibernate的對象化映射和數據庫的交互來處理DAO組件的請求數據,并返回處理的結果[6]。
3 科研項目管理系統的實現
3.1 項目管理功能的實現
項目管理功能的目的是滿足維護各類項目的基本數據的需求,該功能實現用戶對科研項目的變動信息進行編輯、刪除和增加,同時還具有項目審核、文件導入、文件下載等功能。項目管理最終實現的功能界面如圖3所示:
3.1.1 項目刪除
項目管理模塊代碼實現了對項目的刪除功能,用戶可以對項目進行刪減。
//刪除功能
public void delete(){
Queryer queryer= new Queryer();
queryer.addCondition("bh in(?)",(Object)ids);
List<Cgxx>modelList=cgxxManager.findList(queryer);
cgxxManager.batchDelete(modelList);
}
3.1.2 項目新增
項目新增功能,可以使得新添項目進入到列表頁面,方便用戶點擊查看項目詳細信息。
//新增功能
public void add(){
List<Fj>fjs=fjManager.parseFiles(uploads,uploadsFileName);
for(int i=0;i<fjs,size();i++){
fjs.get(i).setFjlx(fjlx[i]);
}cgxxManager.add(model,fjs);
}
3.1.3 項目審核
項目審核功能是對于科研項目的申請進行審核,由申請人或單位登錄該系統,提交項目立項請示,由總部單位下達通知,管理部門進行審核是否可以立項并上報,總部單位審批通過后下達批復。評審過程由相關領域專家登錄該系統對項目進行評審,評審專家只能看到自己參加評審的項目,并給出審核意見。
public void add(){
List<Fj>fjs=fjManager.parseFiles(uploads,uploadsFileName);
model.setShrq(new Date());
model.setShr(GXZCHelper.getCurrentUserTrueName());
shyjManager.add(model,fjs);
}
在專家審核過項目內容后,還需要對修改的狀態進行修改,代碼如下:
public void editShzt(){
shyjManager.editShzt(model,type);
}
3.1.4 文件導入與下載
單位辦理業務時,需要實現發送文件和下載文件的管理功能,有向下級發送文件和接收文件的需求,這些發送或接收的文件應當方便用戶查看,因此系統支持了用戶對于已發送文件和接收文件的處理狀態查詢、報送單位、接收單位、文件名稱的查詢功能,同時需要具有文件導入和下載的功能。
文件導入的核心代碼如下:
public void jswjImport(){
File file=getUploads()[0];
DefaultXMLParseStrategy strategy=DefaultXMLParseStrategy.
newInstance();
XMLParser parser=new XMLParser(strategy);
Map<Class,XMLData>dataMap=(Map<Class,XMLData>)pars?
er.parse(file.getAbsolutePath());
jswjManager.saveJswjImortData(dataMap);
}
文件下載的核心代碼如下:
public void downLoad(){
Queryerqueryer=nwQueryer();
queryer.addCondition("bh in(?)",(object)ids);
List<Jswj>modelList=jswjManager.findList(queryer);
if(modelList.size()==1){
outJson(modelList.get(0).getWjlj());
return
}
File jswjTempDir=wjmlglManager. getUniqueTempDir(Con?
stant.WJMLGL_LX_JSWJ);
DateFormat format=new SimpleDateFormat("yyyyMMd?
dHHmmssms");
String fileName=StringUtiil.joinArray(format.format(new Date
()),model.getClass().getSimpleName(),".zip");
File file=new File(jswjTempDir.fileName);
List<File>jswjFiles=new ArrayList<File>();
List<String>names=new ArrayList<String>();
for(Jswj jswj:modelList){
jswjFiles.add(new File(jswj.getWjlj()));
names.add(jswj.getWjmc());
}
names=FileUtil.processSameFileName(names);
FileUtil.crateZip(file.getAbsolutePath(),jswjFiles,names);
outJson(file.getAbsolutePath());
}
3.2 系統管理功能的實現
本科研項目管理系統涉及該單位的一些涉密信息,因此需要對用戶的訪問權限進行規范管理,支持管理員對用戶信息進行修改等。用戶也可以對個人基本信息進行編輯,包括用戶名、密碼、單