分享

Struts第3天补充

 liuyang_inf 2014-08-26

 

说我的博客文字太多,没办法就分两篇发了,都是第3的知识点,前面讲了LookupDispatchAction,这里讲解文件的上传和下载!

文件的上传

先是文件的上传吧,因为有了上传才会有下载,HOHO!

首先,还是action的书写,示例:

  1. //文件上传代码   
  2. public class FileUpLoadAction extends Action{   
  3.     public ActionForward execute(ActionMapping mapping, ActionForm form,   
  4.             HttpServletRequest request, HttpServletResponse response)   
  5.             throws Exception {   
  6.         FilesForm ffs (FilesForm)form; //获得formbean对象   
  7.         FormFile ff ffs.getMyfile(); //获得到FormFile对象   
  8.         InputStream is ff.getInputStream();//获得一个写入流   
  9.         OutputStream os new FileOutputStream("c:/"+new SimpleDateFormat("yyyy-MM-dd HH.mm.ss").format(new Date())+".png"); //以上传时间为名字,避免文件名的重复,并获得一个输出流   
  10.         byte [] by new byte[is.available()];//定义一个byte数组用了装文件数据   
  11.         int len 0   
  12.         while((len=is.read(by))!= -1){//如果小于-1就是读完了   
  13.             os.write(by,0,len); //从0开始,读到最后结束   
  14.         }   
  15.         is.close();   
  16.         os.flush();   
  17.         os.close();   
  18.         return mapping.findForward("success");   
  19.     

下来是FormBean的书写:

  1. //FormBean的书写,其中的myfile跟jsp页面上的property值对应!   
  2. public class FilesForm extends ActionForm {   
  3.     private FormFile myfile;   
  4.     public FormFile getMyfile() {   
  5.         return myfile;   
  6.       
  7.     public void setMyfile(FormFile myfile) {   
  8.         this.myfile myfile;   
  9.     }   
  10.  

接着是配置文件的配置:

  1.  <!--FormBean的配置-->  
  2.  <form-beans>  
  3.     <form-bean name="files" type="com.lovo.form.FilesForm"></form-bean>  
  4.  </form-beans>  
  5.   
  6. <!--Action的配置-->  
  7. <action path="/file" type="com.lovo.action.FileUpLoadAction" name="files" validate="false">  
  8.         <forward name="success" path="/success.jsp"></forward>  
  9. </action>  

这里的配置跟一个普通的action和formbean的配置没有什么区别!

然后是jsp页面的书写:

<html:form action="file.do" method="post" enctype="multipart/form-data">  

   <html:file property="myfile"></html:file>  

   <html:submit value="上传"></html:submit>  

</html:form> 

提示:form的enctype="multipart/form-data" 必须配置,并且,Mehtod必须是post类型

<html:file property="myfile"></html:file>  的property的值为formbean里面的属性名!

文件的下载

文件的下载在Struts中提供了一个内置的实现类也就是DownloadAction这个类,下面我们来书写一个Action来继承这个类代码如下:

  1. //文件的下载 继承DownloadAction并实现getStreamInfo方法   
  2. public class FileDownAction extends DownloadAction   
  3.     protected StreamInfo getStreamInfo(ActionMapping mapping, ActionForm form,   
  4.             HttpServletRequest request, HttpServletResponse response)   
  5.             throws Exception {   
  6.         response.setContentType("application/x-download");//设置response的meta的类型为下载类型,这样浏览器才会弹出保持对话框   
  7.         response.setHeader("Content-Disposition""attachment;filename=" "mm.png");//设置响应头,第一个参数为设置文件的默认名,第二个参数是目的是用户下载(保存文件)给出一个文件的默认的具体名字   
  8.         StreamInfo si new FileStreamInfo("image/png",new File("c:/mm.png"));//因为StreamInfo 是一个接口,那么来创建它的实现类FileStreamInfo,第一个参数是文件类型,第二个参数是文件在服务器上的的保持位置,这里最好是具体的文件位置
  9.         return si;//返回StreamInfo    
  10.           
  11.  

action的配置就较为简单了,也不需要formbean的参与代码如下:

<action path="/down" type="com.lovo.action.FileDownAction" ></action>  

这里Action的配置就不做讲解了!

最后是JSP的书写,也很简单:

<a href="down.do">下载</a> 

这样就可以完成下载了!

好了,今天的知识点先总结到此!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多