- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
照尚学堂的OA视频用SSH2做毕业设计,做到文件上传时,发现Struts2的上传机制跟Struts1的截然不同。于是,又花了一个晚上的时间来琢磨,现在终于可以用SSH2实现文件上传了,总算有点成就感,于是想把步骤和思路在这里记下来。
总体步聚主要是以下几点:
1,jsp文件表单元素from中除了有一个action属性名,至少还要有method和enctype属性,值分别为“post”和“multipart/form-data”,这一点很重要,否则文件无法上传。还有,from中应有一个子元素input其type属性为“file”,以便让用户选择一个文件上传(如果要同时上传多个文件,则可以多增加一些这样的元素,但务必让其name属性都保持一致。)
2,web.xml配置文件中除了要有Struts2的核心过虑器之外,还要有一个用来延长action中属性生命周期的过虑器:ActionContextCleanUp,倒底为什么要用这个过虑器我猜这也许跟下文action中的属性设值有关吧,但我还没不知道怎么验证,这个过虑器具体配置可以在下面的代码中找到。
3,shruts.xml配置文件中相应的action元素中应加入用来控制文件上传的fileUploadStack拦截器栈。
4,相应的action类中私有成员除了有接收表单中文件成员(java.io.File类型)外,还可以有用来接收文件名称,和名件类型的两个字符型,但最为关键的一点就是在生成其getter和setter方法切记要修改其表示名称和类型的两个set方法。(具体怎么改在下文的代码中有提到)这一点非常重要,我就是因为开始乎略了的set方法才调试了很久,现在想想,也许之所以要这样是因为,从表单过来的仅仅是一个File对象,而并没有单独把文件名称和类型传送过来,所以我们不得不通过那个File对象去获取其名称和类型这个两个属性,这就要求我们不能通过他本来的set方法获取吧,这只是我的猜想,不知道对不对。
5,写上述action类中的罗辑代码,再通过相应的配置把它交给spring容器就OK了。
我这里做的系统跟尚学堂的那个有点不相同,首先我用到了跟struts1截然不同的struts2,另外我通过dao模式把对数据库的操作从业务罗辑层中分离出来做为独立的一层。我的文件上传模块主要代码如下:
!—jsp上传文件添加form表单--
s:form method=post name=uploadForm action=upJbpm
enctype=multipart/form-data
选择文件:input type=file name=uploadFile /br
文件资源描述: input type=text name=caption size=35 /br
s:submit value=上传 /s:reset value=重置 /
/s:form
!—注意这里用到了sturs的核心标签库,应在文件的最上面声名--
!-- web.xml文件增加ActionContextCleanUp过滤器 --
filter
filter-namestruts-cleanup/filter-name
filter-class
org.apache.struts2.dispatcher.ActionContextCleanUp
/filter-class
/filter
filter-mapping
ilter-namestruts-cleanup/filter-name
url-pattern/*/url-pattern
/filter-mapping
!—struts.xml文件中action的配置,注意配置其中的fileUploadStack拦截器栈 --
action name =upJbpm class =upJbpmAction
interceptor-ref name =fileUploadStack/
result name =success/UploadSuccess.jsp/result
/action
另外应该注意的是我这里把struts与spring集成起来了,action中的class属性为spring容器中的一个bean。Spring中的配置如下:
!-- applicateionContext.xml文件中bean的配置 --
bean id=upJbpmAction class=fos
文档评论(0)