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

环境的搭建
(申明一下 我用的是struts-2.3.31)
一、创建一个web 工程
最简单的Struts2下载图片实例_java
二、下载好Struts2以后导入核心jar
最简单的Struts2下载图片实例_编辑器_02
三:编写上传页面
代码如下(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下载图片实例_web下载_03

最简单的Struts2下载图片实例_web下载_04

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

有问题到511906138学习群找我!谢谢