struts实战--文件下载
struts实现文件下载
一、页面
这个页面的里面的简历资料就是我们的下载入口。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<HTML><HEAD><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><LINK href="${pageContext.request.contextPath}/css/Style.css" type="text/css" rel="stylesheet"><script language="javascript" src="${pageContext.request.contextPath}/js/public.js"></script></HEAD><body><form id="userAction_save_do" name="Form1" action="${pageContext.request.contextPath}/user/userAction_save.do" method="post" enctype="multipart/form-data"><table cellSpacing="1" cellPadding="5" width="100%" align="center" bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0"><tr><td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"height="26"><strong><STRONG>查看用户</STRONG></strong></td></tr><tr><td width="18%" align="center" bgColor="#f5fafe" class="ta_01">登录名: <s:debug /></td><td class="ta_01" bgColor="#ffffff"><s:property value="model.logonName"/></td><td align="center" bgColor="#f5fafe" class="ta_01">用户姓名:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.userName"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">性别:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.sex"/></td><td align="center" bgColor="#f5fafe" class="ta_01">学历:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.education"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">出生日期:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.birthday"/></td><td align="center" bgColor="#f5fafe" class="ta_01">电话:</td><td class="ta_01" bgColor="#ffffff"><s:property value="model.telephone"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">兴趣爱好:</td><td class="ta_01" bgColor="#ffffff" colSpan="3"><s:property value="model.interest"/></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">简历资料:</td><td class="ta_01" bgColor="#ffffff" colSpan="3"><s:a action="user_download" namespace="/" cssClass="cl_01"><s:param name="userID" value="model.userID"></s:param><s:property value="model.filename"/></s:a></td></tr><TR><TD class="ta_01" align="center" bgColor="#f5fafe">备注:</TD><TD class="ta_01" bgColor="#ffffff" colSpan="3"><s:property value="model.remark"/></TD></TR><TR><td align="center" colSpan="4" class="sep1"><img src="${pageContext.request.contextPath}/images/shim.gif"></td></TR><TR><td class="ta_01" style="WIDTH: 100%" align="right" bgColor="#f5fafe" colSpan="4"><FONT face="宋体"> </FONT><INPUT class="button_ok" type="button" οnclick="history.go(-1)" value="返回"/><span id="Label1"></span></td></TR></table></form></body>
</HTML>
二、action类
下载的时候,我们需要下载的文件输入流,MIME类型和文件名。
1、根据用户id查询到用户。
2、根据用户获取到文件输入流。
3、根据用户获取文件名。
4、在下载的时候可能会出现名称乱码,所以我们需要用encodeDownloadFilename方法解决。
/*** 下载简历 (struts2 下载 一个流、 两个头信息)* * @return*/public String download() {UserService userService = new UserService();user = userService.findById(user.getUserID());return "downloadSUCCESS";}// 返回文件流public InputStream getInputStream() throws IOException {if (user == null || user.getPath() == null) {return null;}File file = new File(ServletActionContext.getServletContext().getRealPath(user.getPath()));return new FileInputStream(file);}// 返回简历 MIME类型public String getContentType() {if (user == null || user.getFilename() == null) {return null;}return ServletActionContext.getServletContext().getMimeType(user.getFilename());}// 返回编码后的文件名public String getDownloadFilename() throws IOException {if (user == null || user.getFilename() == null) {return null;}return encodeDownloadFilename(user.getFilename(), ServletActionContext.getRequest().getHeader("user-agent"));}/*** 下载文件时,针对不同浏览器,进行附件名的编码* * @param filename* 下载文件名* @param agent* 客户端浏览器* @return 编码后的下载附件名* @throws IOException*/public String encodeDownloadFilename(String filename, String agent)throws IOException {if (agent.contains("Firefox")) { // 火狐浏览器filename = "=?UTF-8?B?"+ new BASE64Encoder().encode(filename.getBytes("utf-8"))+ "?=";} else { // IE及其他浏览器filename = URLEncoder.encode(filename, "utf-8");}return filename;}
三、struts.xml文件配置
<result name="downloadSUCCESS" type="stream"><!-- 下载流 getInputStream --><param name="contentType">${contentType}</param><param name="contentDisposition">attachment;filename=${downloadFilename}</param></result>
就此,我们就实现了文件下载的功能。
struts实战--文件下载相关推荐
- struts实战--登陆拦截器
登陆校验拦截器 一.概述 功能:用户只有登录成功后,才可以进行操作. 二.实现 1).创建一个类,实现Interceptor接口 1.判断用户user是否为空 2.如果为空,则设置哪些方法可以不用登陆 ...
- struts实战--实现条件查询(利用dbutils)
struts实现条件查询---利用dbutils 一.在list.jsp页面修改查询组件 是否上传简历 <s:select list="#{'1':'有','2':'无 ...
- struts实战--添加功能(重点文件上传)
struts实现添加功能(重点上传) 一.对add.jsp页面上html标签修改----struts2的表单标签 1.性别 原标签 <input ...
- struts实战--登录功能实现
struts实现登录功能 一.使用struts2提供的表单标签来改造页面. WebRoot/login/login.jsp <form>----- ...
- 实战 | 文件下载、及浏览器加速导致不能下载的问题
目录 1. 版权 2. nginx x-accel 3. 浏览器加速导致的问题 4. DownloadSessionManager 5. 关于下载计数 1. 版权 本文为原创, 遵循 CC 4.0 B ...
- Electron-vue开发实战 - 文件下载及进度显示
主要通过 Electron 中 will-download 事件和主进程和渲染进程之间的通信,实时监听下载进度 main/index.js mainWindow.webContents.session ...
- yii2项目实战-博客管理平台的搭建
登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 返回通知列表 下一条 上一条 分享资讯 传PPT/文档 提问题 写博客 传资源 创建项目 创建代码片 ...
- Struts2之struts2文件下载详解
一.学习案例:通过在downloadfile.jsp页面点击"下载文件",查看文件是否可以成功下载. 二.案例分析:struts2文件下载只需简单配置即可. a)先在下载页面(do ...
- java session 永不过期_Java Web Application使Session永不失效(利用cookie隐藏登录)
在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...
最新文章
- 综合计算机考试题库,2017年职称计算机考试综合试题模拟题库5
- MySQL安装查看密码修改密码
- 小米 samba linux,不折腾会死:CentOS7访问小米路由(Samba服务)
- ubuntu 18.04 添加快快捷方式
- 大摩维持浩大游戏“增持”评级
- windows的\r\n与Linux的\n
- iOS: 为画板App增加 Undo/Redo(撤销/重做)操作
- Deep Learning with PyTorch 必看教程集(4本)
- CCNP之IPv6技术-过渡技术(NAT-PT)
- Portlet开发指南第三章
- 微软补丁日安全公告|11月份
- WebCrack:网站后台弱口令批量检测工具 ——yzddMr6
- Apache ab测试结果解析
- Linux重置root 密码
- 全智通A+常见问题汇总解答—A+维修管理—维修领料,修改领料单材料归属到了另一个维修单下
- java 表格_Java创建表格实例详解
- 浙江凤凰计划:用新零售模式做资本市场敲门砖
- 水 hdu5208 2015-04-20 21:03 36人阅读 评论(0) 收藏
- 2023中国传媒大学计算机考研信息汇总
- python爬虫下载网站磁力链接