Struts2实现简单上传

本文介绍了一个使用Struts2框架实现文件上传的具体案例,包括web.xml配置、struts.xml配置文件设置、JSP页面展示及Java后端处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web.xml

<?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>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>
</web-app>

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"
>

<struts>
    
<package name="struts2" extends="struts-default">
        
<action name="upload" class="com.xie.struts.upload.UploadAction">
            
<result name="success">/upload/result.jsp</result>
        
</action>
    
</package>
</struts>

 

upload.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding
="GB18030"
%>
<%@ taglib prefix="s" uri="/struts-tags" %>    
<html>
<head>
<title>upload</title>
</head>
<body>
<s:form action="upload" enctype="multipart/form-data">
    
<s:textfield name="username" id="username" label="username"/>
    
<s:file name="file" id="file" label="file"/>
    
<s:submit/>
</s:form>
</body>
</html>

 result.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding
="GB18030"
%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
    
<head>
        
<title>result</title>
    
</head>
    
<body>
        
<s:property value="username" />
        
<br>
        
<s:property value="fileFileName" />
    
</body>
</html>

UploadAction.java

package com.xie.struts.upload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
    
private String username;

    
private File file;

    
private String fileFileName; // 有属性file+Filename固定组成

    
private String fileContentType; // 有属性file+ContentType固定组成

    
public String getUsername() {
        
return username;
    }


    
public void setUsername(String username) {
        
this.username = username;
    }


    
public File getFile() {
        
return file;
    }


    
public void setFile(File file) {
        
this.file = file;
    }


    
public String getFileFileName() {
        
return fileFileName;
    }


    
public void setFileFileName(String fileFileName) {
        
this.fileFileName = fileFileName;
    }


    
public String getFileContentType() {
        
return fileContentType;
    }


    
public void setFileContentType(String fileContentType) {
        
this.fileContentType = fileContentType;
    }


    @Override
    
public String execute() throws Exception {
        InputStream is 
= new FileInputStream(file);
        String root 
= ServletActionContext.getRequest().getRealPath("/temp");
        File destFile 
= new File(root, this.getFileFileName());
        OutputStream os 
= new FileOutputStream(destFile);
        
byte[] buffer = new byte[400];
        
int length = 0;
        
while ((length - is.read(buffer)) > 0{
            os.write(buffer, 
0, length);
        }

        is.close();
        os.close();
        
return SUCCESS;
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值