当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > JAVA > STRUTS > 正文

使用struts,ibaits和JSTL开发简便通用的文件上传系统(7)

http://www.zk168.com.cn  招考学习网 2006-4-11 3:49:57
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
使用struts,ibaits和JSTL开发简便通用的文件上传系统(7)

这一层的代码也是多次见到的老朋友了。事实上对于大多数数据库操作,我们都只需要上面这么一点代码。然后我们建立add的action方法。

public ActionForward add(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
try {

Service.initSet();
if (form instanceof DynaActionForm) {

DynaActionForm fm = (DynaActionForm) form;
FormFile ff = (FormFile) fm.get("upload");
if (ff != null && ff.getFileSize()>0) {
String fileName =
Service.getPath().substring(
0,
Service.getPath().length()
- "/WEB-INF/classes".length())
+ "file/"
+ ff.getFileName();
HashMap map = new HashMap();
map.put(Constattachment.ATTACHDESC, fm.get("desc"));
map.put(Constattachment.ATTACHFILENAME, ff.getFileName());
map.put(
Constattachment.ATTACHMIMETYPE,
ff.getContentType());
map.put(Constattachment.ATTACHCREATIONDATE, new Date());
map.put(Constattachment.ATTACHMODIFIEDDATE, new Date());
map.put(
Constattachment.ATTACHFILESIZE,
String.valueOf(ff.getFileSize()));
map.put(
Constattachment.ATTACHFILEPATH,
"/file/" + ff.getFileName());
map.put(
Constattachment.ATTACHCREATIONIP,
request.getRemoteAddr());
FileManager.saveFile(fileName, ff);
AttachDb attachDb = new AttachDb();

DaoCommon.startTransaction();
attachDb.insert(map);
DaoCommon.commit();
request.setAttribute("url", fm.get("url"));
request.setAttribute(
"fileName",
"/file/" + ff.getFileName());
log.info(ff.getFileName());
return mapping.findForward("success");
}
}
ActionErrors errors = new ActionErrors();
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general", "请选择一个文件!"));
saveErrors(request, errors);
return mapping.findForward("false");
} catch (DaoException e) {
log.error(e, e);
DaoCommon.rollBack();
ActionErrors errors = new ActionErrors();
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general", "数据库操作错误!"));
saveErrors(request, errors);
return mapping.findForward("false");
} catch (FileNotFoundException e) {
log.error(e, e);
ActionErrors errors = new ActionErrors();
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general", "文件保存错误!"));
saveErrors(request, errors);
return mapping.findForward("false");
} catch (IOException e) {
log.error(e, e);
ActionErrors errors = new ActionErrors();
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general", "文件操作错误!"));
saveErrors(request, errors);
return mapping.findForward("false");
} catch (Exception e) {
log.error(e, e);
ActionErrors errors = new ActionErrors();
errors.add(
ActionErrors.GLOBAL_ERROR,
new ActionError("errors.general", "意外错误!"));
saveErrors(request, errors);
return mapping.findForward("false");
}

}


从上面可以看出,文件的保存工作很简单,只有三句

DynaActionForm fm = (DynaActionForm) form;
FormFile ff = (FormFile) fm.get("upload");
FileManager.saveFile(fileName, ff);

此处有一个DynaActionForm,通过DynaActionForm我们可以节省一个ActionForm的工作了。当然,这也多了一个配置工作。在struts-conifg.xml里加一个。

<!-- upload form bean -->
<form-bean name="uploadForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="upload" type="org.apache.struts.upload.FormFile"/>
<form-property name="url" type="java.lang.String"/>
<form-property name="desc" type="java.lang.String"/>
</form-bean>

这样,struts在页面提交以后会自动去找upload、rul和 desc这三个输入 ,并将它转成相应的数据类型。
所以我们很容易得到一个FormFile对象,而这个对象就包含了上传文件的所有信息。因此,我们的数据表相应的信息也有了

map.put(Constattachment.ATTACHFILENAME, ff.getFileName());
map.put( Constattachment.ATTACHMIMETYPE, ff.getContentType());
map.put( Constattachment.ATTACHFILESIZE, String.valueOf(ff.getFileSize()));
map.put( Constattachment.ATTACHFILEPATH, "/file/" + ff.getFileName());
(未完待续)
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·环保企业人力资源开发与管理的实证研究————巨龙公
·重油制气污水处理系统(A/O)技术改造
·BOG压缩机在液化石油气基地的应用
·IT环境下审计理论基础的重新认定
·英美CPA管理模式及其启示
·改造NERA微波公务信道为国产监控信道
·LFCB-102型微波分相差动保护的应用
·EAStudio让电子商务网站如虎添翼
·基于PB6和ORACLE8开发“劳动信息管理系统”
·巧解Pretty  Park 病毒一例
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>