刚刚学了下Struts2,做个文件上传的小东西
以做一个文件上传的例子展开
要想用Struts2,首先下个Struts2.0的包
http://people.apache.org/builds/struts/
这里版本可是真不少的,我下的2.1.2的包
也就是struts-2.1.2-all.zip 这头东西
下完了就可以开始配置运行环境了

新建一个WebProject,名字就叫myStruts2好了
要正常启动能运行Struts2最少需要5个Struts2包里lib目录下的5个文件
分别是:
commons-logging-1.0.4.jar
freemarker-2.3.12.jar
ognl-2.6.11.jar
struts2-core-2.1.2.jar
xwork-2.1.1.jar
为了做下面这个例子,还需要拷贝
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar

这7个文件copy到项目webroot下的WEB-INF下的lib目录下就行了

准备工作完毕。开工,做这个文件上传的例子
首先配置WEB-INF下的web.xml文件如下:

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 < web-app  version ="2.4"  xmlns ="http://java.sun.com/xml/ns/j2ee"
 3     xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee 
 5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
 6
 7      < filter >
 8          < filter-name > struts2 </ filter-name >
 9          < filter-class >
10             org.apache.struts2.dispatcher.FilterDispatcher
11          </ filter-class >
12      </ filter >
13      < filter-mapping >
14          < filter-name > struts2 </ filter-name >
15          < url-pattern > /* </ url-pattern >
16      </ filter-mapping >
17
18      < welcome-file-list >
19          < welcome-file > index.jsp </ welcome-file >
20      </ welcome-file-list >
21
22 </ web-app >
23

然后修改下index.jsp文件,做一个文件上传的页面

 1 <% @ page language = " java "  pageEncoding = " UTF-8 " %>
 2 <% @ taglib prefix = " s "  uri = " /struts-tags " %>
 3
 4 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
 5 < html >
 6    < head >
 7     
 8      < title > My JSP 'index.jsp' starting page </ title >
 9      < meta  http-equiv ="pragma"  content ="no-cache" >
10      < meta  http-equiv ="cache-control"  content ="no-cache" >
11      < meta  http-equiv ="expires"  content ="0" >     
12      < meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >
13      < meta  http-equiv ="description"  content ="This is my page" >
14      <!--
15     <link rel="stylesheet" type="text/css" href="styles.css">
16      -->
17    </ head >
18   
19    < body >
20      < s:form  action ="upload"   method ="post"  enctype ="multipart/form-data" >
21      < s:file  name ="pic"  label ="请选择文件" ></ s:file >
22      < s:submit  value ="提交" ></ s:submit >
23      </ s:form >< br >
24    </ body >
25 </ html >
26


做好这里,然后在src目录下创建struts.xml文件

 1 <? xml version="1.0" encoding="UTF-8" ?>
 2 <! DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd" >
 5 < struts >
 6      < constant  name ="struts.devMode"  value ="true"   />
 7     
 8      < package  name ="default"  extends ="struts-default" >
 9          < action  name ="upload"  class ="com.home.jiangfan.Upload" >
10          < interceptor-ref  name ="timer" ></ interceptor-ref >
11          < interceptor-ref  name ="defaultStack" ></ interceptor-ref >
12          < result  name ="success" > /result.jsp </ result >
13          </ action >
14      </ package >
15
16
17     
18 </ struts >
19
20


接着创建Upload.java文件,在src里我新建了com.home.jiangfan的包,文件在这个包里
 1 package com.home.jiangfan;
 2
 3 import java.io.*;
 4 import java.util.*;
 5
 6 import org.apache.struts2.interceptor.ParameterAware;
 7
 8 public class Upload implements ParameterAware{
 9     Map parameters;
10     File pic;
11     String picContentType;
12     String picFileName;
13     public File getPic() {
14         return pic;
15     }
16     public void setPic(File pic) {
17         this.pic = pic;
18     }
19     public String getPicContentType() {
20         return picContentType;
21     }
22     public void setPicContentType(String picContentType) {
23         this.picContentType = picContentType;
24     }
25     public String getPicFileName() {
26         return picFileName;
27     }
28     public void setPicFileName(String picFileName) {
29         this.picFileName = picFileName;
30     }
31     
32     public String execute(){
33         String path="D:"+File.separator+"copytest"+File.separator;
34         path=path+picFileName;
35         File des=new File(path);
36         if(des.exists()){
37             des.delete();
38         }
39         pic.renameTo(des);
40         
41         return "success";
42     }
43     
44     public void setParameters(Map arg0) {
45         // TODO Auto-generated method stub
46         parameters=arg0;
47     }
48
49 }
50

好了,然后做一个返回的result页面
 1 <% @ page language="java" pageEncoding="UTF-8" %>
 2 <% @ taglib prefix="s" uri="/struts-tags" %>
 3
 4 <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
 5 < html >
 6    < head >
 7     
 8      < title > My JSP 'index.jsp' starting page </ title >
 9      < meta  http-equiv ="pragma"  content ="no-cache" >
10      < meta  http-equiv ="cache-control"  content ="no-cache" >
11      < meta  http-equiv ="expires"  content ="0" >     
12      < meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >
13      < meta  http-equiv ="description"  content ="This is my page" >
14      <!--
15     <link rel="stylesheet" type="text/css" href="styles.css">
16      -->
17    </ head >
18   
19    < body >
20   文件名 < s:property  value ="picFileName" />
21   文件类型 < s:property  value ="picContentType" />
22    </ body >
23 </ html >
24

其中为了修改文件上传里,文件size的限制,需要在src目录下添加一个struts.properties文件:
struts.multipart.maxSize=1024000000

这里我设置的大小是1G(这个总够了吧!)
配合这个使用的方式,还需要在struts.xml里的Action标签中间添加一段:
<interceptor-ref name="defaultStack">
  <param name="fileUpload.maximumSize">1024000000</param>
  </interceptor-ref>

实际上是修改fileUpload这个拦截器中的maximumSize参数值
搞定~~

睡觉~~了~~