1. 功能说明

当用户登录后,只要用户原先有上传图片到服务上,那么系统就要显示出用户的图片。并且以分页在形式显示,每页三张。当然,用户只要将鼠标放到对应的列表图片上,那么右边就要显示该张图片,同时下方要显示图片的信息。如图所示。

2. 构思实现

这里我们需要在html的页面上定义个<div/>,比如,名字叫做”list”。主要是用来列表显示图片的。可是关键的功能可能是在如何去读取出这些图片,并将这些图片放到我们规定的<div/>中,还有就是鼠标放上去,右边是如何显示出来的。这里,我们可能要分为两步来完成。第一步就是GetPhotoServlet的类来获取图片,并以列表显示;第二个方可能就是通过ShowImgServlet来显示当前的图片。

3. 具体实现

在html的页面上,我们需要设计下面的标签.

<!-- 显示相片列表的元素 --><td width="120" height="440" valign="top"><div align="center"><h3>相片列表</h3></div><div id="list"></div><hr /><div align="center"><a href="javascript:void(0);" οnclick="turnPage(-1);">上一页</a><a href="javascript:void(0);" οnclick="turnPage(1);">下一页</a></div><br/><div id="imgInf" align="center"></div></td>

1)        列表显示图片。在列表上显示图片,我们需要注意的是,每次地请求显示新的一页图片时,我们需要先清空列表中的信息,就是out.println("var list = $('#list').empty();");这名话来实现。同时,我们也需要用PrintWriter定义的out变量来向客户端写入html的标签。这里就是写入获取到的图片信息显示。

