zoukankan      html  css  js  c++  java
  • j2ee之struts2文件上传

    1、文件上传

    首先要导入要用到的struts2的jar包

    2、在web.xml中配置拦截器

      <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    3、在src目录下配置struts.xml

    <?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">
    
    <!-- START SNIPPET: xworkSample -->
    <struts>
        <include file="com/xinzhi/file/input.xml"></include>
    </struts>
    
    <!-- END SNIPPET: xworkSample -->

    4、修改上传文件大小常量(这个是为了练习采写,默认大小为2M)在src目录下配置constant.xml

    <?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">
    
    <!-- START SNIPPET: xworkSample -->
    <struts>
        <constant name="struts.multipart.maxSize" value="31457280"></constant>
    </struts>

    5、写一个上传的jsp页面input.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>文件上传</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    
      </head>
      
      <body>
       <form action="inputFileAction" method="post" enctype="multipart/form-data">
               上传文件:<input type="file" name="file1"/>
               <input type="submit" value="提交">
       </form>
      </body>
    </html>

    6、在FileUploadAction.java中接收文件并处理

    package com.xinzhi.file;
    
    import java.io.File;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.Action;
    
    public class FileUploadAction implements Action {
    
        private File file1;// 上传的文件
        private String file1FileName;// 上传的文件名,格式固定(文件+FileName)
    
        public void setFile1(File file1) {
            this.file1 = file1;
        }
    
        public void setFile1FileName(String file1FileName) {
            this.file1FileName = file1FileName;
        }
    
        public String execute() throws Exception {
            String realPath = ServletActionContext.getServletContext().getRealPath(
                    "/load");
            File destFile = new File(realPath, file1FileName);//目标文件
            FileUtils.copyFile(file1, destFile);
            return "success";
        }
    }

    7、在当前包下配置action即input.xml(因为我在src下面写了一个总的配置,所以在这里写的要在总的配置中include一下)

    <?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">
    
    <!-- START SNIPPET: xworkSample -->
    <struts>
        <package name="inputpackage" extends="struts-default" >
         
           <action name="inputFileAction" class="com.xinzhi.file.FileUploadAction" method="execute">
               <result name="success">/index.jsp</result>
               <!--
               限制的拓展名extensions-默认堆-Stack
                -->
                <interceptor-ref name="defaultStack" >
                      <param name="fileUpload.allowedExtensions">txt,jpg,</param>
              </interceptor-ref>
           </action>
        </package>
    </struts>

    至此文件上传的代码就完成了

  • 相关阅读:
    iOS开发——C篇&数组与指针
    iOS开发——C篇&动态内存分配
    助教工作总结
    助教周报(第二轮)— 王茹瑶,林泽龙,范青青
    助教周报(第一轮)---王茹瑶
    UML总结--熊熊的奇幻旅程
    今天是一个睡前的小故事(是谁要给的大饼)
    我与oracle的爱恨情仇(第一章)
    第三次结对作业(王茹瑶+柯智腾)
    第二次结对作业(王茹瑶+柯智腾)
  • 原文地址:https://www.cnblogs.com/ShaoXin/p/6999291.html
Copyright © 2011-2022 走看看