框架学习之struts2-05文件上传、下载、ajax整合json

来源:互联网 发布:淘宝内衣模特王文雨 编辑:程序博客网 时间:2024/06/06 01:08

struts2文件上传、下载、ajax整合json

文件上传
1. 导相应的包,百度搜索
2. 表单的处理,在属性中加入属性enctype=”multipart/form-data”
3. 在目标处理器类中声明一个文件,并且名字要和表单中的文件名字一致还可以声明文件名和文件类型,必须是上传 文件名+FileName和文件名+ContentType
4. 完全用框架,那么可以按照下面的操作来:

<action name="bookSave" class="sample.s2.web.action.BookAction" method="save">            <param name="fileSavePath">/photo/</param>            <interceptor-ref name="defaultStack">                <param name="fileUpload.maximumSize">204800</param>                <param name="fileUpload.allowedTypes">image/gif, image/png,    image/jpeg</param>            </interceptor-ref>            <result name="input">/WEB-INF/jsp/manage/book-mgr.jsp</result>        </action>

上述的配置中控制了文件上传的大小和格式,并且传递了文件上传的保存路径
5. 文件经过校验后,在java程序中就可以使用工具类FileUtils调用copyFile(pic, new File(filePathName))方法保存上传文件
6. 文件上传失败的提示信息可以单独卸载一个properties文件中,具体的字段键名:
struts.messages.error.file.too.large=……
struts.messages.error.content.type.not.allowed=……
在页面上的输出:<s:fielderror fieldName="pic" />
文件下载
1.下载文件需要配置xml

<action name="downloadFGT" class="sample.s2.web.action.DownloadFGTAction">            <result type="stream">                <param name="inputName">fgtInputStream</param>                <param name="contentType">image/jpeg</param>                <param name="contentDisposition">attachment; filename=${fileShowName}</param>            </result>            <result name="error">/WEB-INF/jsp/manage/book-mgr.jsp</result>        </action>

上述中的配置需要配置文件的MIME类型,文件的名字(attachment; filename=${fileShowName}),文件的传输方式是以流的方式
2. 文件的名字由服务器提供,在传输的时候可以设置编码:String fileName= URLEncoder.encode(fileShowName, “UTF-8”);
3. 在服务器端获得文件的下载路径,根据文件的路径获得一个字节流

InputStream streamName = ServletActionContext.getServletContext().getResourceAsStream("文件路径");

由此获得的流响应给客户端,完成下载
ajax请求整合json数据
1. 导struts2整合的相应的包
2. 在配置文件中把extends=”struts-default”改为”json-default”
3. 在action中设置result的type为”json”,参数配置为”root”,参数值直接给一个数据结果集的名字,比如数组、列表等

<result type="json">      <param name="root">dataResult</param>  </result>

返回的json结果直接被前段解析
4. 基于jquery的json解析,直接遍历输出即可(如果不用struts2的框架返回json,我们也可以自己手动封装json数据)

原创粉丝点击