@WebServlet(urlPatterns="/getPhoto")
public class GetPhotoServlet extends BaseServlet
{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{HttpSession session = request.getSession(true);//从HttpSession中获取系统当前用户、相片列表的当前页码String name = (String) session.getAttribute("curUser");Object pageObj = session.getAttribute("curPage");//如果HttpSession中的curpage为null,则设置当前面页为第一页int curPage = pageObj == null ? 1 : (Integer) pageObj;response.setContentType("text/javascript;charset=gbk");//获取输出流PrintWriter out = response.getWriter();try{List<PhotoHolder> photos = as.getPhotoByUser(name, curPage);//清空id为list的元素out.println("var list = $('#list').empty();");for (PhotoHolder ph : photos){out.println("list.append(\"<div align='center'>" +"<img  src='uploadfiles/"+ ph.getUuidName() +"' width='100' height='100' style='cursor:pointer' οnmοuseοver=\\\"showImg('"+ ph.getUuidName()+"','"+ph.getTitle() + "');\\\"/></div>\");");}}catch (AlbumException ex){out.println("alert('" + ex.getMessage() + "请重试!')");}}}

2)        鼠标的移动需要显示对应的当前图片。所以在上面的方法中,我们可能需要用onmouseover的方法。不过,我们也是通过onmouseover的函数来调用 ShowImgServlet的类的。这个时个,我们还是用jQuery的方法来实现的,不过,我们要想在显示图片信息时不会出现乱码,那就需要用encodeURI的方法,因为我们在调用ShowImgServlet时,我们是用get来请求的。下面是jQuey的方法。

// 显示照片
function showImg(fileName, imgName)
{//选进行一次的编码imgName = encodeURI(imgName);$.getScript("showImg?img=" + fileName +"&imgName=" + imgName);
}

进入ShowImgServlet后,我们也是要再次进行编码的。所以比较麻烦,建议大家用jQuery的post方法请求。下面要向客端写入当前图片,实现方法也是通过PrintWriter的定义变量out来实现。

@WebServlet(urlPatterns="/showImg")
public class ShowImgServlet extends BaseServlet
{@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{String img = request.getParameter("img");//两次进行编码转换request.setCharacterEncoding("GBK");String imgName = request.getParameter("imgName");HttpSession session = request.getSession(true);//将用户正在浏览的图片放入HttpSession中session.setAttribute("curImg", img);session.setAttribute("width", IMG_WIDTH);session.setAttribute("height", IMG_HEIGHT);response.setContentType("text/javascript;charset=gbk");//获取输出流PrintWriter out = response.getWriter();out.println("$('#show').attr('src' , 'uploadfiles/" + img + "')"+ ".attr('width','"+ IMG_WIDTH +"')"+ ".attr('height','"+ IMG_HEIGHT +"');");out.println("$('#imgInf').empty();");out.println("$('#imgInf').append('<h4>图片名字:"+imgName+"</h4>')");}}

电子相册系统(六)相片列表显示相关推荐

  1. python基于django的个人电子相册系统

    文末获取资源,收藏关注不迷路 文章目录 前言 一.研究背景 二.研究意义 三.主要使用技术 四.研究内容 五.核心代码 六.文章目录 前言 智能电子相册是现在时下很流行的一种网络元素,它可以应用于很多 ...

  2. 用户功能设计与实现--Django播客系统(六)

    用户功能设计与实现–Django播客系统(六) 文章目录 用户功能设计与实现--Django播客系统(六) 用户注册接口设计 路由配置 测试JSON数据 CSRF处理 JSON数据处理 错误处理 注册 ...

  3. jsp mysql 在线相册_网上电子相册系统的设计(JSP+MySQL)含录像

    摘 要:网上电子相册系统是采用JSP开发的一个基于B/S构架的连接数据库的电子相册网站.相比起互联网的发展,电子相册出现的时间不算太长,但却迎合了大多数网民的需求,是一个大有"前途" ...

  4. 软件 耗电 android OS 系统,六款安卓平台浏览器耗电量实测

    智能手机的普及丰富了我们的碎片时间,但是没电的苦恼却困扰着几乎所有的智能手机用户."用android手机一定是好男人,因为晚上都要回家充电."这个段子绝对不是空穴来风,如果你手头正 ...

  5. 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务...

    我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...

  6. python自助电影售票机_Spring Cloud版——电影售票系统六使用 Spring Cloud Config 统一管理微服务配置...

    一. 为什么要统一管理微服务配置 在传统的单体应用,常使用配置文件管理所有配置.比如,一个 Spring Boot 开发的单体应用,可将配置内容放在 application.yml 文件中.如果需要切 ...

  7. 【C#+SQL Server+打印组件】实现电商快递单打印系统 六:快递单查询模块设计(附源码和资源)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ 一.快递单查询模块概述 打印后的快递单记录被保存到数据库中,快递单查询窗体提供了查询打印记录,修改打印记录,删除打印记录以及重新打印单据的功能 实现 ...

  8. 基于Flink的个人装扮商城群体用户画像与数据实时统计系统(六)-需求集C实现

    文章目录 一.需求集C有什么? 二.模拟生成用户购买商品的信息 三.需求集C实现 一.需求集C有什么? 所有需求link:基于Flink的个人装扮商城群体用户画像与数据实时统计系统(二)-项目介绍与需 ...

  9. java电子相册系统

    关于开发环境 1. jdk1.8 2. myeclipse10 3. tomcat8 4. mysql utf-8 使用技术 1. ssh 框架 2. log使用的是log4j 3. 自定义prope ...

  10. Docker系统六:Docker网络管理

    Docker网络 I. Docer的通信方式 默认情况下,Docker使用网桥(brige)+ NAT的通信模型. Docker启动时会自动创建网桥Docker0,并配置ip 172.17.0.1/1 ...

最新文章

  1. 经典密码学——行置换加密法
  2. PHP中strtotime函数有范围吗,PHP中使用strtotime函数注意事项
  3. 一款纯HTML二次元响应式引导页
  4. [题解]NOI 2001 食物链
  5. 《2018中国AI计算力发展报告》发布!北京算力仅排第二
  6. HDUOJ----4504 威威猫系列故事——篮球梦
  7. Codeforces - 570D 离散DFS序 特殊的子树统计 (暴力出奇迹)
  8. 无线通信设备安装工程概预算编制_安装工程定额与预算编制——安装工程概预算培训...
  9. L298N和TB6612FNG模块控制直流电机
  10. 用计算机pol计算方位角,怎样用科学计算器算坐标方位角
  11. Android客户端与PC服务器实现Socket通信
  12. ABP应用——修改EF Core
  13. ASP.NET mvcConf Videos Available
  14. 阿里云全站加速是什么?与CDN有什么区别
  15. 学校计算机房的面积是98平方米,一间教室需要粉刷的面积为98平方米,在无损耗时每平方米需用涂料0.6升,但实际使用涂料64.68升,求在使用...
  16. Element UI是什么?基本用法
  17. Ubuntu16.04 使用apt-get安装软件时无法自动安装所需要的依赖
  18. 阿里云国际版ECS云服务器Windows系统手动搭建WordPress
  19. 彻底搞懂 SpringBoot jar 可执行原理
  20. 利用pip 和dos 来进行pythom的库的安装

热门文章

  1. 存储过程和transaction
  2. Oracle 11.2.0.4.0 Dataguard部署和日常维护(6)-Active Dataguard篇
  3. 锋利的jQuery-4--图片切换的一个例子(自己理解后写的,以备忘记时看看)
  4. 关于多线程编程您不知道的5 件事---有关高性能线程处理的微妙之处 (转)
  5. 没事学学docker(三):配置阿里云镜像加速以及解决docker起不来的问题
  6. OSPF NSSA区域路由的计算过程与FA值实验
  7. HDU--2502 月之数
  8. Spring Boot教程(二十五)关于RabbitMQ服务器整合
  9. Java 8 并发: Threads 和 Executors
  10. IBM科学家凌棕:欧美国家的智慧交通与管理