最简单的Struts2下载图片实例

最简单的Struts2下载图片实例
在实际项目中上传和下载是十分常见的,今天我就教大家如何利用Struts2框架来实现图片的下载

环境的搭建
(申明一下 我用的是struts-2.3.31)
一、创建一个web 工程
我的目录结构
二、下载好Struts2以后导入核心jar
十三个核心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学习群找我!谢谢

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值