Java Struts(文件下载)
1.从注册成功页面跳转至用户详情页面(跳转至UserListAction)
2.UserListAction调用service获得用户列表,并将这些数据传送到UserList.jsp中,UserList.jsp将这些数据进行展示
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { UsersService service=new UsersService();
ArrayList<Users> userList = service.getUserList();
request.setAttribute("userList", userList);
return mapping.findForward("showuser");
}
public ArrayList<Users> getUserList()
{
String sql="select * from _users";
List<Object[]> al = SqlHelper.executeQuery(sql, null);
ArrayList<Users> userList=new ArrayList<Users>();
Users user=new Users();
for(Object[] obj:al)
{
user.setUsername((String) obj[0]);
user.setPhoto((String) obj[1]);
user.setPhoto2((String) obj[2]);
userList.add(user);
}
return userList;
}
<h1>用户列表</h1>
<c:forEach items="${userList}" var="user">
${user.username} <img src="/StrutsFileUpAndDown/file/${user.photo}" width=50px/><a href="/StrutsFileUpAndDown/downloadFile.do?filename=${user.username}">点击下载</a><br/>
</c:forEach>
3.在UserList中存在一个跳转标签,这个标签可以进行下载用户头像,当点击这个页面后,跳转至DownloadFileAction,这个Action进行下载操作
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
FileInputStream fis=null;
OutputStream os=null;
String fileName = request.getParameter("filename");
UsersService usersService=new UsersService();
Users user = usersService.getUser(fileName); //下载文件
//1.先获取到下载文件的绝对路径
String filePath = this.getServlet().getServletContext().getRealPath("/file");
String userPhoto = user.getPhoto(); response.setContentType("text/html;charset=utf-8");
//如果文件具有中文,则需要进行Url编码
//设置一个头,告诉浏览器有文件要下载
try {
response.setHeader("Content-Disposition","attachement; filename="+java.net.URLEncoder.encode(userPhoto,"utf-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String fileAllPath=filePath+"\\"+userPhoto; byte []buff=new byte[1024];
int len=0;
try {
fis=new FileInputStream(fileAllPath);
os=response.getOutputStream();
while((len=fis.read(buff))!=-1)
{
os.write(buff,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
finally{
try {
fis.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return mapping.findForward("goback");
}
public Users getUser(String username)
{
String sql="select * from _users where username=?";
String[] parameter={username};
ArrayList<Object[]> al = SqlHelper.executeQuery(sql, parameter); Object[] objects = al.get(0); Users user=new Users();
user.setUsername((String) objects[0]);
user.setPhoto((String) objects[1]);
user.setPhoto2((String) objects[2]); return user;
}
1).先获取上个页面传输过来的用户名,然后再根据这个用户名从数据库中获取这个用户的相关数据。
2).获取下载文件的绝对路径,response设置编码格式和头;如果文件具有中文,则需要进行url编码
3).创建一个输入流,用于读取文件;从response中获取一个输出流,用于输出
4).通过输入输出流,将文件进行输出
Java Struts(文件下载)的更多相关文章
- struts 文件下载
=============================struts 文件下载 ================================== 步骤一: JSP页面 <a href=& ...
- struts 文件下载 annotation 注解版
[本文简介] 本文将简单介绍使用 struts2 ,通过零配置和 annotation 实现文件下载功能. [文件夹结构] [web.xml有关struts的配置] <filter> &l ...
- 用java实现文件下载,提示java.lang.IllegalStateException: getOutputStream() has already been called for this response
1. 用java实现文件下载,提示java.lang.IllegalStateException: getOutputStream() has already been called for this ...
- 【Servlet】java web 文件下载功能实现
需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> & ...
- atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践
atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践 1. 服务器控件的类别 1 1.1. 数据控件:该类控件可细分为两种类型:数据源控件和数 ...
- Java - Struts框架教程 Hibernate框架教程 Spring框架入门教程(新版) sping mvc spring boot spring cloud Mybatis
https://www.zhihu.com/question/21142149 http://how2j.cn/k/hibernate/hibernate-tutorial/31.html?tid=6 ...
- Java Web文件下载
Web文件下载有两种.一种是文件在站点文件夹下.在浏览器中直接输入文件路径就可以下载.如http://www.xxx.com/file.zip.第二种是文件不在站点文件夹下或者文件是动态生成的(导出报 ...
- java/struts/Servlet文件下载与ftp文件上传下载
1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!download ...
- Java Struts文件上传和下载详解
Struts2文件上传 Struts 2框架提供了内置支持处理文件上传使用基于HTML表单的文件上传.上传一个文件时,它通常会被存储在一个临时目录中,他们应该由Action类进行处理或移动到一个永久的 ...
随机推荐
- (译)C#参数传递
前言 菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 接触C#一年了,感觉很多东西还是很模糊,像C#中的委托和事件 有些东西看多了不用也还是不 ...
- ASP.NET:邮件服务器与客户端
目录: 一.概述 二.MX设置 三.使用系统的SMTP功能发邮件 四.使用hMailServer收发邮件 五.Web邮件客户端 一.概述 首先必须清楚SMTP才是提供邮件服务器的核心,收发邮件全靠SM ...
- Net特性类Description了解下
NET特性类都有个特点类名+Attribute,继承基类Attribute,我们看下微软自带的特性类:DescriptionAttribute namespace System.ComponentMo ...
- [Oracle]Oracle数据库CPU利用率很高解决方案
Oracle数据库经常会遇到CPU利用率很高的情况,这种时候大都是数据库中存在着严重性能低下的SQL语句,这种SQL语句大大的消耗了CPU资源,导致整个系统性能低下.当然,引起严重性能低下的SQL语句 ...
- Linux CentOS环境下.Net Core SDK安装
1.安装.Net SDK 在安装.NET之前,需要注册产品存储库并安装所需的依赖关系. 打开Linux命令提示符并运行以下命令: sudo rpm -Uvh https://packages.micr ...
- WPF自定义控件之列表滑动特效 PowerListBox
列表控件是应用程序中常见的控件之一,对其做一些绚丽的视觉特效,可以让软件增色不少. 本人网上看过一个视频,是windows phone 7系统上的一个App的列表滚动效果,效果非常炫 现在在WPF上用 ...
- MaxScript镜像函数
看到有网友需要写的,其实镜像就是缩放改为负数 Fn MirrorObject argObjects argAxisName = ( local axisNames = #(#x,#y,#z) do ( ...
- 3. Python的种类
- 使用ssm实现校验密码
由于审题不清,在完成作业“servlet实现进行用户名和密码验证”中使用了jdbc连接数据库的方式实现,没用静态方式验证,故本次作业使用ssm实现 本次作业上传到百度网盘:链接:https://pan ...
- PHP 代码优化测试【Benchmark数据测试】
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 Benchmark测试之前我们先来了解Benchmark.直接下载:ht ...