文件上传是网站中经常使用的。
文件上传的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 <input type="radio" name="sex" value="FMale">F<br> hobby:<input type="checkbox" name="hobby" value="Music" checked="checked">Music <input type="checkbox" name="hobby" value="Art">Art <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" onclick="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[]等。
相关推荐
-- 系统常量定义,定义上传文件字符集编码 --> <constant name="struts.i18n.encoding" value="UTF-8"> <!-- 系统常量定义,定义上传文件临时存放路径 --> <constant name="struts.multipart.saveDir" ...
Struts 控制器(负责接收据+处理数据+响应结果(重定向+转)) Spring 工厂类 Hibernate 持久性访问层 *.hbm.xml(类—-表,属性–字段) 2注解 项目包 1,action 控制器 2,dao 操作数据库— 3,model 实体类模型 4...
Struts 控制器(负责接收据+处理数据+响应结果(重定向+转)) Spring 工厂类 Hibernate 持久性访问层 *.hbm.xml(类—-表,属性–字段) 2注解 项目包 1,action 控制器 2,dao 操作数据库— 3,model 实体类模型 4...
WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。 本文后面的章节将从数据持久层->业务层->Web层的...
实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行较复杂的表单处理 实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询...
实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行较复杂的表单处理 实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询...
实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行较复杂的表单处理 实例41 用jspSmartUpload组件来实现文件下载 实例42 分页读取文件内容 第7章 在JSP中使用数据库 实例43 顺序查询...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
实例34 随机读取文件程序示例 实例35 故事接龙 实例36 文件上传 实例37 在浏览器中打开文件 实例38 文件下载 实例39 用jspSmartUpload组件实现文件上传 实例40 应用jspSmartUpload组件进行...
0208_文件上传 0300_第三部分:WEB高级开发 0309_Servlet程序开发 0310_表达式语言 0311_Tomcat数据源 0312_JSP标签编程 0313_JSP标准标签库(JSTL) 0314_AJAX开发技术 0400_第四部分:框架开发 0415_...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
第8章 文件上传 8.1、smartupload上传组件 8.1.1、上传单个文件 8.1.2、混合表单 8.1.3、为上传文件自动命名 8.1.4、批量上传 8.2、FileUpload 8.2.1、使用FileUpload接收上传内容 8.2.2、保存上传内容 ...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...