eclipse+CDT+MinGW+wxWidgets开发c环境.docx
- 文档编号:8933318
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:109.59KB
eclipse+CDT+MinGW+wxWidgets开发c环境.docx
《eclipse+CDT+MinGW+wxWidgets开发c环境.docx》由会员分享,可在线阅读,更多相关《eclipse+CDT+MinGW+wxWidgets开发c环境.docx(22页珍藏版)》请在冰豆网上搜索。
eclipse+CDT+MinGW+wxWidgets开发c环境
S+S+H实现文件的上传和下载
前言
醉翁之意不在酒,本文旨在通过此例给大家介绍如何使用当前流行的ssh框架组合开发web应用
概述
1.各框架的版本
Struts1.2.8
Spring1.2.6
Hibernate3.1
2.最终画面预览
1)上传
2)下载
3.工程结构介绍
1)结构
图1
图2
2)上传下载实现方案
开发过程
1.持久层
1)领域对象(domainobject)File.java
publicclassFile{
privateStringfileId;//文件id
privateStringfileName;//文件名
privatebyte[]fileContent;//文件内容
privateStringremark;//注释
publicStringgetFileId(){
returnthis.fileId;
}
publicvoidsetFileId(Stringid){
this.fileId=id;
}
publicStringgetFileName(){
returnthis.fileName;
}
publicvoidsetFileName(Stringname){
this.fileName=name;
}
publicbyte[]getFileContent(){
returnthis.fileContent;
}
publicvoidsetFileContent(byte[]content){
this.fileContent=content;
}
publicStringgetRemark(){
returnthis.remark;
}
publicvoidsetRemark(Stringremark){
this.remark=remark;
}
}
说明:
fileContent定义为byte[]类型,对应于表t_file中Blob类型的file_content字段
2)映射文件File.hbm.xml
not-null="true"/> type="org.springframework.orm.hibernate3.support.BlobByteArrayType" lazy="true"not-null="true"/> 说明: file_id是通过sequnce生成的,insert时该字段的值即s_ssh_file_id.nextval; file_content定义为org.springframework.orm.hibernate3.support.BlobByteArrayType类型,BlobByteArrayType通过sessionFactory中定义的lobHandler实现byte[]到Blob的“转型”,lazy="true"表示返回file对象时并不携带file_content(重量级数据)的数据,只有在显示file.getFileConten()时才返回其值 3)DAO(DataAccessor) FileDAO.java publicinterfaceFileDAO{ publicFilefindByFildId(StringfileId); publicvoidsave(Filefile); publicListfindAll(); } FileDAOImpl.java publicclassFileDAOImplextendsHibernateDaoSupportimplementsFileDAO{ publicFilefindByFildId(StringfileId){ return(File)getHibernateTemplate().get(File.class,fileId); } publicvoidsave(Filefile){ getHibernateTemplate().save(file); getHibernateTemplate().flush(); } publicListfindAll(){ returngetHibernateTemplate().loadAll(File.class); } } HibernateDaoSupport封装了HibernateTemplate,而HibernateTemplate封装了Hibernate所提供几乎所有的的数据操作方法,如execute(HibernateCallbackaction),load(ClassentityClass,Serializableid),save(finalObjectentity)等 4)Spring配置文件applicationContext.xml --**********数据库连接**********--> class="mons.dbcp.BasicDataSource" destroy-method="close"> value="oracle.jdbc.driver.OracleDriver"/> value="jdbc: oracle: thin: @localhost: 1521: orcl"/> --**********Hibernate会话工厂配置**********--> class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/> class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> --为处理Blob类型字段的句柄声明--> /hbm org.hibernate.dialect.OracleDialect true --**********Hibernate模板**********--> class="org.springframework.orm.hibernate3.HibernateTemplate"> --**********DAO配置**********--> class="com.yqh.upload.domain.files.dao.impl.FileDAOImpl"> --**********事务处理的AOP配置**********--> class="org.springframework.orm.hibernate3.HibernateTransactionManager"> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> class="com.yqh.upload.domain.files.service.impl.FileServiceImpl"> singleton="false"> 说明: dataSource定义的是数据源,实现类为BasicDataSource;sessionFactory定义hibernate的会话工厂,使用Spring的LocalSessionFactoryBean进行管理;对oracle的Blob类型字段操作比较复杂,我们采用BlobByteArrayType类型通过LobHandler简化对其的操作,使Blob字段平民化,配置文件中定义的LobHandler即为Blob字段处理句柄,其属性nativeJdbcExtractor为可从本地提取jdbc对象的抽取器 2.业务层 1)业务层代码 FileService.java publicinterfaceFileService{ publicvoidsave(FileFormfileForm);//将表单中的数据保存到数据库 publicListgetAllFile();//取t_file表中所有记录 publicvoidwrite(OutputStreamos,StringfileId);//根据id取文件且输出 publicStringgetFileName(StringfileId);//根据id取文件名 } FileServiceImpl.java publicclassFileServiceImplimplementsFileService{ privateFileDAOfileDAO; publicvoidsave(FileFormfileForm){ Filefile=newFile(); try{ file.setFileContent(fileForm.getFileContent().getFileData()); }catch(FileNotFoundExceptionex){ thrownewRuntimeException(ex); }catch(IOExceptionex){ thrownewRuntimeException(ex); } file.setFileName(fileForm.getFileContent().getFileName()); file.setRemark(fileForm.getRemark()); fileDAO.save(file); } publicvoidwrite(OutputStreamos,StringfileId) { Filefile=fileDAO.findByFildId(fileId); try{ os.write(file.getFileContent()); os.flush(); }catch(IOExceptionex){ thrownewRuntimeException(ex); } } publicListgetAllFile(){ ListfileList=fileDAO.findAll(); returnfileList; } publicStringgetFileName(StringfileId){ Filefile=fileDAO.findByFildId(fileId); StringfileName=file.getFileName(); returnfileName; } publicFileDAOgetFileDAO(){ returnfileDAO; } publicvoidsetFileDAO(FileDAOfileDAO){ this.fileDAO=fileDAO; } } 说明: 具体实现细节不罗嗦了,相信将你一看便知 2)Spring事务配置 class="org.springframework.orm.hibernate3.HibernateTransactionManager"> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> class="com.yqh.upload.domain.files.service.impl.FileServiceImpl"> 说明: Spring的事物配置分两部分 a)事务管理器transactionManager,使用HibernateTransactionManager实现事务管理 b)定义业务接口,proxyTemplate和fileServiceProxy是父子关系,本来可以将proxyTemplate定义的内容合并到fileServiceProxy中,可是如果有很多业务接口需要定义这种写法就不使用了,proxyTemplate注入了事务管理器,还定义了业务接口事务管理的方法,有些方法仅对数据进行读操作,不涉及更改,于是定义为readOnly,这样做可以提高性能,proxyTemplate是子节点配置的抽象,并不能够实现一个bean对象,所以声明为abstract="true" 3.表示层 1)Struts-config.xml --**********FormBeanDefinitions**********--> type="com.yqh.upload.web.forms.FileForm"/> --**********ActionMappingDefinitions**********--> type="org.springframework.web.struts.DelegatingActionProxy" name="fileForm"parameter="method"> path="/fileAction.do? method=listFiles"/> className="org.springframework.web.struts.ContextLoaderPlugIn"> value="/WEB-INF/applicationContext.xml"/> 说明: Struts通过org.springframework.web.struts.DelegatingActionProxy对action进行管理,在其配置中加入 className="org.springframework.web.struts.ContextLoaderPlugIn"> value="/WEB-INF/applicationContext.xml"/> 相应Spring的配置如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eclipse CDT MinGW wxWidgets 开发 环境