`

Struts2.0文件上传原理

阅读更多

Struts2文件上传默认采用apache的文件上传的包,新建处理上传的Servlet 如下:

 

 

在WebRoot下面新建文件夹:upload,项目发布到服务器中去时服务器中就一个upload的文件夹

web.xml中Servlet配置如下:

 

<servlet>
  <servlet-name>UploadServlet</servlet-name>
  <servlet-class>com.mengya.servlet.UploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>UploadServlet</servlet-name>
  <url-pattern>/UploadServlet</url-pattern>
 </servlet-mapping> 

 

    新建JSP如下:

 

<form action="UploadServlet" method="post" enctype="multipart/form-data">
     username:<input type="text" name="username"><br>
     password:<input type="password" name="password"><br>
     file1:<input type="file" name="file1"><br>
     file2:<input type="file" name="file2"><br>
     <input type="submit" value="上传">
    </form>

  

/**
 * 
 * @author 张明学
 *	
 *	使用apache的commons-io-1.3.2.jar,commons-fileupload-1.2.1.jar完成处理文件上传的Servlet
 */
public class UploadServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * request.getRealPath("/")返回的是当前项目所在硬盘的路径 如:C:\Program Files\Apache
		 * Software Foundation\Tomcat 6.0\webapps\Struts2_9\
		 * request.getRealPath("/upload")返回的是当前项目所在硬盘的路径+根目录下面的upload的路径
		 * 如:C:\Program Files\Apache Software Foundation\Tomcat
		 * 6.0\webapps\Struts2_9\Upload
		 */
		String path = request.getRealPath("/upload");
		DiskFileItemFactory factory = new DiskFileItemFactory();
		/**
		 * Apache上传组件上传的文件若小于某一值时就将要上面的文件放在内存中,否则就放到一个临时的目录中去。
		 */
		/**
		 * 设置文件小于多少时放到内存当中去。1024*1024为1M的大小
		 */
		factory.setSizeThreshold(1024 * 1024);
		/**
		 * 设置大于上面设置的大小的文件上传时所放的临时目录,上传完成后临时目录所存放的垃圾文件不自动删除。
		 */
		factory.setRepository(new File(path));
		/**
		 * ServletFileUpload完成上传的核内类
		 */
		ServletFileUpload servletUpload = new ServletFileUpload(factory);
		try {
			List<FileItem> list = servletUpload.parseRequest(request);
			for (FileItem item : list) {
				/**
				 * 非file字段,即普通的字段
				 */
				if (item.isFormField()) {
					/**
					 * 获得字段的名称,即对应页面文本框等的名称
					 */
					String name = item.getFieldName();
					/**
					 * 以gbk方式获得该字段的value值,即对应页面文本框等所输入的值
					 */
					String value = item.getString("gbk");

					request.setAttribute(name, value);
				} else {
					/**
					 * file型字段
					 */
					/**
					 * 获得页面file的名称
					 */
					String name = item.getFieldName();
					/**
					 * 获得页面file中用户选择的文件的路径(与普通的字段不同)
					 * 由于不同的浏览器所取得值不同,有的得到是所选择文件的路径,有的得到的就是所选择的文件的名称。
					 * 如:有的浏览器所取得的是:C:\Documents and
					 * Settings\Administrator\桌面\电话本.txt 有的浏览器所取得的是:电话本.txt
					 */
					String value = item.getName();
					/**
					 * 下面做一个统一的处理 若为文件名则下面没有”\“则start为-1
					 */
					int start = value.lastIndexOf("\\");
					String fileName = value.substring(start + 1);
					request.setAttribute(name, fileName);
					/**
					 * 下面做上传的处理
					 */
					InputStream is = item.getInputStream();
					/**
					 * 上传的路径依然选择path
					 */
					File UploadFile = new File(path, fileName);
					OutputStream os = new FileOutputStream(UploadFile);

					byte[] buffer = new byte[400];
					int length = 0;
					while ((length = is.read(buffer)) > 0) {
						os.write(buffer, 0, buffer.length);
					}
					os.close();
					is.close();
					
					/**
					 * 更简单的上传方式
					 * 无需使用InputStream和OutputStream对象item.write(File)即可
					 * item.write(UploadFile);
					 */
				}
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}

	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}

 

  • Struts2_9.rar (131.5 KB)
  • 描述: 我的Struts2.0文件上传原理实例
  • 下载次数: 101
2
1
分享到:
评论

相关推荐

    Struts2.0文件上传实例

    Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...

    struts2.0文件上传下载

    Struts2.0 文件上传下载是Java Web开发中常见的功能,它涉及到客户端与服务器的数据交互。Struts2作为一款强大的MVC框架,提供了方便的文件上传和下载支持。本篇文章将深入探讨Struts2实现文件上传下载的核心概念、...

    struts2.0上传文件源码

    这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...

    struts2.0源代码

    通过深入研究这个Struts2.0的源代码,你可以更好地理解其工作原理,学习如何有效地利用它的特性来构建高效、健壮的Web应用。同时,这也有助于你了解如何将Struts2与其他技术(如Spring、Hibernate等)整合,构建更...

    struts2.0教程合集

    包含了Struts2.0的进阶主题,如动态方法调用(Dynamic Method Invocation,DMI)、OGNL(Object-Graph Navigation Language)表达式语言的使用、异常处理机制、国际化(Internationalization, i18n)支持以及文件上传...

    Struts2.0框架书籍

    Struts2.0框架是Java Web开发中的一款经典MVC(Model-View-Controller)框架,它极大地...通过系统的理论学习和实践操作,可以深入理解Struts2.0的工作原理,提高开发效率,为构建高质量的Java Web应用打下坚实基础。

    struts2.0上传文件

    通过以上步骤,你可以使用Struts2.0实现文件上传功能。在实际开发中,还可以结合其他技术,如Spring、Hibernate等,以构建更复杂的业务流程。记住,始终要关注安全性,以确保应用的稳定性和用户的数据安全。

    struts 2.0 核心jar包

    - `commons-fileupload.jar`和`commons-io.jar`:Apache Commons项目提供的文件上传和IO操作支持。 - `commons-logging.jar`:日志抽象层,允许选择不同的日志实现。 - `servlet-api.jar`和`jsp-api.jar`:...

    最新struts2.0教程

    2. **上传和下载(Uploading and Downloading)**:Struts2.0提供了方便的文件上传和下载支持。通过简单的配置和Action方法,可以轻松处理大文件上传和下载,同时支持多文件上传。 3. **CRUD操作(Create, Read, ...

    Struts2.0上传多文件

    首先,我们需要理解文件上传的基本原理。在Web应用中,文件上传通常涉及到HTML表单、HTTP协议以及服务器端处理。在Struts2中,我们可以使用`&lt;s:file&gt;`标签来创建一个或多个文件输入字段,允许用户选择要上传的文件。...

    struts2.0与spring2.0集成实例

    3. **集成原理**:Struts2.0和Spring2.0的集成主要通过Spring的Action代理(Spring插件)实现。在Struts2的配置文件中,可以声明Action类由Spring管理,这样Struts2在处理请求时会从Spring容器中获取Action实例,...

    struts 2.0源码2

    2. **文件上传与下载**:Struts 2提供内置的支持来处理文件上传和下载。视频18和19分别展示了如何实现文件上传功能,包括处理上传文件的大小限制、文件类型检查等,以及如何安全地实现文件下载,避免常见的安全问题...

    使用ExtJs的插件UploadDialog+struts2.0实现多文件上传

    在本文中,我们将深入探讨如何使用ExtJS的UploadDialog插件与Struts2.0框架相结合,实现一个功能完备的多文件上传功能。这是一项在Web应用开发中常见的需求,对于用户交互性和数据管理有着重要作用。 首先,让我们...

    struts2.0教程(pdf)

    - **文件上传/下载**:Struts 2提供了便捷的文件上传和下载功能。 - **验证机制**:内置了一套完整的验证框架,支持前端和后端的数据验证。 4. **最佳实践** - **模块化开发**:鼓励开发者按照功能划分不同的...

    struts2.0 整理成册

    9. **文件上传与下载**:演示如何在Struts2中处理文件上传和下载,包括文件大小限制、类型检查等。 10. **插件与扩展**:介绍Struts2的一些流行插件,如Tiles、Struts2 Dojo、Struts2 jQuery等,以及如何利用它们...

    struts2.0资料

    这本书可能还会涉及Struts2.0的最新版本更新,以及一些高级特性,如自定义拦截器、异常处理、文件上传下载、Ajax支持等。通过阅读这本书,开发者能够全面理解Struts2.0的体系结构,熟练掌握其使用方法,从而在实际...

    Struts2.0中文教程

    10. **文件上传和下载**:Struts2支持文件上传和下载功能,教程会介绍如何实现文件上传的Action、配置及前端表单设计。 11. ** strut2与Spring集成**:讲解如何将Struts2与Spring框架集成,实现依赖注入,提高代码...

    Struts2.0.rar

    11. **实战案例**:通过实际项目案例,演示如何利用Struts2开发完整的Web应用,包括用户登录注册、CRUD操作、文件上传下载等常见功能。 12. **最佳实践**:分享Struts2开发的最佳实践,包括代码规范、性能优化、...

    Struts 2.0实例

    未上传的视频文件可能包含详细的操作演示和讲解,如如何创建Action、编写配置文件、调试程序等,这些都是理解和掌握Struts 2.0不可或缺的部分。 通过这个实例,学习者可以了解到如何使用Struts 2.0构建一个完整的...

Global site tag (gtag.js) - Google Analytics