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类进行处理或移动到一个永久的 ...
随机推荐
- DI延伸
延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy-init” 属 ...
- lambda distinct
public ActionResult Index() { IList<RegisterModel> regList = new List<RegisterModel>() { ...
- java 传参数时 类型后跟 3个点 "..." 的意义
对照代码和运行结果便知"..." 的意义 import java.util.ArrayList; public class StringDemo { public static v ...
- cocos2dx动画常见特效(转)
本文转载自:http://www.cnblogs.com/linux-ios/archive/2013/04/09/3009292.html bool HelloWorld::init() { // ...
- App与微信WebAPP
我的App与微信搞上了 小麦积分墙摘自网络 最近有很多开发者关心的一个问题是如何提升app的下载量,透过现象开本质,app下载量的终极目标还是为多少客户提供了服务,抛开下载量KPI,app真心关心的问 ...
- asp.net——上传图片生成缩略图
上传图片生成缩略图,原图和缩略图地址一样的时候缩略图会把原图覆盖掉 /// <summary> /// 生成缩略图 /// </summary> /// <param n ...
- iOS 应用隐藏状态栏
有时候在 Storyboard 和 target 里的设定并不足以使得应用能够完全隐藏状态栏. 这时候需要到 Info.plist,添加一项:View controller-based status ...
- mysql--视图,触发器,事务,存储过程
一.视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的 ...
- WIN7 64位配置X86 MySQL 数据源
在运行中输入“c:\windows\syswow64\odbcad32.exe”,在调出来的ODBC管理器中配置数据源.
- Net Manager测试连接测试没有成功,用户权限问题,以管理员身份运行后测试成功
Net Manager测试连接测试没有成功,截图如下: