`
esffor
  • 浏览: 1370603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《struts2权威指南》学习笔记之struts2文件上传--使用fileUpload拦截器

阅读更多

上传页面:

 

<%...@ page language="java" contentType="text/html; charset=GBK"%>
<%...@taglib prefix="s" uri="/struts-tags"%>
<%...@ page isELIgnored="false" %>
<%...@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


<head>

<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title></title>
</head>
<body>
<s:fielderror/>
<form action="upload.action" method="post" enctype="multipart/form-data">
      
<input type="text" name="title" /><br>
      
<input type="file" name="upload" /><br>
    
<input value="upload" type="submit" />
</form>
</body>
</html>

 上传action:

 

package lee;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

import org.apache.struts2.ServletActionContext;
import java.io.*;

import com.opensymphony.xwork2.ActionSupport;



public class UploadAction extends ActionSupport
...{
    
private String title;
    
private File upload;
    
private String uploadContentType;
    
private String uploadFileName;


    
//接受依赖注入的属性
    private String savePath;
    
//接受依赖注入的方法
    public void setSavePath(String value)
    
...{
        
this.savePath = value;
    }


    
private String getSavePath() throws Exception 
    
...{
        
return ServletActionContext.getRequest().getRealPath(savePath);
    }

    
    
public void setTitle(String title) ...{
        
this.title = title; 
    }


    
public void setUpload(File upload) ...{
        
this.upload = upload; 
    }


    
public void setUploadContentType(String uploadContentType) ...{
        
this.uploadContentType = uploadContentType; 
    }


    
public void setUploadFileName(String uploadFileName) ...{
        
this.uploadFileName = uploadFileName; 
    }


    
public String getTitle() ...{
        
return (this.title); 
    }


    
public File getUpload() ...{
        
return (this.upload); 
    }


    
public String getUploadContentType() ...{
        
return (this.uploadContentType); 
    }


    
public String getUploadFileName() ...{
        
return (this.uploadFileName); 
    }

    @Override
    
public String execute() throws Exception
    
...{
        System.out.println(
"开始上传单个文件-----------------------");
        System.out.println(getSavePath());
        System.out.println(
"==========" + getUploadFileName());
        System.out.println(
"==========" + getUploadContentType());
        System.out.println(
"==========" + getUpload());
        
        
        
//以服务器的文件保存地址和原文件名建立上传文件输出流
        FileOutputStream fos = new FileOutputStream(getSavePath() + "\" + getUploadFileName());
        FileInputStream fis 
= new FileInputStream(getUpload());
        
byte[] buffer = new byte[1024];
        
int len = 0;
        
while ((len = fis.read(buffer)) > 0)
        
...{
            fos.write(buffer , 
0 , len);
        }

        
return SUCCESS;
    }

    



}

 

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>

    
<constant name="struts.custom.i18n.resources" value="globalMessages"/>
    
<constant name="struts.i18n.encoding" value="GBK"/>

    
<package name="lee" extends="struts-default">
    
        
<action name="upload" class="lee.UploadAction">
          
<interceptor-ref name="fileUpload"> 
                
<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg</param> 
                
<param name="maximumSize">2000</param> 
            
</interceptor-ref> 
            
<interceptor-ref name="defaultStack"/> 
            
<param name="savePath">/upload</param>
            
<result>/succ.jsp</result>    
            
<result name="input">/upload.jsp</result>    
        
</action>        
    
</package>
</struts>    

 

如果需要使用文件上传拦截器来过滤文件大小,或者过滤文件内容,则必须显示配置引用Struts默认的拦截器栈:defaultStack

资源文件中配置文件类型不正确和大小不正确的提示:


struts.messages.error.content.type.not.allowed = 文件类型不正确
struts.messages.error.file.too.large= 文件大小不正确

分享到:
评论
1 楼 wyyl00 2008-12-10  
这样也叫笔记 哎

相关推荐

    struts2学习笔记黑马程序员

    ### Struts2学习笔记之文件上传与Ajax开发 #### Struts2文件上传 **文件上传简介** 文件上传是Web应用中常见的功能之一,Struts2框架内置了对文件上传的支持,使得开发者能够轻松地实现这一功能。为了确保文件...

    struts2学习笔记

    - Struts2框架默认加载的配置文件,定义了核心bean和拦截器。 - 自动被struts.xml文件包含,提供了标准配置。 **5. 其他配置文件** - **velocity.properties**:用于配置Velocity模板引擎的属性。 - **struts-...

    传智播客struts2全程学习笔记

    ### 传智播客Struts2全程学习笔记 #### Struts2的优点 1. **无侵入式设计**:与Struts1相比,Struts2的设计更为先进,它不依赖于Servlet API或Struts API,这使得Struts2更加灵活且易于集成到其他环境中。在代码...

    struts2综合笔记

    - 学习如何使用 Struts2 提供的各种标签和插件来简化开发工作。 综上所述,Struts2 是一个功能强大且灵活的 MVC 框架,适用于构建复杂的 Web 应用程序。通过深入理解其核心概念和技术细节,开发者能够充分利用 ...

    Struts2 - 学习笔记

    2. **拦截器机制**:Struts2引入了拦截器,允许开发者使用AOP(面向切面编程)进行业务逻辑处理,比如权限控制、日志记录等。拦截器使得代码更加模块化,易于复用和扩展。 3. **类型转换器**:Struts2提供内置的...

    struts2超详细笔记

    - **默认加载的配置文件**:定义了struts2的一些核心bean和拦截器,自动包含在struts.xml中。 - **包含位置**:struts2-core.jar内。 **(5)其他配置文件** - **velocity.properties**:用于配置Velocity模板引擎...

    Struts2_学习笔记

    本学习笔记将深入探讨Struts2的核心概念、工作原理以及如何在实际开发中有效利用它。 **1. MVC模式与Struts2** MVC模式是一种软件设计模式,它将业务逻辑(Model)、用户界面(View)和数据控制(Controller)分离...

    struts2学习笔记三

    在本篇“Struts2学习笔记三”中,我们将探讨Struts2中处理文件上传的核心组件和拦截器,以及如何在实际应用中实现文件上传。 1. 文件上传组件: - jspSmartUpload:这是一个早期用于模型1的上传组件,现在已经被更...

    struts学习笔记

    ### Struts学习笔记详解 #### 一、Struts框架概览与编码设置 在学习Struts框架时,首要关注的是其编码配置。如代码片段所示,`struts.i18n.encoding`常量被设置为`UTF-8`,这确保了国际化(I18N)资源文件的正确...

    struts2学习笔记十四(第14讲.Struts2的文件上传和下载续二)

    在本篇“Struts2学习笔记十四”中,我们将深入探讨Struts2框架如何实现文件上传和下载功能,这是web应用中常见的需求,尤其在处理用户提交的表单数据时。我们将不涉及具体代码,而是重点讲解相关概念和技术原理。 ...

    Struts2自学笔记——Struts2的文件上传

    这篇自学笔记将深入探讨Struts2的文件上传机制。 1. **文件上传原理** 文件上传是基于HTTP协议的POST请求实现的。在HTML表单中,通过`&lt;input type="file" /&gt;`元素让用户选择本地文件。当用户提交表单时,浏览器会...

    Struts2.1学习笔记

    ### Struts2.1学习笔记 #### Struts2的来源与优点 - **来源**:Struts2是在WebWork2的基础上发展起来的,它继承了WebWork2的优点,并且进行了改进,使其更适合现代Web应用程序的需求。与Struts1相比,Struts2的...

    Struts2学习笔记

    Struts2的核心组件包括Action类、配置文件、拦截器和结果类型。Action类是业务逻辑的载体,而拦截器则用于处理请求、添加额外功能或进行异常处理。此外,Struts2支持多种结果类型,如JSP、FreeMarker和Velocity等...

    struts2学习笔记十三(第13讲.Struts2的文件上传和下载续)

    在本篇“Struts2学习笔记十三”中,我们将深入探讨Struts2如何处理文件上传和下载,这是Web开发中常见的需求。 文件上传在Web应用中广泛用于让用户提交图片、文档或其他类型的数据。Struts2提供了一个名为`...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    随着Java技术的发展和Web应用的需求变化,最初的Struts1设计开始暴露出一些限制,比如不支持拦截器等。而WebWork框架在设计上更为先进,引入了许多新的特性,如拦截器机制和OGNL表达式语言。为了克服这些限制并利用...

Global site tag (gtag.js) - Google Analytics