把struts2配置好了以后就可以作我们想做的事了,比如文件上传到服务器:

  1、首先需要在配置struts2时建的struts.xml文件中配置过滤器等相关信息(上一篇有配置方法)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <constant name="struts.multipart.maxSize" value="4097152"></constant>
 7     <package name="yskf" extends="struts-default">
 8         <action name="logddd" class="com.maji.action.LoginAction">
 9             <result name="success">/Success.jsp</result><!-- 上传成功跳到成功页面 -->
10             <result name="input">/Failed.jsp</result><!-- 上传失败跳到失败页面 input为上传失败时返回的结果-->
11             <interceptor-ref name="fileUpload"><!-- 过滤器,name值固定-->
12                 <param name="maximumSize">4097152</param><!-- 限定上传文件大小(字节) -->
13                 <param name="allowedTypesSet">text/plain,image/jpeg</param><!-- 限定类型 -->
14                 <param name="allowedExtensionsSet">.txt,.jpg</param><!-- 后缀名 -->
15             </interceptor-ref>
16             <interceptor-ref name="defaultStack"></interceptor-ref><!-- struts默认的拦截器栈,不可少 -->
17         </action>
18     </package>
19 </struts>

  2、创建文件上传页面,用表单提交:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %><!-- 导入struts标签库,不需要用OGNL则不必 -->
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>文件上传</title>
 9 </head>
10 <body>
11     <!-- 提交到struts.xml的action,请求方式为post,enctype固定为 "multipart/form-data"-->
12     <s:form action="logddd" method="post" enctype="multipart/form-data">
13         <s:file name="BTG" /><!-- 用file  Type框,name属性必不可少 -->
14         <s:submit value="login" />
15     </s:form>
16 </body>
17 </html>

  3、创建一个action类,处理文件流:

 1 package com.maji.action;
 2 
 3 import java.io.File;
 4 import org.apache.commons.io.FileUtils;
 5 import com.opensymphony.xwork2.ActionSupport;
 6 /**
 7  * 该类继承ActionSupport,并重写execute方法
 8  * @author Administrator
 9  * 2017-09
10  */
11 public class LoginAction extends ActionSupport {
12     private static final long serialVersionUID = 6015695024096389723L;//序列化
13     private File BTG;                //文件对象,与文件上传界面的Type-file的name属性值保持一致
14     private String BTGFileName;      //文件名(对象名+FileName)
15     private String BTGContentType;   //文件类型(对象名+ContentType)
16     
17     @Override
18     /**
19      *重写execute方法
20      */
21     public String execute() throws Exception {
22         String path ="D:\\Desktop\\mv\\"+BTGFileName;    //文件上传到的目标目录+文件名
23         FileUtils.copyFile(BTG, new File(path));         //把文件流复制到目标目录的目标文件中
24         return SUCCESS;                                  //返回一个String,用于struts.xml接收并判断,常量SUCCESS的值为"success"
25     }
26     
27     /*为对象名、文件名、文件类型添加Access方法,必不可少*/
28     public File getBTG() {
29         return BTG;
30     }
31 
32     public void setBTG(File bTG) {
33         BTG = bTG;
34     }
35 
36     public String getBTGFileName() {
37         return BTGFileName;
38     }
39 
40     public void setBTGFileName(String bTGFileName) {
41         BTGFileName = bTGFileName;
42     }
43 
44     public String getBTGContentType() {
45         return BTGContentType;
46     }
47 
48     public void setBTGContentType(String bTGContentType) {
49         BTGContentType = bTGContentType;
50     }
51 
52 
53 }

  4、为了方便观察,我们可以做一个成功界面和失败界面,文件名分别对应struts.xml中的<result name="success">、<result name="input">目标路径即可。

posted on 2017-09-14 08:47  云上咖啡  阅读(225)  评论(0)    收藏  举报