利用servlet3.0上传,纯原生上传,不依赖任何第三方包
tomcat7里面自带的servlet3.0.jar,支持很多新特性,例如,annotation配置servlet,上传,异步等等。。。。
如果你的tomcat版本低于7的话,单独在项目中引入servlet3.0.jar的话,有可能会出错,具体没研究过,可能是不兼容吧。所以要使用servlet3.0新特性的话,尽量使用tomcat7
不多说了,贴上代码
@WebServlet(name = "uploadServlet", urlPatterns = "/uploadServlet")
@MultipartConfig
public class ServletUpload extends HttpServlet { private static final long serialVersionUID = 2527441790014487640L; @Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
doPost(request, response);
} @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
Collection<Part> parts = request.getParts();
if (null == parts) {
// 抛出异常
}
for (Part part : parts) {
String header = part.getHeader("content-disposition");
String fileName = getFileName(header);
part.write("d:/" + fileName);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
} } /**
* 获得文件名 fileName-----取得上传文件的后缀+uuid
*
* @param header
* @return
*/
private String getFileName(String header) {
String suffix = header.substring(header.lastIndexOf("."),
header.length() - 1);
String fileName = UUID.randomUUID().toString().replace("-", "");
return fileName + suffix;
}
}
看起来是不是很简单吧,@MultipartConfig标注主要是为了辅助Servlet3.0中HttpServletRequest提供的对上传文件的支持。该标注写在Servlet类的声明之前,一表示该Servlet希望处理的请求时multipart/form-data类型的。另外,该标注还提供了若干属性用于简化对上传文件的处理
@MultipartConfig标注属性
fileSizeThershold int型 是(可选) 描述:当前数据量大于该值时,内容将被写入文件。
location String型 是(可选) 描述:存放生成文件的地址
maxFileSize long型 是(可选) 描述:允许上传的文件最大值,默认为-1,表示没有限制
maxRequestSize long型 是(可选) 描述:针对 multipart/form-data 请求的最大数量,默认为-1,表示没有限制
利用servlet3.0上传,纯原生上传,不依赖任何第三方包的更多相关文章
- servlet3.0获取参数与文件上传代码示例
转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98 package com.igeek.servlet; import ...
- Servlet3.0的注解自定义原生Listener监听器实战
简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战 自定义Listener(常用的监听器 servletContextListener.httpSessionListen ...
- Servlet3.0的注解自定义原生Servlet实战
Servlet3.0的注解自定义原生Servlet实战 讲解:使用 Servlet3.0的注解自定义原生Servlet和Listener 自定义原生Servlet package net.xdclas ...
- 利用MAVEN打包可运行jar包,包括依赖的第三方包
转载自:http://bglmmz.iteye.com/blog/2058914 背景: 另一篇文章说了如何利用IDEA来打包,现在来说说如何利用MAVEN打包 目标:应用本身打成一个jar包,依赖的 ...
- 6.28笔记-servlet3.0注解配置、文件上传、过滤器、监听器
一.servlet3.0注解配置 使用javaEE6.0 支持servlet3.0 value的值就是访问路径 urlPatterns的值也是访问路径 @WebServlet(name="D ...
- 中文乱码问题(使用Servlet3.0新特性实现文件上传——上传文件名中文乱码问题)
问题描述:就是文件传送过来的文件名等是乱码 解决方法:将传送的JSP页面(即含有表单的页面)的页面编码方式改为: <%@ page contentType="text/html; ch ...
- Spring MVC3.2 通过Servlet3.0实现文件上传
Servlet3.0规范增加了对文件上传的原生支持,这里记录一下Spring MVC3通过Servlet3上传文件的实现. 配置文件: applicationContext.xml <!-- s ...
- Servlet3.0的新特性
注意:Servlet3.0的项目一定要使用Tomcat7.0才能看到效果!! 1.新增标注支持 在Servlet3.0的部署描述文件web.xml的顶层标签<web-app>中有一 ...
- [译]servlet3.0与non-blocking服务端推送技术
Non-blocking(NIO)Server Push and Servlet 3 在我的前一篇文章写道如何期待成熟的使用node.js.假定有一个框架,基于该框架,开发者只需要定义协议及相关的ha ...
随机推荐
- iOS--二维码
现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来iOS7自带二维码扫码的教程,也包括扫条形码,足以满足简单的扫码要求,而且避免使用第三方的繁琐. 后期项目中 ...
- 每天一个linux命令(15):tail 命令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...
- How Google TestsSoftware - Part Five
Instead of distinguishingbetween code, integration and system testing, Google uses the language ofsm ...
- PNG使用技巧 PNG的使用技巧
PNG的格式和透明度 这个Fireworks会比较清楚,打开Fireworkd优化面板,可以清楚看到png有3种不同深度的格式:png8.png24.png32. 其中,在优化面板选择png8,可发现 ...
- CSS文本方向
前面的话 一般地,正常网页文本方向都是从上到下,从左到右.实际上,有多种设置文本方向的属性,前面已经详细介绍过text-align,HTML全局属性中有一个"dir"属性就是专门用 ...
- nginx反向代理docker registry报”blob upload unknown"解决办法
问题症状:keepalived+nginx反向代理后端docker registry群集时,使用docker客户机向registry push镜像时出现 "blob upload unkno ...
- Spring MVC 学习总结(三)——请求处理方法Action详解
Spring MVC中每个控制器中可以定义多个请求处理方法,我们把这种请求处理方法简称为Action,每个请求处理方法可以有多个不同的参数,以及一个多种类型的返回结果. 一.Action参数类型 如果 ...
- [Node.js] 基于Socket.IO 的私聊
原文地址:http://www.moye.me/2015/01/02/node_socket-io/ 引子 最近听到这么一个问题:Socket.IO 怎么实现私聊?换个提法:怎么定位到人(端),或者说 ...
- Nutch源码阅读进程3---fetch
走了一遍Inject和Generate,基本了解了nutch在执行爬取前的一些前期预热工作,包括url的过滤.规则化.分值计算以及其与mapreduce的联系紧密性等,自我感觉nutch的整个流程是很 ...
- 可视化工具solo show-----Processing Prefuse show
继上篇<可视化工具solo show>罗列出一些主要基于Java开发的软件.插件之后,又仔细揣摩了下哪些可以为我所用. 一番端详之后,准备挑出其中Processing和Prefuse两位大 ...