`

文件上传(JSP + Servlet)

阅读更多

一、JSP + Servlet 实现简单的文件上传:

1、使用的jar包:commmons-fileupload.jar

2、Jsp页面:enctype="multipart/form-data"

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
	<base href="<%=basePath%>">
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
	<script type="text/javascript">
    	function validator(){
           var file = document.getElementById("file").value;
           if(file == null || file == ""){
                alert('请选择需要上传的文件');
                return false;
           }
           return true;
		}
	</script>
</head>
<body>
	<form method="post" name="upload" enctype="multipart/form-data" action="upload" onsubmit="return validator();">
		<input id="file" name="file" type="file" value="请选择上传文件"/>
		<input type="submit" value="上传" />
	</form>
</body>
</html>

2、Servlet实现:

public class Upload extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, 
            HttpServletResponse response) {
        String tempDirectory = "d:\\temp\\"; // 临时文件夹:上传成功之前存放缓存的位置
        String fileDirectory = "d:\\uploadFiles\\"; // 文件存放目录
        try {
            // 将未完全上传成功的信息放到指定的临时文件夹
            File repositoryFile = new File(tempDirectory);
            int sizeThreshold = 1024 * 64; // 写满该大小的缓存后,存入硬盘中。
            FileItemFactory factory = new DiskFileItemFactory(sizeThreshold,  
                    repositoryFile);
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setSizeMax(500*1024*1024); //set every upload file size <500Mb
            List items = upload.parseRequest(request); // 这里开始执行上传
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                File uploadedFile = new File(fileDirectory + item.getName());
                item.write(uploadedFile);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3、web.xml配置:

<servlet>
	<servlet-name>fileUpload</servlet-name>
	<servlet-class>test.Upload</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>fileUpload</servlet-name>
	<url-pattern>/upload</url-pattern>
</servlet-mapping>

 

==================================================================================================

 

二、JSP + Struts1实现文件上传:

1、Form表单:

 

public class UploadFileForm extends ActionForm{
	FormFile uploadFile;
	public FormFile getUploadFile() {
		return uploadFile;
	}
	public void setFormFile(FormFile uploadFile) {
		this.uploadFile = uploadFile;
	}
}

2、 Action:

 

public class UploadAction extends Action{
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		UploadFileForm uploadFileForm = (UploadFileForm) form;
		FormFile file = uploadFileForm.getUploadFile();
		String fileName = file.getFileName();
		InputStream is = file.getInputStream();
		OutputStream os = new FileOutputStream("D:\\" + fileName);
		while (is.read() != -1) {
			os.write(is.read());
		}
		return super.execute(mapping, form, request, response);
	}
}

3、Jsp:file的name属性与Form表单中FormFile名称对应。

4、web.xml:ActionServelet的配置

5、struts-config.xml:action配置

 

==================================================================================================


三、JSP + Struts2实现文件上传

Action实现:

 

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

	public File getUpload() {
		return upload;
	}

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

	public String getUploadFileName() {
		return uploadFileName;
	}

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

	public String upload() throws IOException {
		InputStream is = new FileInputStream(upload);
		OutputStream os = new FileOutputStream("D:\\" + uploadFileName);
		while (is.read() != -1) {
			os.write(is.read());
		}
	}
}

          

        关于文件上传中文乱码的问题:Struts从request里利用BeanUtils.populate()把值赋给form的时候已经是乱码的,所以赋值之前要进行编码的转换。可以通过写过滤器进行编码的设置。

 

 

 

 

 

分享到:
评论

相关推荐

    文件上传 JSP + Servlet

    `JSP+Servlet+JavaBean文件上传`可能是一个包含所有源代码和资源的子目录,其中包括JSP页面、Servlet类和可能用到的JavaBean(如果用于处理业务逻辑或数据持久化)。JavaBean通常用于封装数据,使代码结构更清晰。 ...

    swfupload多文件上传jsp+servlet(SSH可用)

    本项目结合了jsp和servlet技术,同时也提供了与SSH框架的集成,使得文件上传功能可以在各种Java Web项目中无缝应用。 首先,我们要了解SwfUpload的基本原理。SwfUpload是一个基于Flash的小型控件,用户可以通过它在...

    swfupload多文件上传jsp+servlet

    "swfupload多文件上传jsp+servlet" 这个标题指的是一个使用SWFUpload技术实现的多文件上传功能,该功能结合了Java服务器端的JSP(JavaServer Pages)和Servlet技术。SWFUpload是一个开源的Flash组件,它允许用户在不...

    jsp+servlet+javabean+ajax MVC模式,增删改查,数据分页显示

    总结来说,这个项目展示了如何使用`JSP+Servlet+JavaBean+Ajax`实现基于MVC模式的Web应用,包括基本的数据操作、分页显示以及文件上传功能。对于初学者,这样的实践能够帮助理解Web开发的基本流程和关键组件,同时...

    基于jsp+servlet的博客

    Servlet接收上传文件,将其保存到服务器的指定目录,并将路径信息存入数据库,以便在JSP页面中展示。 - **权限管理**:通过Servlet实现用户角色划分,例如普通用户只能阅读和评论,而管理员可以发布、编辑和删除文章...

    一个简单的JSP+Servlet图片上传例子

    这个“一个简单的JSP+Servlet图片上传例子”是一个基础教程,旨在帮助初学者理解如何通过这两种技术实现用户界面与服务器端的交互,特别是处理文件上传的功能。 首先,JSP是Java的一种视图技术,它允许开发者在HTML...

    jsp+servlet实现图片上传

    文件上传通常涉及到表单(`&lt;form&gt;`)元素,尤其是`&lt;input type="file"&gt;`字段,用于让用户选择本地文件。当用户提交表单时,文件会被封装到HTTP请求中发送到服务器。 3. **Multipart解析**: 由于文件内容不能直接...

    jsp+servlet 图片上传

    实践中,还可能涉及到安全性优化,如使用MIME类型检查防止恶意文件上传,使用CDN存储图片以减轻服务器压力,以及使用session或cookie进行用户验证等。总的来说,理解和熟练掌握`JSP`和`Servlet`的配合使用,对于开发...

    jsp+servlet实现大型文件下载

    本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...

    jsp+servlet 品红项目 源代码

    在这个项目中,Servlet可能实现了文件上传的逻辑,处理客户端上传的文件,将其存储在服务器的特定位置。同时,提供了一个下载接口,允许用户根据URL下载所需的文件。这部分可能涉及到文件流的处理,错误处理,以及...

    基于jsp+javabean+servlet模式的仓库管理系统报告

    部署时,将项目打包为WAR文件,上传到支持Java Web应用的服务器(如Tomcat),即可运行。 总结,基于jsp+javabean+servlet模式的仓库管理系统利用了Java强大的面向对象特性,实现了灵活、可扩展的Web应用。通过理解...

    纯jsp+servlet版的多文件上传与下载

    本项目以"纯jsp+servlet版的多文件上传与下载"为主题,采用MVC(Model-View-Controller)模式进行设计,这是一套广泛应用于Web开发的经典架构。下面将详细介绍这个项目中的关键知识点。 1. **MVC模式**: MVC模式...

    定点定时长音乐播放系统,带进度条的文件批量上传(jquery+plupload+jsp+servlet)

    定点定时长音乐播放系统,带进度条的文件批量上传(jquery+plupload+jsp+servlet),该系统没有使用数据库,不需要过多的配置就可以使用,在项目中有一个文档,说明该系统的使用方法与注意事项。

    基于jsp+servlet+service+DAO的在线相册系统

    采用MVC模式,在jsp+servlet+service+DAO架构的基础上,实现了互联网上网络相册的绝大部分功能,如用户管理,相片分类,相册管理,相片的评论管理,上传及删除相片文件等。 附加java源代码

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    与JSP不同的是,Servlet更偏向于逻辑控制和业务处理,通常用于处理表单提交的数据、数据库连接、文件上传下载等操作。Java的Servlet API提供了一系列的接口和类,使得开发者可以专注于业务逻辑的实现。 Ajax...

    基于JSP+Servlet的租赁系统(毕业设计)源代码

    6. **文件上传与下载**:租赁系统可能会涉及租赁物品图片的上传,或者合同文件的下载,这就需要处理文件流,确保文件的安全传输和存储。 7. **异常处理**:良好的异常处理机制可以确保系统在遇到错误时能够给出适当...

    JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao、service、servlet 这三层是主要的结构,类似 MVC ...

    在线音乐jsp+servlet+javabean

    【在线音乐jsp+servlet+javabean】项目是一个基于Java技术栈的小型Web应用程序,主要应用于音乐播放平台的开发。这个项目使用了经典的MVC(Model-View-Controller)架构模式,其中JSP(JavaServer Pages)作为视图层...

Global site tag (gtag.js) - Google Analytics