Servlet3.0 multipart 文件上传技术
- publicclassWebInitializerimplementsWebApplicationInitializer {
- privatestaticfinal Logger logger = LoggerFactory.getLogger(WebInitializer.class);
- @Override
- publicvoidonStartup(javax.servlet.ServletContext servletContext) throws ServletException {
- logger.info("begin init web application.");
- //配置Spring
- AnnotationConfigWebApplicationContext springContext = new AnnotationConfigWebApplicationContext();
- springContext.register(SpringConfig.class);
- //添加linstener
- servletContext.addListener(new ContextLoaderListener(springContext));
- //添加servlet
- ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
- "dispatcher", new DispatcherServlet(springContext));
- dispatcher.setLoadOnStartup(1);
- dispatcher.addMapping("/");
- //添加filter
- LoggerFilter loggerFilter = new LoggerFilter();
- FilterRegistration.Dynamic logFilterRegistration=container.addFilter("requestResponseLogFilter", loggerFilter);
- logFilterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.ASYNC), false, "/*");
- logger.info("init web application success.");
- }
- }
- @ConfigurationpublicclassSpringConfig {
- @Bean(name = "exampleBean")
- public ExampleBean getExampleBean() {
- returnnew ExampleBean();
- }
- }
- @ComponentScan(basePackages = {"com.example.service","com.example.dao"})
- @Configuration@PropertySource("classpath:config.properties")@ComponentScan(basePackages = {"com.example.service","com.example.dao"})publicclassSpringConfig {
- @Autowired
- private Environment env;
- @Bean(name = "mysqlDataSource")
- public DataSource mysqlDataSource() {
- ProxoolDataSource dataSource = new ProxoolDataSource();
- dataSource.setDriver(env.getProperty("ds.driver.classname"));
- dataSource.setDriverUrl(env.getProperty("ds.url"));
- dataSource.setUser(env.getProperty("ds.username"));
- dataSource.setPassword(env.getProperty("ds.password"));
- dataSource.setPrototypeCount(env.getProperty("proxool.prototype", Integer.class));
- dataSource.setMinimumConnectionCount(env.getProperty("proxool.minimum", Integer.class));
- dataSource.setMaximumConnectionCount(env.getProperty("proxool.maximum", Integer.class));
- dataSource.setSimultaneousBuildThrottle(env.getProperty("proxool.simultaneous", Integer.class));
- dataSource.setTestBeforeUse(true);
- dataSource.setHouseKeepingTestSql(env.getProperty("proxool.testSql"));
- return dataSource;
- }
- }


- 需要添加MultipartConfig注解
- 从request对象中获取Part文件对象
| 属性名 | 类型 | 是否可选 | 描述 | |
| fileSizeThreshold | int | 是 | 当数据量大于该值时,内容将被写入文件。 | |
| location | String | 是 | 存放生成的文件地址。 | |
| maxFileSize | long | 是 | 允许上传的文件最大值。默认值为 -1,表示没有限制。 | |
| maxRequestSize | long | 是 | 针对该 multipart/form-data 请求的最大数量,默认值为 -1,表示没有限制。 | |
- 若是上传一个文件,仅仅需要设置maxFileSize属性即可。
- 上传多个文件,可能需要设置maxRequestSize属性,设定一次上传数据的最大量。
- 上传过程中无论是单个文件超过maxFileSize值,或者上传总的数据量大于maxRequestSize值都会抛出IllegalStateException异常;
- location属性,既是保存路径(在写入的时候,可以忽略路径设定),又是上传过程中临时文件的保存路径,一旦执行Part.write方法之后,临时文件将被自动清除。
- 但Servlet 3.0规范同时也说明,不提供获取上传文件名的方法,尽管我们可以通过part.getHeader("content-disposition")方法间接获取得到。
- 如何读取MultipartConfig注解属性值,API没有提供直接读取的方法,只能手动获取。
Servlet3.0 multipart 文件上传技术的更多相关文章
- Servlet3.0学习总结——基于Servlet3.0的文件上传
Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...
- Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...
- java-基于Servlet3.0的文件上传
Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet3.0中使用request.getParts()获取上传文件
- servlet3.0的文件上传代码配置怎么写
之前学习过xml配置servlet3.0的文件上传,但是变成code方式一直不知道怎么弄,相比较起来apache的文件上传配置和xml倒是没什么太大区别. 直接上代码:无需依赖,只要一个方法就好了cu ...
- Spring MVC3.2 通过Servlet3.0实现文件上传
Servlet3.0规范增加了对文件上传的原生支持,这里记录一下Spring MVC3通过Servlet3上传文件的实现. 配置文件: applicationContext.xml <!-- s ...
- Servlet3.0的文件上传功能
在Servlet3.0之前,文件上传需要借助于第三方插件,在Servlet3.0之后,Servlet本身开始支持文件上传功能. 获取上传的文件可以通过HTTPServletRequest的getPar ...
- phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)
phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一.漏洞描述 PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞 ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
随机推荐
- tmux分屏幕
1. tmux a -t fly 连接上tmux 2. 左右分屏幕,ctrl+a ,再按% 上下分屏: ctrl+a, 再按“ 切换屏幕: ctrl+a, 再按o 关闭终端: ctrl+a, 再 ...
- Linux中使用sendmail发送邮件,指定任意邮件发送人
一.使用任意发件人发送邮件 echo .com -s .com 其中s表示主题.
- SSL介绍(Secure socket Layer & Security Socket Layer)
一个应用程序的安全需求在很大程度上依赖于将如何使用该应用程序和该应用程序将要保护什么.不过,用现有技术实现强大的. 一般用途的安全通常是可能的.认证就是一个很好的示例. 当顾客想从 Web 站点购买某 ...
- SharePoint Farm 3-Tier拓扑结构的实施解决方案
难得的假期,难得有时间来梳理知识. 我写过很多关于SharePoint的安装和配置,有利用PowerShell的,也有图形安装界面的. 也演示了怎样创建一个双层的SharePoint Farm,怎样利 ...
- IT? 挨踢
中国的IT,是最憋屈的IT. 他们掌握着正常人看不懂的英文+字母+标点符号组成的各类代码语言 他们像作者一样从无到有,从空白的白纸上敲出上千上万条华丽的计算机语言 但是他们承受着正常人的鄙视: 我的需 ...
- Roller5.0.3安装配置部署 step by step
一.下载roller 下载地址:http://roller.apache.org/downloads/downloads.html下载下来之后,解压包含两部份doc.webapps 二.准备环境 1. ...
- 模仿jQuery的ajax的封装
/* * 我们使用了ajax 的xmlHttpRequest 跟服务器进行交互. * * 交互了有四个基本步骤 * 1:创建对象 * 2:建立连接 * 3:发送请求 * 4:接收数据 * * 这些操作 ...
- Goldengate OGG常见问题与错误列表
Goldengate OGG常见问题与错误列表 以下列出了OGG一些常见的问题与错误及其解答: Note: 966211.1 How To Resync A Single Table With ...
- js计算字符串的字节数和字符串与二进制的相互转化
一.js计算字符串的字节数方法: //blob获取字符串的字节 var debug = "好的"; var blob = new Blob([debug],{type : 'tex ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-3 底层驱动之液晶显示
源视频包下载地址: 链接:http://pan.baidu.com/s/1pKSUU2v 密码:4zme 银杏科技优酷视频发布区: http://i.youku.com/gingko8