文档章节

mint mvc文件上传功能——使用篇

水牛叔叔
 水牛叔叔
发布于 2014/10/19 22:32
字数 779
阅读 247
收藏 0

为了不打击大家的积极性,暂时只着重讲用法,原理方面暂时不讲太多。

配置web.xml

文件上传需要用到servlet3的异步处理功能。需要在web.xml配置文件中加入异步支持声明(注释处):

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd"
         version="2.4">
         
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>mint.mvc.core.ServiceServlet</servlet-class>
        
        <!-- 开启servlet3.0的异步处理功能 -->
        <async-supported>true</async-supported>
        
        <init-param>
        <param-name>actionPackages</param-name>
            <param-value>demo;</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
	
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

编写上传文件的action

文件上传的action:

package demo;

import mint.mvc.annotation.BaseMapping;
import mint.mvc.annotation.Mapping;
import mint.mvc.core.upload.MultipartConfig;
import mint.mvc.core.upload.MultipartParameter;

@BaseMapping("/upload")
public class UploadAction {
	@MultipartConfig(attributeName = "params", limitSize = 1024*1024*1024, tempFilePath = "D:/upload")
	@Mapping(urls="/index", method="post")
	public String index(MultipartParameter[] params, String author){
		String fileParam = "";
		String commonParam = "";
		
		if(params != null){
			for(MultipartParameter part : params){
				if(part.isFile()){
					fileParam += part.getTempFile().getAbsolutePath()+"<br/>";
				} else {
					commonParam += (part.getName()+":"+part.getParameterValue())+"<br/>";
				}
			}
		}
		System.out.println(author);
		return fileParam+commonParam;
	}
}

处理文件上传请求的action方法需要添加MultipartConfig注解,MultipartConfig有三个参数:

  1. attributeName:为了在action内有办法获取到上传的文件,mint mvc把这些上传的文件都封装在一个数组里,这个数组用request对象的setAttribute方法,以指定的“attributeName”保存到request对象里。最后,可以在action内,用request.getAttribute()方法获得该数组。在mint mvc的参数博文中说过,mint mvc会自动的用HttpServletRequest的属性初始化action参数,所以只要在action上声明一个以attributeName命名,类型为MultipartParameter[]的参数,就可以轻松得到封装有文件信息的数组
  2. limitSize:限制每个上传文件(包括非文件参数)的大小,单位是B。如果上传过程中,发现有文件或参数超过此限制,上传过程将会终止
  3. tempFilePath:临时文件的保存路径。临时文件的命名格式是:UUID_真实文件名

mint mvc的上传功能除了可以接受文件外,还可以接收普通字段。普通字段会封装在request中,可以通过request的getParameters方法获取。

文件上传演示

文件上传的页面:

<!DOCTYPE html>
<meta charset="UTF-8">
<form action="upload" enctype="multipart/form-data" method="post" target="demo_iframe">
	价格:<input type="text" name="price" value="50"/><br/>
	作者:<input type="text" name="author" value="琼羽"/><br/>
	书籍:<input type="file" name="books"/><br/>
	书籍:<input type="file" name="books"/><br/>
	书籍:<input type="file" name="books"/><br/>
	<button type="submit">上传</button>
</form>

选择文件:

客户端返回结果:


上传成功的文件:

本demo下载地址:http://git.oschina.net/895925636/mintdemo/tree/master

项目地址:http://git.oschina.net/895925636/mint-mvc

收录地址:http://www.oschina.net/p/mint-mvc

博客地址:http://www.wemakers.net/home/blog?cate=1001

(完)

© 著作权归作者所有

水牛叔叔

水牛叔叔

粉丝 143
博文 80
码字总数 36149
作品 2
珠海
程序员
私信 提问
java mvc框架--mint-mvc

mint mvc是一个纯粹的mvc框架,是在servlet之上做了浅层包装而做出来的,它做的事情很简单:接收请求->封装参数->将请求交给开发者这编写的逻辑处理->返回处理结果。 mint-mvc有如下特点: ...

水牛叔叔
2014/10/22
2.6K
0
史上最简单的 Spring MVC 教程(九)

1 前言 在史上最简单的 Spring MVC 教程(五、六、七、八)等四篇博文中,咱们已经分别实现了“人员列表”的显示、添加、修改和删除等常见的增、删、改、查功能。接下来,也就是在本篇博文中...

qq_35246620
2017/01/29
0
0
mint-MVC正式发布,官网正式上线

其实mint-mvc一年前就开发好了,但是一直都是直接丢在git上,也没几个人知道,正儿八经的用户只有自己一个。最近好多抱怨java不适合开发web2.0、难用的帖子,我就想把我开发一系列工具拿出来...

水牛叔叔
2015/05/10
23
0
七天学会ASP.NET MVC(七)——创建单页应用

系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理 七天学会ASP.NET MVC (...

葡萄城控件技术团队
2015/08/11
610
0
史上最简单的 Spring MVC 教程(十)

1 前言 在史上最简单的 Spring MVC 教程(九)中,咱们已经实现了图片的上传及显示功能,那么接下来,在本篇博文中,咱们更进一步,以实体类(Person)中的字段“name”和控制器(PersonCon...

qq_35246620
2017/01/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
11分钟前
1
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0
VUE 计算属性

本文转载于:专业的前端网站▶VUE 计算属性 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </hea......

前端老手
昨天
6
0
快速搭建LNMT平台和环境部署 Tomcat详解

Tomcat部署的基本概念 1. CATALINA_HOME与CATALINA_BASE分别指什么?     CATALINA_HOME指的是Tomcat的安装目录     bin:\\Tomcat一些脚本存放目录,比如启动脚本startup.bat/start...

网络小虾米
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部