Struts1和iBatis文件上传下载功能实现

Struts1 和 iBatis 搭配 MySQL 搞上传下载功能,真是老 Java 项目里的一套经典组合。用 Struts1 来求分发,配合 iBatis 来操作数据库,结构清晰,逻辑也好维护。尤其适合想深入了解老版 MVC 框架和持久层操作的朋友练练手。

Struts1 的 Action 机制比较直白,通过ActionServlet拦截求,转发给具体的Action类来。像文件上传下载,通常会有个UploadActionDownloadAction,逻辑分得挺清楚。

文件上传这块,依赖commons-fileupload库,在ActionForm里加个FormFile属性就能接文件,保存文件时记得验证大小和类型,防止安全问题。

下载的时候主要是设置好响应头,比如Content-Disposition设成attachment让浏览器弹下载框,Content-Type根据文件类型来,用户体验会好多。

数据库操作全靠iBatis,SQL 写在 XML 里,Java 里调用接口走SqlMapClient。写 SQL 自由度高,查分页数据也方便,跟 MySQL 搭配还不错。

前端如果加点JavaScript 库,像jQueryBootstrap,可以做文件进度条、表单验证啥的,体验会更好。你甚至能加个分页组件,查询响应也快。

文件信息一般都会存数据库,比如filenamepathsizeupload_time这类字段。你可以建个uploads表,结构清晰,查起来方便。

安全性不能忽略,像过滤上传的文件类型、加白名单、防止路径穿越都得做好。不然被传个木马就麻烦了。

项目量大时,性能优化也得考虑。比如数据库加索引、文件按日期分目录存、做下缓存,这些都挺有用。

异常方面,建议在上传和下载逻辑里加 try-catch,不然用户出错都没提示就太尴尬了。

如果你想了解 Struts1 的配置方式,可以看看深入解析 struts1 配置文件,文档挺全的。

另外,有兴趣搞整合项目的,也可以看看struts+spring+ibatis+mysql 实例,思路比较系统。

,这个上传下载项目挺适合练手的,技术组合也常见。如果你刚好想了解老 Java Web 项目结构,可以试试搞一套。

