`
xfxlch
  • 浏览: 166016 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

纯jsp servlet 实现 upload file功能

    博客分类:
  • Java
 
阅读更多
本篇主要是简单的实现jsp servlet 的上传文件的功能,基于servlet 2.5。
jar依赖:
commons-fileupload/commons-io/servlet-api(commons-fileupload 自动依赖common-io)
pom.xml文件的内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.luchenghao.demo</groupId>
	<artifactId>gridconfig</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<org.springframework.version>4.1.5.RELEASE</org.springframework.version>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>
		
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>
		
	</dependencies>
</project>


form 表单的内容
要点: method必须是post方法,get是不支持文件上传的。
enctype 属性值为:multipart/form-data。
action 的名字可以取了humanable的值就好了。
input的type要设为file,以支持文件类型。
代码如下:
<!DOCTYPE title PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
		<title>File Uploading Form</title>
	</head>
	<h3>File Upload:</h3>
	Select a file to upload: <br/>
	<form action="UploadServlet" method="post" enctype="multipart/form-data">
		<input type="file" name="file" size="50" />
		<br />
		<input type="Submit" value="Upload"/>
	</form>
</html>



为了能把上传的文件保存起来,我们配置一个保存的路径c:\temp\data, 这个路径必须是真是存在,如果不存在就手动去创建该目录(in web.xml)如下:
<context-param> 
		<description>Location to store uploaded file</description> 
		<param-name>file-upload</param-name> 
		<param-value>
         c:\temp\data\
		</param-value> 
	</context-param>


整个web.xml如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
	<context-param> 
		<description>Location to store uploaded file</description> 
		<param-name>file-upload</param-name> 
		<param-value>
         c:\temp\data\
		</param-value> 
	</context-param>

	<servlet>
		<servlet-name>upload</servlet-name>
		<servlet-class>com.statestreetgx.fcm.core.controller.UploadController</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>upload</servlet-name>
		<url-pattern>/UploadServlet</url-pattern>
	</servlet-mapping>
</web-app>





后台的servlet代码如下:
package com.statestreetgx.fcm.core.controller;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * 
 * @author a574539
 */
public class UploadController extends HttpServlet {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -3218211616591116540L;
    private boolean isMultipart;
    private String filePath;
    private int maxFileSize = 50 * 1024;
    private int maxMemSize = 4 * 1024;
    private File file;

    public void init() {
        // Get the file location where it would be stored.
        filePath = getServletContext().getInitParameter("file-upload");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
        // Check that we have a file upload request
        isMultipart = ServletFileUpload.isMultipartContent(request);
        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        if (!isMultipart) {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet upload</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<p>No file uploaded</p>");
            out.println("</body>");
            out.println("</html>");
            return;
        }
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // maximum size that will be stored in memory
        factory.setSizeThreshold(maxMemSize);
        // Location to save data that is larger than maxMemSize.
        factory.setRepository(new File("c:\\temp"));

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        // maximum file size to be uploaded.
        upload.setSizeMax(maxFileSize);

        try {
            // Parse the request to get file items.
            List fileItems = upload.parseRequest(request);

            // Process the uploaded file items
            Iterator i = fileItems.iterator();

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet upload</title>");
            out.println("</head>");
            out.println("<body>");
            while (i.hasNext()) {
                FileItem fi = (FileItem) i.next();
                if (!fi.isFormField()) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    String contentType = fi.getContentType();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                    // Write the file
                    if (fileName.lastIndexOf("\\") >= 0) {
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\")));
                    } else {
                        file = new File(filePath + fileName.substring(fileName.lastIndexOf("\\") + 1));
                    }
                    fi.write(file);
                    out.println("Uploaded Filename: " + fileName + "<br>");
                }
            }
            out.println("</body>");
            out.println("</html>");
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {

        throw new ServletException("GET method used with " + getClass().getName() + ": POST method required.");
    }

//    @RequestMapping(value = "upload")
//    @ResponseBody
//    public void upload() {
//        System.out.println("hello");
//    }
}


参考链接:http://www.tutorialspoint.com/servlets/servlets-file-uploading.htm

--EOF--
分享到:
评论

相关推荐

    jsp+servlet实现文件上传下载

    public class ServletUpload extends HttpServlet { private ServletConfig config; @Override public void init(ServletConfig config) throws ServletException { this.config = config; } @Override ...

    JSP_File_Upload.rar_JSP_File_Upload_jsp file_jsp-file_upload se

    一旦文件被上传,我们可以在JSP或对应的Servlet中访问它们。`jspsmartupload`提供了许多方法来获取文件信息,例如: ```jsp File file = smart.getFile("fileToUpload"); String fileName = file.getFileName(); ...

    用JSPServlet实现文件上传

    在实现文件上传功能时,除了基础的功能实现外,还需要考虑以下几点优化与安全措施: 1. **限制文件大小与类型**:通过配置限制上传文件的大小和类型,防止恶意上传大文件或非预期格式的文件。 2. **文件名冲突处理...

    jsp servlet 上传例子 基于 jspsmartupload

    本教程将详细讲解如何使用 `JSP` 和 `Servlet` 结合 `jspsmartupload` 库来实现文件上传功能。 首先,我们需要了解`jspsmartupload`库。`jspsmartupload` 是一个基于Java的开源项目,专门设计用于在`JSP`页面上处理...

    servlet jsp javabean 实现的文件上传

    综上所述,Servlet、JSP和JavaBean协同工作,实现了用户友好的文件上传功能。Servlet处理HTTP请求,JSP提供用户界面,JavaBean封装业务逻辑,共同构建了一个安全、可控的文件上传系统。通过合理的代码组织和优化,...

    JSP/servlet实现上传下载

    本知识点主要探讨如何使用JSP和Servlet来实现文件的上传与下载功能,这是Web应用中常见的需求。 首先,我们要理解JSP和Servlet的角色。JSP主要用于展示视图,而Servlet则处理业务逻辑和控制流程。在上传下载场景中...

    jsp+servlet+mysql实现文件上传功能

    在本文中,我们将深入探讨如何使用JSP、Servlet和MySQL实现文件上传功能,特别是基于Servlet 3.0的实现方式。文件上传是Web应用程序中常见的需求,它允许用户上传文件到服务器并存储在数据库中。这里我们将讲解关键...

    jsp结合servlet实现文件上传

    本知识点主要聚焦于如何利用JSP和Servlet实现文件上传功能,这是一个在Web应用中非常实用的功能,例如用户在网站上提交简历、上传图片等。 首先,我们需要了解文件上传的基本原理。HTTP协议本身不支持文件上传,但...

    JSP_fileupload.rar_fileupload jsp_jsp file upload_jsp fileupload

    在Java Web环境中,JSP(JavaServer Pages)与Servlet结合使用,能够实现这样的功能。本教程将详细介绍如何使用JSP和潇湘组件来实现一个简单的文件上传系统。 首先,潇湘组件是Java Web开发中的一个开源工具,提供...

    jsp--upload.rar_jsp 文件_upload.jsp _文件上传

    在Java Web开发中,JSP(JavaServer...通过查看和学习这个文件,你可以了解如何在没有第三方库的情况下,用基本的JSP和Servlet实现文件上传功能。这将有助于你理解Web开发中的文件处理原理,提高你的Java Web开发技能。

    servlet+jsp文件上传示例

    以下是使用Servlet和JSP实现文件上传的基本步骤: 1. **配置依赖**:在项目中添加Apache Commons FileUpload和IO库。这两个库可以通过Maven或Gradle等构建工具导入,或者手动下载jar文件并添加到项目的类路径中。 ...

    jsp servlet 上传文件

    本篇将详细讲解如何使用`JSP`和`Servlet`合作实现文件上传功能,特别是针对图片文件的上传。 一、JSP简介 JSP是一种基于Java的服务器端脚本语言,它允许开发者在HTML或XML文档中嵌入Java代码,用于创建动态网页。...

    用JSP实现的上传下载功能

    本篇主要讨论如何利用JSP实现上传和下载功能。 上传功能在Web应用中常见于用户需要提交文件至服务器的情况,例如提交简历、上传图片等。在JSP中,我们可以使用Servlet API来处理文件上传。首先,需要在HTML表单中...

    纯jsp实现文件上传(页面无刷新,表单数据可连续填写最后上传文件)

    本教程将详细解析如何使用纯JSP技术实现一个不刷新页面、允许用户连续填写表单数据并最终上传文件的功能。这一特性对于提高用户体验至关重要,因为它使得用户可以在同一页面上完成所有操作,无需频繁跳转或刷新页面...

    jquery jsp servlet 上传

    总的来说,“jquery jsp servlet 上传”这个案例涵盖了前端交互、文件处理、服务器端逻辑等多个关键环节,是学习Web开发中文件上传功能的宝贵资源。通过实践这个案例,初学者能更好地理解前后端协作的机制,并为后续...

    jsp与servlet 上传文件 javaBean上传文件

    在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种常见的技术,它们常常用于构建动态网页。在处理文件上传需求时,JSP通常作为前端界面,而Servlet则负责后端逻辑处理。本篇文章将深入探讨如何使用JSP与...

    jsp 上传图片并保存到数据库里的servlet代码和jsp代码

    本主题将深入探讨如何使用JSP和Servlet来实现一个图片上传功能,并将图片数据存储到Oracle数据库中。 首先,我们需要理解JSP和Servlet的角色。JSP是用于创建动态内容的视图层技术,而Servlet则是Java编写的应用程序...

    jspsmartupload.jar文件上传所需要的包

    &lt;%@ page import="com.jspsmart.upload.*" %&gt; SmartUpload su = new SmartUpload(); su.initialize(request, response); su.setMaxFileSize(1024*1024); // 设置最大文件大小 su上传(); if(!su.isCancelled())...

    jsp实现图片上传功能

    总之,使用JSP实现图片上传功能涉及前端表单设计、后端Servlet处理、文件存储以及错误处理等多个环节。通过学习和实践,我们可以创建出稳定且安全的图片上传功能,提升Web应用的用户体验。在实际项目中,还可能需要...

    jspupload文件上传

    **JSPUpload 文件上传详解** ...总之,JSPUpload涉及到前端表单设计、后端Servlet处理、文件存储策略等多个环节,需要综合运用多种技术来实现。了解这些知识点有助于构建稳定、安全且用户体验良好的文件上传功能。

Global site tag (gtag.js) - Google Analytics