Struts2 文件上传与接收页面参数

文件上传是网站中经常使用的。

文件上传的API也比较多,本人之前用过JSP smart upload的API,最有名的文件上传的API当属apache

commons-fileupload,struts2中文件上传就更简单了,下面是一个Struts2简单的文件上传的例子。

action类

 

private String username;
	private String password;
	private String secret;
	//上传的文件对象
	private File uploadFile;
	//文件名称
	private String uploadFileFileName;
	//文件类型
	private String uploadFileContentType;
	
	//性别
	private String sex;
	//爱好
	private String[] hobby;
	//出生国家
	private String country;
	//国籍
	private String[] guoji;
	private String desc;
	
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String submit(){	
		List<String> hobbys = new ArrayList<String>();
		Collections.addAll(hobbys, hobby);
		
		List<String> guojis = new ArrayList<String>();
		Collections.addAll(guojis, guoji);
		System.out.println("username="+username+",password="+password+",secret="+secret+",file="+uploadFile+",sex="+sex+",hobby="+hobbys+",country="+country+",guoji="+guojis+",desc="+desc);
		System.out.println("filename="+uploadFileFileName+",content type="+uploadFileContentType+",length="+uploadFile.length());
		return SUCCESS;
	}

        setter and getter method

 

struts.xml,action配置没有什么特殊之处,文件上传的action要使用默认的拦截器栈,默认的拦截器栈

中有文件上传的拦截器

 

<!-- 允许上传的最大文件大小 -->
<constant name="struts.multipart.maxSize" value="10485760"></constant>
<package name="Struts2_ReceiveWebElement" namespace="/" extends="struts-default">

        <action name="index" class="com.guchao.struts2.action.TestAction" method="submit">
            <result>/hello.jsp</result>
        </action>
    </package>

JSP代码

 

<form action="index!submit" method="post" enctype="multipart/form-data">
    username: <input type="text" name="username"> <br>
    password: <input type="password" name="password"> <br>
    
    <input type="hidden" name="secret" value="this is a secret!">
   	file:<input type="file" name="uploadFile"><br>
    sex:<input type="radio" name="sex" value="Male">M &nbsp;<input type="radio" name="sex" value="FMale">F<br>
    hobby:<input type="checkbox" name="hobby" value="Music" checked="checked">Music &nbsp; <input type="checkbox" name="hobby" value="Art">Art &nbsp;<input type="checkbox" name="hobby" value="Dance">Dance<br>
    
    birthday country:<select name="country">
    			<option value="China" selected="selected">China</option>
    			<option value="USA">USA</option>
    			<option value="Canada">Canada</option>
    			<option value="Japan">Japan</option>
    		</select><br>
    guoji:<select name="guoji" multiple="multiple">
    			<option value="China" selected="selected">China</option>
    			<option value="USA">USA</option>
    			<option value="Canada">Canada</option>
    			<option value="Japan">Japan</option>
    	  </select><br>
    desc:<textarea rows="20" cols="20" name="desc"></textarea><br>
    <input type="button" name="btn" value="submit" οnclick="javascript:document.forms[0].submit();">
    </form>

 

 文件上传页面需要注意的一点是表单form要设置为enctype="multipart/form-data",默认

enctype="application/x-www-form-urlencoded"

Struts2之所以能够如此简单地进行文件上传,是因为有文件上传拦截器FileUploadInterceptor,action

中的属性uploadFileFileName和uploadFileContentType,是文件上传拦截器自动完成的赋值。格式为File对象的名称+FileName 和 File对象的名称+ContentType。

此外还可以看到表单中的参数和action属性的映射,单选按钮对应String,多选按钮对应String[],单选

的下拉列表对应String,多选的下拉列表对应String[]等。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值