最简单的Struts2下载图片实例 
 在实际项目中上传和下载是十分常见的,今天我就教大家如何利用Struts2框架来实现图片的下载
环境的搭建 
 (申明一下 我用的是struts-2.3.31) 
 一、创建一个web 工程 
 二、下载好Struts2以后导入核心jar 
 三:编写上传页面 
 代码如下(index.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>下载文件</title>
  </head>
  <body>
     <!--一个链接,指向下载的action -->
    <a href="user/download.action">帅哥私房照</a>
  </body>
</html>四、编写 DownLoadAction
package com.hulang.actions;
import java.io.InputStream;
import java.util.UUID;
import org.apache.struts2.ServletActionContext;
public class DownLoadAction {
    private InputStream inputStream;
    private String fileName;//文件名随意
    public InputStream getInputStream() {
        return inputStream;
    }
    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }
    public String getFileName() {
        return fileName;
    }
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
    /**
     * 
     * @return
     * @throws Exception
     * 这里强调一下:首先,在你的当前工程下先得存在/images这么个文件夹
     * 其次里面得有一张叫0.bmp的图片  不然到哪里去下载(我们的代码是要放到服务器上去的)
     */
    public String execute() throws Exception{
        fileName = "0.bmp";
        inputStream = ServletActionContext.getServletContext().getResourceAsStream("/images/"+fileName);
        //设置下载文件名  别整中文哈 我这用的是UUID生成随机名字
        fileName = UUID.randomUUID()+".bmp";
        /*
        //如果实在是需要中文怎么办呢
        fileName = "帅哥.jpg";
        //先用当前编码将其打散
        byte[] bytes = fileName.getBytes("utf-8");
        //然后用服务端的编码组装起来
        fileName = new String(bytes,"ISO-8859-1");
        */
        return "success";
    }
}五、注册Action(在struts.xml注册)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="first" namespace="/user" extends="struts-default">
        <action name="download" class="com.hulang.actions.DownLoadAction">
            <result type="stream">
                <!-- 以什么形式下载 默认为在线下载   并指定文件名 -->
                <param name="contentDisposition">attachment;filename=${fileName}</param>
                <!-- Action里的流的名称 -->
                <param name="inputName">inputStream</param>
            </result>
        </action>
    </package>
</struts>*搞定,结果如下:* 

很简单吧 简单的事情认真做! 
 其实Struts2开发很简单,我小小的总结了一下开发过程(不喜勿喷)——编写页面—->编写对应的Action—>再编写对应跳转的页面 如此循环。
有问题到511906138学习群找我!谢谢
                
                










