- 浏览: 937357 次
- 性别:
- 来自: 成都
文章分类
最新评论
Servlet3.0还有一个改变是改进了部分API,这种改进很好的简化了的了JAVA WEB的开发,其中一个改进就是HttpServletRequest增加了进文件上传的支持。
HttpServletRequest提供了如下两个方法来处理文件上传
1、Part getPart(String name) :根据文件名来获取文件上传域;
2、Collection<Part> getParts():获取所有的文件上传域;
每个Part对象对应一个文件上传域,该对象提供了大量的方法来访问上传文件的文件类型、大小、输入流等,并提供一个write(String file)方法将文件文件写入服务器磁盘
上传文件一定要为表单设置enctype属性为multipart/form-data:表示以二进制流的方式处理表单
文件上传页面upload.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html 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=UTF-8"> <title>Insert title here</title> </head> <body> <form action="upload" method="post" enctype="multipart/form-data"> 文件名:<input type="text" id="name" name="name"/><br/> 请选择文件:<input type="file" name="file"><br/> <input type="submit" value="上传"/> </form> </body> </html>
UploadServlet.java
使用Servlet3.0特性,使用注解@WebServlet与@MultipartConfig(处理文件上传)
package aniyo.upload.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Collection; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; /** * Servlet 3.0增加对文件上传的支持 * @author aniyo * blog:http://aniyo.iteye.com * */ @WebServlet(name="upload",urlPatterns={"/upload"}) @MultipartConfig public class UploadServlet extends HttpServlet{ /* (non-Javadoc) * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); PrintWriter out = response.getWriter(); //fileName用于测试在界面上自己随便输入的一个名字,自己可以根据时间或其他规则来命名 String fileName = request.getParameter("name"); //获取文件上传域 Part part = request.getPart("file"); out.println("上传文件的类型为:"+part.getContentType()+"<br/>"); out.println("上传文件的大小为:"+part.getSize()); //获取该文件的上传域 Collection<String> headerNames = part.getHeaderNames(); for(String headerName : headerNames){ out.println(headerName+"--->"+part.getHeader(headerName)+"<br/>"); } //将上传的文件写入服务器 part.write(getServletContext().getRealPath("/uploadFiles"+File.separator+fileName)); } /* (non-Javadoc) * @see javax.servlet.GenericServlet#destroy() */ @Override public void destroy() { super.destroy(); } /* (non-Javadoc) * @see javax.servlet.GenericServlet#init() */ @Override public void init() throws ServletException { super.init(); } }
发表评论
-
object references an unsaved transient instance
2017-08-08 14:38 1795org.hibernate.TransientObject ... -
Jave获取当前日期的上一个月最后一天或者下一个月最后一天
2017-02-08 09:58 1322public final static Date addMo ... -
valid date
2017-02-04 16:37 955public final static boolea ... -
Row was updated or deleted by another transaction (or unsaved-value mapping was
2017-02-04 11:41 2606org.hibernate.StaleObjectState ... -
hibernate hql return object or list 指定类型
2017-01-25 17:58 902java.lang.ClassCastException: ... -
解决Maven/Ant中OutOfMemory错误
2017-01-12 11:06 866当Maven项目很大,或者你运行诸如 mvn site 这样 ... -
Row was updated or deleted by another transaction (or unsaved-value mapping was
2016-03-31 16:15 1119Row was updated or deleted by ... -
identifier of an instance of ……was alter from 2 to null
2016-03-29 09:32 1652Undefined Error: org.hibernate ... -
Caused by: org.hibernate.AssertionFailure: collection owner not associated with
2016-01-13 16:49 1499Caused by: org.hibernate.Asser ... -
遍历Set集合remove掉不需要的数据,List不能在遍历的时候remove
2015-12-29 15:33 2519for(Iterator<IAddress> ... -
oracle查询约束
2015-12-28 14:45 1387查询约束类型 select distinct constr ... -
should be mapped with insert="false" update="false"
2015-04-22 16:23 1381Caused by: org.hibernate.Mappi ... -
org.hibernate.PropertyAccessException: IllegalArgumentException occurred
2015-04-16 17:42 959org.hibernate.PropertyAccessEx ... -
no persistent classes found for query class
2015-04-13 16:54 1696no persistent classes found fo ... -
hql unexpected token: exchange
2015-03-13 10:12 1336ORB.thread.pool : 0line 1:1 ... -
从一个英文字符串中找出每个单词出现的频率
2015-03-06 14:56 1491import java.util.*; publi ... -
Caused by: java.io.IOException: Mismatched serialization UIDs
2015-02-04 10:51 1421Caused by: java.io.IOException ... -
Hibernate :Found shared references to a collection
2014-12-16 11:13 1105项目中在session.flush(); 抛了异常 遇到这 ... -
HibernateException: Illegal attempt to associate a collection with two open sess
2014-12-09 13:56 746项目中遇到这个 HibernateException: Il ... -
获取Float整型数据如何去掉小数点后面的小数点及0
2014-11-12 10:56 3675float a = 12345; System.out.p ...
相关推荐
4. **流处理**:Servlet 3.0的文件上传接口支持流处理,这意味着文件内容可以直接写入到输出流,而无需先全部加载到内存,这对于处理大文件非常有利。这降低了内存消耗,提高了系统的稳定性和性能。 5. **异步处理*...
在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...
6. **多文件上传**:通过`Part`接口,Servlet 3.0支持多文件上传,处理大文件上传时可以设置更灵活的限制和进度反馈。 7. **WebSocket支持**:Servlet 3.0规范定义了WebSocket API,为基于TCP连接的双向通信提供了...
综上所述,Servlet 3.0简化了Java Web中文件上传的实现,通过`Part` API,我们可以方便地处理Multipart请求,实现安全、高效的文件上传功能。在实际应用中,结合最佳实践和安全策略,可以为用户提供更好的服务。
Servlet3.0引入了注解配置,允许开发者无需在web.xml文件中进行繁琐的配置,可以直接在Servlet类上使用`@WebServlet`注解来声明和映射Servlet。例如: ```java @WebServlet("/hello") public class ...
* servlet3.0的文件上传 * @date:2012-5-21 *在创建项目的时候首先添加Tomcat7.x的支持,然后把apache-tomcat-7.0.27\conf\web.xml拷贝到项目WEB-INF目录下 *把之前的web.xml覆盖.. 配置留下 <?xml version...
首先,让我们关注Servlet3.0对文件上传的支持。在Servlet2.5及以前的版本中,文件上传通常需要依赖第三方库如Apache Commons FileUpload,因为标准的Servlet API并未提供内置的文件上传机制。然而,Servlet3.0引入了...
Servlet3.0提供了对文件上传的原生支持,开发者可以直接使用Servlet3.0提供的API实现文件上传功能,不需要借助任何第三方上传组件。在这里,我们将介绍使用Servlet3.0实现文件上传的步骤和代码实现。 使用Servlet...
- Servlet 3.0引入了对注解的全面支持,允许开发者在类或方法级别声明Servlet、过滤器和监听器,而无需在web.xml配置文件中进行繁琐的配置。例如,可以通过`@WebServlet`、`@WebFilter`和`@WebListener`注解来声明...
7. **MIME多部分解析**:Servlet 3.0引入了`Part`接口,用于处理MIME多部分请求,这在处理上传文件时非常有用。 8. **安全增强**:添加了新的安全相关API,如`HttpServletRequest.isUserInRole()`和`...
总结来说,Servlet3.0的新特性带来了更简洁的配置、更高效的异步处理、更灵活的过滤器和监听器注册,以及对文件上传的内置支持。这些改进都极大地推动了Java Web应用的开发效率和性能,使得开发人员能够更加专注于...
Servlet3.0 实现文件上传的方法是通过利用其新特性,包括注解支持和HttpServletRequest对象对文件上传的内置处理,从而简化了以往依赖第三方库如Apache Commons FileUpload的复杂过程。在Servlet 3.0中,我们可以...
在Servlet 3.0中,Servlet容器支持异步处理,这意味着Servlet可以在不阻塞线程的情况下执行长时间运行的操作。通过调用`HttpServletRequest.startAsync()`方法,开发者可以开启异步处理模式,这样主线程会立即返回...
在 Servlet 3.0 中,我们可以使用改进的文件上传 API 来上传文件。这使得文件上传变得更加简单和高效。 五、非阻塞式 IO 读取流 在 Servlet 3.0 中,我们可以使用非阻塞式 IO 读取流来提高 Web 应用性能。非阻塞式...
Servlet3.0引入了对注解的强大支持,开发者可以使用`@WebServlet`、`@WebFilter`和`@WebListener`等注解来声明Servlet、过滤器和监听器,无需再在web.xml配置文件中进行繁琐的手动配置。这使得代码更加简洁,也更...
Servlet 3.0引入了对注解的广泛支持,使得开发者不再需要依赖web.xml来配置Servlet、Filter和Listener。例如,可以直接在类上使用`@WebServlet`, `@WebFilter`, 和 `@WebListener` 注解进行声明,简化了部署描述符...
在本文中,我们将深入探讨如何使用JSP、Servlet和MySQL实现文件上传功能,特别是基于Servlet 3.0的实现方式。文件上传是Web应用程序中常见的需求,它允许用户上传文件到服务器并存储在数据库中。这里我们将讲解关键...
总之,Servlet文件上传和下载是Web开发中的常见任务,理解并掌握其原理和实践方法对开发者来说至关重要。通过Servlet 3.0的新特性,我们可以更简洁地处理文件交互,同时配合前端库如AjaxFileUpload,提供流畅的用户...
后端的Servlet3.0引入了非阻塞I/O和异步处理,使得文件上传更加高效。当Servlet接收到请求后,可以通过HttpServletRequest对象的getPart方法来获取上传的文件。需要注意的是,Servlet容器必须支持Servlet 3.0及以上...
但是,在Servlet3.0中提供了对文件上传的原生支持,我们不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能。 二、使用Servlet3.0提供的API实现文件上传 1.1 编写上传页面 在实现...