Struts上传及下载

上传人:仙*** 文档编号:247336933 上传时间:2024-10-18 格式:PPT 页数:56 大小:400.50KB
返回 下载 相关 举报
Struts上传及下载_第1页
第1页 / 共56页
Struts上传及下载_第2页
第2页 / 共56页
Struts上传及下载_第3页
第3页 / 共56页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Struts,第十一章,Struts2,文件上传及下载,1,考试,什么是代理?,代理所涉及的角色?,用代码实现静态代理?,要实现功能,演示,FileUpload,工程,Login2.jsp,上节回顾,什么是拦截器,Struts2,采用什么方式实现的拦截器,在,struts2,中怎么怎么拦截器,所继承的类,所使用的标记,本节目标,文件上传,掌握文件上传所使用的类,掌握文件上传的步骤,掌握上传多个文件的步骤,文件下载,掌握文件下载所使用的类,掌握文件下载的步骤,文件上传,文件上传的作用,文件上传的方式,Servlet,Struts2,的方式,使用文件流的操作,InputStream,FileInputStream,OutputStream,FileOutputStream,File,使用文件流进行文件的读写,fileTest.java,InputStream,is=,new,FileInputStream(,new,File(c:myfile.txt,);,OutputStream,os,=,new,FileOutputStream(,new,File(c:myfile1.txt);,byte,buffer=,new,byte,400;,int,length=0;,while,(length,=,is.read(buffer,)0),os.write(buffer,0,length);,文件上传的应用,邮件附件上传,在网上办公室提交文档,提交测试报告,.,Struts2,提供的,提供了一个文件上传拦截器,org.apache.struts2.interceptor.FileUploadInterceptor,它负责调用底层的文件上传组件解析文件内容,并为,action,准备与上传文件相关的属性值。,处理文件上传请求的,Action,必须提供特殊样式命名的属性,举例,表单的要求同上,Action,Action,的三个属性,image,java.io.File,类型,已上传文件的,File,对象,String,image,FileName,:上传文件的文件名,String,image,ContentType,:上传文件的内容类型,Action,业务处理,使用参数来构建一个输入流,构建一个一个,File,对象(用系统路径和当前的,file,的名字),用上面的文件构建一个输出流,将输入流里的内容写入至输出流中,Action,业务处理,InputStream,is=,new,FileInputStream(,file,);,String path=,ServletActionContext.,getServletContext,().getRealPath,(/);,File,newFile,=,new,File(path,this,.getFileFileName,(),);,OutputStream,os,=,new,FileOutputStream(newFile,);,byte,buffer=,new,byte,400;,int,length=0;,while,(length,=,is.read(buffer,)0),os.write(buffer,0,length);,return,success;,成功页面,result.jsp,username:$requestScope.username,password:$,requestScope.password,file:$requestScope.,fileFileName,案例,Strut2,工程的,login2.jsp,问题?,文件名称中文时怎么办?,解决办法,查看,default.properties,文件,Struts.xml,文件修改,如果多文件怎么办?,上传固定数量的文件,实现多文件上传,private,String username;,private,String password;,private,List,file,;,private,List,fileFileName,;,private,List,fileContentType,;,实现多文件上传,for,(,int,i=0;i,file.size();i,+),InputStream,is=,new,FileInputStream(,file.get(i,);,String root=,ServletActionContext.,getRequest,().getRealPath,(/);,File,destFile,=,new,File(root,this,.,getFileFileName().get(i,),);,OutputStream,os,=,new,FileOutputStream(destFile,);,Form,表单的代码,动态添加上传的文件,修改,login2.jsp,文件,增加一个按钮,增加按钮的处理事件,对于,action,及,struts.xml,文件则不需要修改,按钮的处理事件,function,addMore,(),var,td=,document.getElementById(more,);,var,br,=,document.createElement(br,);,var,input=,document.createElement(input,);,var,button=,document.createElement(button,);,input.type,=file;,input.name,=file;,button.value,=remove;,button.onclick,=function(),td.removeChild(br,);,td.removeChild(input,);,td.removeChild(button,);,td.appendChild(br,);,td.appendChild(input,);,td.appendChild(button,);,增加一个按钮,对上传的文件进行限制,需要使用系统提供的拦截器,查看此拦截器所对应的类,此类有两个参数,protected,Long,maximumSize,;,最大长度,protected,String,allowedTypes,;,允许的类型,Struts.xml,409600,(字节),application/vnd.ms-powerpoint,红色部分指的是允许使用的文件类型。,该文件类型在,tomcat,的安装目录,conf-,web.xml,文件中查得,ppt,application/vnd.ms-powerpoint,此时会出现空指针异常,为什么?,解决办法,增加:,小结,上传不合法的用户信息不显示?,在,input.jsp,页面中增加,Tomcatconf,web.xml,xls,application/,vnd.ms,-excel,错误信息是系统的,如何解决?,在工程的,message.properties,文件中增加,struts.messages.error.content.type.not.allowed,=file is not,红色部分如何找到?,在,struts-,message.properties,系统文件中找到。,错误信息是中文的,如何解决?,Native2ascii,命令,文件下载,可以使用链接,暴露了下载文件的真实地址,不利于对资源进行安全保护。,服务器端的文件只能保存在,web,应用所在的目录下,利用程序编码实现,使用,HTTP,协议报文头中的三个报文件头域,Content-,Type:application/x-msdownload,Content-,Disposition:attachment;filename,=,downloadfile,Content-,Length:filesize,步骤,编写,JSP,页面,编写,action,配置,struts.xml,编写,JSP,页面,download,或,download,编写,action,public,class,DownLoadAction,extends,ActionSupport,public,InputStream,getDownloadFile,(),return,ServletActionContext.,getServletContext,().getResourceAsStream(/struts.ppt,);,public,String execute(),throws,Exception,return,success;,配置,struts.xml,application/vnd.ms-powerpoint,filename=,struts.ppt,downloadFile,说明,contentType,:下载文件的类型,在,tomcat-conf-,web.xml,文件中查到,contentDisposition,:格式为,filename=“,struts.ppt,”,其中,filename,是固定的,而,struts.ppt,是在下载时,显示在你另存框中的文件名字,inputName,:是你所对应的文件输入流的名字,它应该同,action,中的返回值是,InputStream,的,get*(),函数名相同,总结:,文件上传,Struts2,文件上传的步骤,文件下载,文件上传所涉及的文件,Jsp,文件,业务处理文件,java,文件,文件上传,(struts2,的表单),早期的,HTML,不支持文件上传,在,HTML RFC1867,规范中使用,来实现文件的上传,如果在表单中使用了该组件,浏览器会自动生成一个输入框及一个按钮,对表单的要求,在表单中要有,表单必须要有,method,方法,并且,method,方法的值必须是,post,表单必须要有,enctype,=multipart/form-data“,注:此三项缺一不可,表单案例,文件上传,上传文件的内容不能直接通过请求对象的,getParameter,(),方法来得到。需要以字节流的形式读取客户端提交的文件数据。并按照文件上的格式对这些数据进行解析,从而获取上传文件的内容。,Struts,没有提供解析上传文件内容的功能,它使用第三方的文件上传组件提供的对文件上传的支持。,Struts2,使用的是,apache,公司提供的,jackata,文件上传,还有两种方式,pell,、,cos,方式,Struts2,的文件上传,可以使用,apache,组织的,commons-,fileupload,组件。,两个,lib,Commons-,fileupload.jar,Commons-,io.jar,UploadServlet.java,使用,servlet,来实现,使用文件流来实现,使用,commons.apache.FileUpload,插件来进行,注意:此时文件的出现在哪?,Tomcat/,webapps/FileUpload,而不是我们的工程里,Serlvet,的类的编写,Index.jsp,文件上传所涉及的类,DiskFileItemFactory,是磁盘文件条目工厂类,可以设置上传文件的一些限制,上传的文件如果比较小的话,直接存在内容中,然后该类将内存中的信息写至磁盘文件中,如果上传的文件比较大的话,会将文件保存至一个临时文件中,然后再将临时文件时的内容写到相应磁盘文件中。,通过以下两个方法设置,DiskFileItemFactory,(),setRepository(new,File(*);,setSizeThreshold,(*);,文件上传所涉及的类,ServletFileUpload,ServletFileUpload(DiskFileItemFactory,);,List,parseRequest(request,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!