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,表示没有限制

最新文章

  1. H5新特性websocket
  2. NYOJ之Binary String Matching
  3. 【iHMI43 4.3寸液晶模块】demo例程(版本1.02)发布
  4. API文档的阅读
  5. 如何通过session控制单点登录
  6. Spring分布式事务实现(适用于spring-tx 2.5)
  7. 简约的返回顶部效果(jQuery)
  8. 网络流相关(拓扑)CodeForces 269C:Flawed Flow
  9. 浅谈多核CPU、多线程、多进程
  10. XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法(转)
  11. hdu_5775_Bubble Sort(树状数组)
  12. SQL 高效运行注意事项(二)
  13. mybatis-generator自动生成代码插件
  14. BZOJ2655calc
  15. mybatis08--关联查询多对一
  16. reactjs中使用高德地图计算两个经纬度之间的距离
  17. linux下配置mysql 与错误解决
  18. FileZilla连接腾讯云Centos7
  19. 大数据新手之路四:联合使用Flume和Kafka
  20. 代码basic讲解

热门文章

  1. HTML表单入门基础
  2. Atiti &#160;attilax主要成果与解决方案与案例rsm版
  3. Atitit.软件与编程语言中的锁机制原理attilax总结
  4. piap.windows io 监测attilax总结
  5. ASP.NET Web API 2框架揭秘
  6. iOS中app启动闪退的原因
  7. localStorage使用
  8. Python下划线与命名规范
  9. 快速入门系列--MVC--02路由
  10. C#对称加密(AES加密)每次生成的密文结果不同思路代码分享