Struts 1.2 文件上传与下载实现教程
"该资源是关于使用Struts 1.2框架进行文件上传与下载的Java实现。通过分析给出的代码片段,我们可以看到一个基于Struts 1.2的Action类,`FileAction`,它扩展了`DispatchAction`,并处理文件上传请求。这个例子演示了如何检查文件类型和大小,以及如何处理上传文件的实际操作。" 在Java Web开发中,Struts是一个非常流行的MVC(模型-视图-控制器)框架,它简化了构建基于JSP的Web应用。Struts 1.2是该框架的一个旧版本,但仍然广泛用于教学和一些遗留项目中。 这段代码的核心部分在于`FileAction`类中的`upload`方法,这是处理文件上传请求的地方。当用户通过表单提交文件时,Struts框架会调用这个方法。以下是一些关键知识点: 1. **文件上传组件**:`org.apache.struts.upload.FormFile`接口用于表示上传的文件,这里通过`fileForm.getFile()`获取上传的文件对象。 2. **文件类型限制**:`fileExt`变量定义了允许上传的文件扩展名,例如图片格式。在实际应用中,应根据需求进行严格的文件类型检查,以防止恶意文件上传。 3. **文件大小限制**:`maxSize`变量定义了最大文件大小,这里的409600字节等于400KB。超过这个大小的文件会被拒绝,这有助于防止DoS攻击。 4. **文件名处理**:在处理上传文件时,通常需要生成一个新的文件名,以避免覆盖现有的文件。在实际应用中,可能还需要考虑文件名的安全性,如去除特殊字符。 5. **文件保存**:上传的文件需要保存到服务器的某个位置,代码中这部分没有给出,但通常会涉及`File`类和`InputStream`/`OutputStream`的使用,将上传文件的内容写入到服务器的临时或指定目录。 6. **错误处理**:在处理文件上传时,需要处理可能出现的各种异常,例如文件过大、文件类型不合法等,通常会通过`ActionMessages`或`ActionErrors`向用户显示错误信息。 7. **Struts Action**:`DispatchAction`是一个特殊的Struts Action,它可以处理多个方法请求,每个方法对应表单中的一个参数。在这个例子中,`method`参数决定调用哪个Action方法。 8. **XDoclet注解**:虽然现在XDoclet已经被废弃,但在Struts 1.2时代,它用于自动生成Struts配置文件,注解`@struts.action`描述了Action的路径、表单Bean、参数等信息。 9. **范围管理**:`scope="request"`表明表单Bean(`fileForm`)是在请求范围内,这意味着它只在当前HTTP请求内有效。 这个代码片段展示了如何在Struts 1.2环境中实现文件上传的基本流程,但实际应用中可能需要进一步完善错误处理、安全措施以及文件保存的细节。
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.action;
import com.form.FileForm;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.DispatchAction;
import java.util.Date;
import java.util.Calendar;
import java.util.Vector;
import org.apache.struts.upload.*;
import tools.ListPage;
import java.io.*;
import java.net.URLEncoder;
/**
* MyEclipse Struts
* Creation date: 03-29-2008
*
* XDoclet definition:
* @struts.action path="/fileAction" name="fileForm" parameter="method" scope="request"
*/
public class FileAction extends DispatchAction {
/*
* Generated Methods
*/
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
//文件上传
public ActionForward upload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
final String fileExt="gif,GIF,jpg,JPG,jpeg,JPEG";
final int maxSize=409600;
FileForm fileForm = (FileForm) form;// TODO Auto-generated method stub
ActionMessages messages=new ActionMessages();
boolean flag=true;
if(fileForm.getName().equals(""))
{
flag=false;
messages.add("nameerror",new ActionMessage("name.error"));
}
if(fileForm.getUser().equals(""))
{
flag=false;
messages.add("usererror",new ActionMessage("user.error"));
}
if(fileForm.getFile().getFileSize()==0)
{
flag=false;
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全