folder
struts+ ibatis上传下载文件 预估大小:208个文件
file
.project 1KB
file
org.eclipse.core.resources.prefs 88B
file
.mymetadata 291B
file
login.jsp 2KB
file
success.jsp 839B
file
.struts-config.mex 3KB
file
web.xml 2KB
file
struts-config.xml 3KB
file
struts-tiles.tld 8KB
file
struts-bean.tld 9KB
file
struts-nested.tld 70KB
file
struts-html.tld 72KB
file
struts-logic.tld 14KB
file
vssver2.scc 252B
file
validator-rules.xml 13KB
file
log4j.properties 2KB
file
FileUploadServlet.class 1KB
file
ImageUtil.class 2KB
file
Upload.class 3KB
file
GenericTools.class 7KB
file
editNews.jsp 8KB
file
addNews.jsp 6KB
file
FileUpload.class 8KB
file
Mail.class 4KB
file
MailBean.class 12KB
file
SystemBean.class 11KB
file
AccountBean.class 3KB
file
MailBean.class 2KB
file
SystemBean.class 3KB
file
LogBean.class 8KB
file
vssver2.scc 173B
file
AbstractBean.class 2KB
file
vssver2.scc 138B
file
DaoConfig.class 2KB
file
dao.xml 1KB
file
LogDao.class 505B
file
SystemDao.class 370B
file
AccountDao.class 388B
file
EventDao.class 184B
file
vssver2.scc 206B
file
Account.xml 1KB
file
System.xml 956B
file
Log.xml 3KB
file
sql-map-config.xml 1021B
file
Event.xml 425B
file
vssver2.scc 226B
file
SystemDaoImpl.class 1KB
file
AccountDaoImpl.class 2KB
file
LogDaoImpl.class 2KB
file
EventDaoImpl.class 745B
file
vssver2.scc 217B
file
vssver2.scc 158B
file
Account.class 1KB
file
Log.class 4KB
file
Accessories.class 1KB
file
Event.class 844B
file
Mail.class 4KB
file
vssver2.scc 186B
file
GenericTools.class 7KB
file
Pager.class 2KB
file
FileUpload.class 9KB
file
vssver2.scc 125B
file
SetCharacterEncodingFilter.class 2KB
file
vssver2.scc 146B
file
AccountService.class 1KB
file
SystemService.class 1KB
file
LogService.class 2KB
file
EventService.class 888B
file
vssver2.scc 208B
file
Upload.class 4KB
file
database.properties 193B
file
messages.properties 64B
file
messages_zh_CN.properties 1KB
file
messages_zh.properties 115B
file
messages_en_US.properties 751B
file
vssver2.scc 278B
file
ApplicationResources.properties 223B
file
vssver2.scc 153B
file
vssver2.scc 213B
file
editNews.jsp 1KB
file
addNews.jsp 6KB
file
editNews.jsp 8KB
file
addNews.jsp 6KB
file
2.html 3KB
file
media.jsp 1KB
file
1.html 2KB
file
MANIFEST.MF 39B
file
vssver2.scc 113B
file
index.jsp 4KB
file
statList.jsp 3KB
file
getAllAccount.jsp 3KB
file
getSelectAccountAfter.jsp 401B
file
queryList.jsp 5KB
file
getAllAccountIframe.jsp 582B
file
vssver2.scc 281B
file
writeMail.jsp 28KB
file
white.gif 55B
file
info.jpg 8KB
file
quxiao.jpg 2KB
file
queding.jpg 2KB
file
vssver2.scc 193B
file
cover.jpg 28KB
file
vernavbg1.gif 118B
file
topline2.gif 105B
file
topbg.gif 71B
file
slidbg.gif 72B
file
navbg1.gif 120B
file
fstcol.gif 116B
file
theadbg.gif 85B
file
btnbg2.jpg 339B
file
menubg2_1.gif 1KB
file
btnbg.gif 188B
file
menubg1.gif 132B
file
bottombg.gif 102B
file
toolbarbg.gif 130B
file
bottombg2.gif 162B
file
topbg1.gif 126B
file
topline.gif 176B
file
navbg2.gif 118B
file
vernavbg2.gif 119B
file
menubg2.gif 1KB
file
vssver2.scc 622B
file
vssver2.scc 107B
file
springskin.css 14KB
file
vssver2.scc 118B
file
failure.jsp 1KB
file
planprocess.js 2KB
file
newMyPlan.js 26KB
file
planParam.js 1KB
file
planAction.js 4KB
file
meizzDate.js 21KB
file
common.js 56KB
file
ajax_function.js 13KB
file
navigation.js 37KB
file
crmTextValidate.js 665B
file
vssver2.scc 358B
file
taglibs.jsp 440B
file
vssver2.scc 139B
file
selectRoles.jsp 14KB
file
syslog.sql 1KB
file
vssver2.scc 126B
file
personnelDlg.jsp 1KB
file
vssver2.scc 187B
file
log4j.properties 2KB
file
ImageUtil.java 6KB
file
FileUploadServlet.java 5KB
file
Upload.java 7KB
file
editNews.jsp 8KB
file
addNews.jsp 6KB
file
Mail.java 4KB
file
GenericTools.java 11KB
file
MailBean.java 24KB
file
SystemBean.java 44KB
file
FileUpload.java 14KB
file
LogBean.java 9KB
file
AccountBean.java 3KB
file
MailBean.java 1KB
file
SystemBean.java 2KB
file
vssver2.scc 173B
file
AbstractBean.java 1KB
file
vssver2.scc 138B
file
dao.xml 1KB
file
DaoConfig.java 2KB
file
LogDao.java 2KB
file
AccountDao.java 943B
file
EventDao.java 446B
file
SystemDao.java 333B
file
vssver2.scc 206B
file
Account.xml 1KB
file
System.xml 956B
file
Log.xml 3KB
file
sql-map-config.xml 1021B
file
Event.xml 425B
file
vssver2.scc 226B
file
LogDaoImpl.java 3KB
file
AccountDaoImpl.java 2KB
file
EventDaoImpl.java 850B
file
SystemDaoImpl.java 849B
file
vssver2.scc 217B
file
vssver2.scc 158B
file
Log.java 3KB
file
Accessories.java 770B
file
Mail.java 4KB
file
Account.java 925B
file
Event.java 609B
file
vssver2.scc 186B
file
GenericTools.java 11KB
file
FileUpload.java 14KB
file
Pager.java 2KB
file
vssver2.scc 125B
file
SetCharacterEncodingFilter.java 2KB
file
vssver2.scc 146B
file
EventService.java 872B
file
SystemService.java 849B
file
AccountService.java 1KB
file
LogService.java 2KB
file
vssver2.scc 208B
file
Upload.java 4KB
file
database.properties 193B
file
messages.properties 64B
file
messages_zh_CN.properties 1KB
file
messages_zh.properties 115B
file
messages_en_US.properties 751B
file
vssver2.scc 278B
file
ApplicationResources.properties 223B
file
vssver2.scc 153B
file
.mystrutsdata 262B
file
.classpath 4KB
...
rar 文件大小:256.89KB