Struts2-文件上传-<s:file>标签使用

来源:互联网 发布:淘宝良心装机店铺 编辑:程序博客网 时间:2024/05/17 23:49
  •  -开发环境:IDE: Intellij IDEA 2017tomcat:9.0os:archlinuxjdk:1.8.0._131 -
  • 新建FileUploadDemo工程

勾选struts2选项

创建完后工程目录如下:


  • 新建包com.action,在包下新建FileUploadAction.java类,内容如下
package com.action;import com.opensymphony.xwork2.ActionSupport;import java.io.File;/** * Created by sky on 7/11/17. */public class FileUploadAction extends ActionSupport {    private File uploadFile;//对应index.jsp里的<s:file>标签里的name的值  不一样无法获取    private String uploadFileFileName;    private String uploadFileContentType;    public void setUploadFile(File uploadFile) {        this.uploadFile = uploadFile;    }    public void setUploadFileFileName(String uploadFileFileName) {        this.uploadFileFileName = uploadFileFileName;    }    public void setUploadFileContentType(String uploadFileContentType) {        this.uploadFileContentType = uploadFileContentType;    }    public File getUploadFile() {        return uploadFile;    }    public String getUploadFileFileName() {        return uploadFileFileName;    }    public String getUploadFileContentType() {        return uploadFileContentType;    }    @Override    public String execute() throws Exception {        if(uploadFile!=null){            String dataDir="/home/sky/";            File saveFile=new File(dataDir,uploadFileFileName);            uploadFile.renameTo(saveFile);        }        else {            return INPUT;        }        return SUCCESS;    }}
  • 编辑struts.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"        "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <package name="Struts2_AJAX_DEMO" namespace="/" extends="struts-default">        <action name="fileupload" class="com.action.FileUploadAction">            <result>/success.jsp</result>            <interceptor-ref name="defaultStack">                <param name="fileUpload.allowedTypes">image/jpg,image/jpeg,image/png</param>            </interceptor-ref>        </action>    </package></struts>
  • WEB-INF 目录下 web.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"         version="3.1">    <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></web-app>
  • web目录下新建index.jsp和sucess.jsp
index.jsp内容如下:

<%--  Created by IntelliJ IDEA.  User: sky  Date: 7/11/17  Time: 4:18 PM  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="s" uri="/struts-tags" %><html>  <head>    <title>$Title$</title>  </head>  <body>  <center>    <s:form action="fileupload" enctype="multipart/form-data" method="POST">      <s:file name="uploadFile" label="选择文件"/>      <s:submit/>    </s:form>  </center>  </body></html>

sucess.jsp内容如下:

<%@ taglib prefix="s" uri="/struts-tags" %><%--  Created by IntelliJ IDEA.  User: sky  Date: 7/11/17  Time: 5:13 PM  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body><center>    <h2>        文件名:<s:property value="uploadFileFileName"/><br/>        文件类型:<s:property value="uploadFileContentType"/>    </h2></center></body></html>

  • 调试运行



注意:<s:file>标签里的name属性值务必跟 FileUploadAction类里的 private File  xxx一样,例如:<s:file>里的name=pic,<s:file name="pic"> 对应FileUploadAction类里的 private File  必须为pic,其他2个属性 文件名和文件类型 则为picFileName和picContentType,本例中  名为uploadFile。所以 <s:file name="uploadFile">

FileUploadAction类里3个字段名为 uploadFile uploadFileFileName uploadFileContentType。 

原创粉丝点击