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).通过输入输出流,将文件进行输出

最新文章

  1. 第一章 Shiro简介——《跟我学Shiro》(转)
  2. nfs配置注意点
  3. android Json Gson FastJson 解析
  4. 利用location.hash+iframe跨域获取数据详解
  5. Java基础之集合框架——在文件中存储地图(TryPhoneBook2)
  6. TI BLE CC2541的I2C主模式
  7. 查看django里所有的url
  8. web项目自动化测试方案预研
  9. noi2006day2_最大获利 网络流
  10. 【转】iOS 通过xib自定义UITableViewCell【原创】
  11. [HTTP] HTTP Verb
  12. OpenCV学习(1)-安装(Windows)
  13. Android SDK镜像
  14. android开发之bitmap使用
  15. gmic全球移动互联网大会 全球九站已开启!
  16. ES 12 - 配置使用Elasticsearch的动态映射 (dynamic mapping)
  17. springboot+freemarker毕业设计项目错误合集
  18. (笔记)ubuntu下安装jdk
  19. tensflow自定义损失函数
  20. thinkphp3.2集成QRcode生成二维码

热门文章

  1. ERROR Function not available to this responsibility.Change responsibilities or contact your System Administrator.
  2. Android-sdcard广播的接收处理
  3. eclipse--&gt;run as --&gt; maven test 中文乱码
  4. jenkins yum 安装
  5. 构建命令maven install 打包不是最新的代码
  6. 解决IE8不支持console
  7. bat windows10系统垃圾清理---
  8. git删除未监视的文件
  9. sqlite3简单操作
  10. Mybatis 优化: