刚刚学了下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的包,文件在这个包里
 1package com.home.jiangfan;
 2
 3import java.io.*;
 4import java.util.*;
 5
 6import org.apache.struts2.interceptor.ParameterAware;
 7
 8public 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参数值
搞定~~

睡觉~~了~~