zoukankan      html  css  js  c++  java
  • 在struts2中实现文件上传(以图片上传为例)

    在struts2中实现(以图片上传为例)

    1.FileUpload.jsp代码清单如下:

    复制代码
    Java代码  
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib prefix="s" uri="/struts-tags" %>  
    <html>  
      <head>  
        <title>The FileUplaodDemo In Struts2</title>  
      </head>  
        
      <body>  
        <s:form action="fileUpload.action" method="POST" enctype="multipart/form-data">  
            <s:file name="myFile" label="MyFile" ></s:file>  
            <s:textfield name="caption" label="Caption"></s:textfield>  
            <s:submit label="提交"></s:submit>  
        </s:form>  
      </body>  
    </html>  
    复制代码

     

    2.ShowUpload.jsp的功能清单如下:

    复制代码
    Java代码  
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib prefix="s" uri="/struts-tags" %>  
    <html>  
      <head>  
        <title>ShowUpload</title>  
      </head>  
        
      <body>  
        <div style ="padding: 3px; border: solid 1px #cccccc; text-align: center" >   
            <img src ='UploadImages/<s:property value ="imageFileName"/> '/>  
            <br />   
            <s:property value ="caption"/>   
        </div >   
      </body>  
    </html>  
    复制代码

    3.FileUploadAction.java的代码清单如下 :

    复制代码
    Java代码  
    package com.chris;  
      
    import java.io.*;  
    import java.util.Date;  
      
    import org.apache.struts2.ServletActionContext;  
      
      
    import com.opensymphony.xwork2.ActionSupport;  
      
    public class FileUploadAction extends ActionSupport{  
      
         private static final long serialVersionUID = 572146812454l ;  
         private static final int BUFFER_SIZE = 16 * 1024 ;  
          
         //注意,文件上传时<s:file/>同时与myFile,myFileContentType,myFileFileName绑定  
         //所以同时要提供myFileContentType,myFileFileName的set方法  
           
         private File myFile;   //上传文件  
         private String contentType;//上传文件类型  
         private String fileName;   //上传文件名  
         private String imageFileName;  
         private String caption;//文件说明,与页面属性绑定  
          
         public void setMyFileContentType(String contentType)  {  
             System.out.println("contentType : " + contentType);  
             this .contentType = contentType;  
        }   
          
         public void setMyFileFileName(String fileName)  {  
             System.out.println("FileName : " + fileName);  
             this .fileName = fileName;  
        }   
              
         public void setMyFile(File myFile)  {  
             this .myFile = myFile;  
        }   
          
         public String getImageFileName()  {  
             return imageFileName;  
        }   
          
         public String getCaption()  {  
             return caption;  
        }   
       
          public void setCaption(String caption)  {  
             this .caption = caption;  
        }   
          
         private static void copy(File src, File dst)  {  
             try  {  
                InputStream in = null ;  
                OutputStream out = null ;  
                 try  {                  
                    in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);  
                    out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);  
                     byte [] buffer = new byte [BUFFER_SIZE];  
                     while (in.read(buffer) > 0 )  {  
                        out.write(buffer);  
                    }   
                 } finally  {  
                     if ( null != in)  {  
                        in.close();  
                    }   
                      if ( null != out)  {  
                        out.close();  
                    }   
                }   
             } catch (Exception e)  {  
                e.printStackTrace();  
            }   
        }   
          
         private static String getExtention(String fileName)  {  
             int pos = fileName.lastIndexOf(".");  
             return fileName.substring(pos);  
        }   
       
        @Override  
         public String execute()      {          
            imageFileName = new Date().getTime() + getExtention(fileName);  
            File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/UploadImages" ) + "/" + imageFileName);  
            copy(myFile, imageFile);  
             return SUCCESS;  
        }  
    } 
    复制代码

    注:此时仅为方便实现Action所以继承ActionSupport,并Overrider execute()方法
      在struts2中任何一个POJO都可以作为Action

    4.struts.xml清单如下:

    复制代码
    Java代码  
    <?xml version="1.0" encoding="UTF-8" ?>  
    <!DOCTYPE struts PUBLIC  
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
        "http://struts.apache.org/dtds/struts-2.0.dtd">  
    <struts>  
        <package name="example" namespace="/" extends="struts-default">  
            <action name="fileUpload" class="com.chris.FileUploadAction">  
            <interceptor-ref name="fileUploadStack"/>  
            <result>/ShowUpload.jsp</result>  
            </action>  
        </package>  
    </struts>  
    复制代码

    5.web.xml清单如下:

    复制代码
    Java代码  
    <?xml version="1.0" encoding="UTF-8"?>  
    <web-app version="2.4"   
        xmlns="http://java.sun.com/xml/ns/j2ee"   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
        <filter >   
            <filter-name > struts-cleanup </filter-name >   
            <filter-class >   
                org.apache.struts2.dispatcher.ActionContextCleanUp  
            </filter-class >   
        </filter >   
         <filter-mapping >   
            <filter-name > struts-cleanup </filter-name >   
            <url-pattern > /* </url-pattern >   
        </filter-mapping >  
          
        <filter>  
            <filter-name>struts2</filter-name>  
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
        </filter>  
        <filter-mapping>  
            <filter-name>struts2</filter-name>  
            <url-pattern>/*</url-pattern>  
        </filter-mapping>  
      <welcome-file-list>  
        <welcome-file>Index.jsp</welcome-file>  
      </welcome-file-list>  
        
    </web-app>  
    复制代码

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    react开发环境搭建
    react 组件创建
    Redux 视频教程
    echars3.0 柱状图y轴字体斜放
    echars3.0 柱状图大小设置
    ECharts地图详解 【转】
    html 超出出现省略号
    html JS打印添加水印图片
    js 重庆38区县 数组
    docker 暴露2375 端口。
  • 原文地址:https://www.cnblogs.com/shipeng22022/p/4614118.html
Copyright © 2011-2022 走看看