- 浏览: 1504816 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
struts2多图片上传实例
描述:
通过struts2实现多图片上传。
我使用的版本是2.2.1,使用的包有如下几个:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <%
- 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>My JSP 'fileUpLoad.jsp' starting page</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" mce_href="styles.css">
- -->
- </head>
- <body>
- <center>
- <s:form action ="fileUpload" method ="POST" enctype ="multipart/form-data" >
- <s:fielderror />
- <s:file name ="myFile" label ="Image File1"/>
- <s:file name ="myFile" label ="Image File2"/>
- <s:file name ="myFile" label ="Image File3"/>
- <s:textfield name ="caption" label ="Caption" />
- <s:submit/>
- </s:form>
- </center>
- </body>
- </html>
在FileUpload.jsp中,先将表单的提交方式设为POST,然后将enctype设为multipart/form-data,这并没有什么特别之处。接下来,<s:file/>标志将文件上传控件绑定到Action的myFile属性,因为要上传多张图片我们就暂且添加三个file
注意这三个file的name属性要相同。
2. 创建处理图片上传的action
FileUploadAction.java
- package com.ywjava.action;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class FileUploadAction extends ActionSupport {
- private static final long serialVersionUID = 572146812454l;
- private static final int BUFFER_SIZE = 16 * 1024;
- private List<File> myFile = new ArrayList<File>();
- private List<String> contentType = new ArrayList<String>();
- private List<String> fileName = new ArrayList<String>(); //文件名
- private List<String> imageFileName = new ArrayList<String>();
- private String caption;
- private static void copy(File src, File dst) {
- try {
- InputStream in = null;
- OutputStream out = null;
- try {
- in = new BufferedInputStream(new FileInputStream(src),
- BUFFER_SIZE);
- out = new BufferedOutputStream(new FileOutputStream(dst),
- BUFFER_SIZE);
- byte[] buffer = new byte[BUFFER_SIZE];
- while (in.read(buffer) > 0) {
- out.write(buffer);
- }
- } finally {
- if (null != in) {
- in.close();
- }
- if (null != out) {
- out.close();
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private static String getExtention(String fileName) {
- int pos = fileName.lastIndexOf(".");
- return fileName.substring(pos);
- }
- @Override
- public String execute() {
- if (myFile == null)
- return INPUT;
- for (int i = 0; i < myFile.size(); i++) {
- imageFileName.add(new Date().getTime()+ getExtention(this.getMyFileFileName().get(i))) ;
- File imageFile = new File(ServletActionContext.getServletContext() //得到图片保存的位置(根据root来得到图片保存的路径在tomcat下的该工程里)
- .getRealPath("UploadImages")
- + "/" + imageFileName);
- copy(myFile.get(i), imageFile); //把图片写入到上面设置的路径里
- }
- return SUCCESS;
- }
- public List<File> getMyFile() {
- return myFile;
- }
- public void setMyFile(List<File> myFile) {
- this.myFile = myFile;
- }
- public List<String> getContentType() {
- return contentType;
- }
- public void setContentType(List<String> contentType) {
- this.contentType = contentType;
- }
- public List<String> getMyFileFileName() {
- return fileName;
- }
- public void setMyFileFileName(List<String> fileName) {
- this.fileName = fileName;
- }
- public List<String> getImageFileName() {
- return imageFileName;
- }
- public void setImageFileName(List<String> imageFileName) {
- this.imageFileName = imageFileName;
- }
- public String getCaption() {
- return caption;
- }
- public void setCaption(String caption) {
- this.caption = caption;
- }
- public static int getBufferSize() {
- return BUFFER_SIZE;
- }
- }
在FileUploadAction中我分别写了setMyFileContentType、setMyFileFileName、setMyFile和setCaption四个Setter方法,
后两者很容易明白,分别对应FileUpload.jsp中的<s:file/>和<s:textfield/>标志。但是前两者并没有显式地与任何的页面标志绑定,
那么它们的值又是从何而来的呢?其实,<s:file/>标志不仅仅是绑定到myFile,
还有myFileContentType(上传文件的MIME类型)和myFileFileName(上传文件的文件名,该文件名不包括文件的路径)。
因此,<s:file name="xxx" />对应Action类里面的xxx、xxxContentType和xxxFileName三个属性。
FileUploadAction作用是将浏览器上传的文件拷贝到WEB应用程序的
UploadImages文件夹下,新文件的名称是由系统时间与上传文件的后缀组成,
该名称将被赋给imageFileName属性,以便上传成功的跳转页面使用。
3. 创建显示图片的页面
showUpload.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <%
- 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>Show Image</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" mce_href="styles.css">
- -->
- </head>
- <body>
- <s:iterator value="imageFileName" status="length">
- <div
- style="padding: 3px; border: solid 1px #cccccc; text-align: center">
- <img src='UploadImages/<s:property value ="imageFileName" /> ' />
- <br />
- <s:property value="caption" />
- </div>
- </s:iterator>
- <s:property value ="caption" />
- </body>
- </html>
4.Action配置文件
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.enable.DynamicMethodInvocation" value="false" />
- <constant name="struts.devMode" value="false" />
- <!-- 指定国际化资源文件的baseName为messageResource -->
- <constant name="struts.custom.i18n.resources" value="messageResource" />
- <!-- 设置该应用使用的解码集 -->
- <constant name="struts.i18n.encoding" value="utf-8" />
- <!-- 上传的全部图片的最大限制-->
- <constant name="struts.multipart.maxSize" value="1024102400" />
- <!-- 临时存放文件的路径 -->
- <constant name="struts.multipart.saveDir" value="d:/test" />
- <package name="index" namespace="/" extends="struts-default">
- <action name="index" class="com.ywjava.action.IndexAction">
- <result>
- /WEB-INF/page/fileUpLoad.jsp
- </result>
- </action>
- <action name="fileUpload" class="com.ywjava.action.FileUploadAction">
- <!-- 限制图片的格式和图片的大小 -->
- <interceptor-ref name="fileUpload">
- <param name="allowedTypes">
- image/bmp,image/png,image/gif,image/jpeg,image/pjpeg
- </param>
- </interceptor-ref>
- <!-- 默认的拦截器,必须要写 -->
- <interceptor-ref name="defaultStack" />
- <result name="input"> /WEB-INF/page/fileUpLoad.jsp</result>
- <result name="success">/WEB-INF/page/showUpload.jsp</result>
- </action>
- </package>
- <!--
- <constant name="struts.multipart.saveDir" value="d:/test"></constant>
- -->
- <!-- Add packages here -->
- </struts>
Action配置文件里所做的配置都有注释,不明白的地方看下注释
另外因为做了国际化处理所以需要一个国际化配置的文件
放在src目录下
5.国际化配置文件
messageResource_zh_CN.properties(只配置了中文的)
struts.messages.error.content.type.not.allowed=/u4E0A/u4F20/u7C7B/u578B/u9519/u8BEF
struts.messages.error.file.too.large=/u4E0A/u4F20/u6587/u4EF6/u592A/u5927
总结:struts2上传图片利用了fileUpload拦截器而变的简单,主要是在action中做相应处理获取文件的相应信息。
具体实现:
1. 创建上传图片的页面
fileUpload.jsp
相关推荐
1. **图片上传流程**:首先,用户通过Web界面选择本地的图片文件并提交。接着,Struts2的Action类接收到请求,处理文件上传的数据。 2. **Struts2文件上传支持**:Struts2提供了FileUpload interceptor,它可以处理...
这个"struts2_上传下载"实例可能还包括了错误处理、多文件上传、限制上传大小、文件类型检查等更复杂的情况。通过这些示例,开发者可以学习如何在实际项目中安全、高效地实现文件上传和下载功能。
1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`<result>`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...
本实例将向你展示如何利用Struts2的FileUpload拦截器处理图片上传,并通过Java图像处理库如Java AWT或Apache Commons Imaging(原ImageIO)来创建缩略图。 首先,我们需要在Struts2的配置文件`struts.xml`中添加`...
在图片上传实例中,Struts1主要负责接收前端发送的文件数据,进行业务逻辑处理,然后将处理结果返回给前端。 3. **Java 后端处理**: 在Java后端,我们需要创建一个Action类来处理上传请求。该Action类通常会包含...
在Struts2中,实现文件上传功能是一项常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本实例主要关注如何在Struts2框架下进行文件上传。 首先,我们需要在Struts2配置文件(通常为struts.xml)中...
标题与描述概述的知识点主要集中在Struts2框架中的文件与图片上传功能,下面将详细解析这一过程的关键步骤和实现机制。 ### Struts2文件与图片上传详解 #### 准备工作 - **导入必要的库**:为了实现文件上传功能,...
总的来说,"struts实现任意多文件上传实例"是一个实用的示例,可以帮助开发者了解和掌握在Struts中进行多文件上传的完整流程。通过学习这个实例,你可以更深入地理解Struts框架和文件上传的处理方式。
在图片上传的场景下,我们需要创建一个Action类,该类通常会包含一个方法来处理上传请求。这个方法会接收上传文件的参数,并进行合法性校验,如检查文件类型、大小等。Struts2的配置文件(struts.xml)需要配置这个...
### Struts 1.2 图片上传实例解析 #### 一、概述 在Web开发过程中,文件上传是一项常见的功能需求。对于使用Struts框架进行开发的项目而言,掌握如何利用Struts实现文件上传是非常必要的技能之一。本文将通过一个...
在本实例中,我们将深入探讨如何利用Struts框架和JSP来实现文件上传功能。 Struts是Apache软件基金会的一个开源项目,它提供了一种规范化的MVC设计模式的实现,帮助开发者组织和控制应用程序的业务逻辑。而JSP...
以上就是一个完整的在Struts框架下实现图片上传到数据库并显示的实例。这个过程涉及到前端表单处理、后端Action处理、数据库操作以及页面展示等多个环节,理解并掌握这些知识对于开发Java Web应用非常有帮助。
在Struts2 Action类中,我们需要创建一个`java.io.File`或`org.apache.struts2.util.FileWrapper`类型的属性来接收上传的文件。例如: ```java private File file; private String fileContentType; private ...
综上所述,"struts2图片上传"是一个关于如何在Struts2框架下实现用户端图片文件上传到服务器的实例。它涵盖了Java、J2EE、上传技术和Struts2框架的核心知识点,是Web开发中的常见操作,对理解和掌握这些技术有重要...
在本文中,我们将深入探讨如何使用Ext3.2与Struts框架实现文件上传功能,同时解决中文乱码问题。这两个技术结合在一起,可以为Web应用提供高效、稳定的文件上传解决方案。 首先,Ext3.2是一个JavaScript库,它提供...
1、内含两个文件:①、UEditorDemo.rar ②、UEdtior的简单使用.doc;...5、最后一点是提示:如果要把UEditor使用在struts中,要重写web.xml中所有过滤.jsp或者.*的过滤器,不然上传图片和文件会失败。
Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...
总结来说,这个Java图片上传实例主要涉及以下知识点: 1. Struts框架的Action配置和执行机制。 2. 使用`File`对象接收上传的文件。 3. 处理文件上传的业务逻辑,包括文件的保存和异常处理。 4. HTML表单的创建,...
本文详细介绍了如何在Struts2框架中实现简单的图片上传功能。通过导入必要的Jar包、编写工具类以及设计前端上传页面,我们可以方便地实现文件上传的需求。此外,还介绍了文件上传的整个流程及其背后的工作原理,这...
在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...