zoukankan      html  css  js  c++  java
  • 瀑布流ajax分页

    index.jsp

     1 <%@ page language="java" pageEncoding="UTF-8"%>
     2 <!DOCTYPE HTML>
     3 <html>
     4     <head>
     5         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
     6         <title>图片</title>
     7         <script src="${pageContext.request.contextPath}/dwz/js/jquery-1.7.2.js" type="text/javascript"></script>
     8         <script src="${pageContext.request.contextPath}/common/waterfall/waterfall.js" type="text/javascript"></script>
     9         <link rel="stylesheet" href="${pageContext.request.contextPath}/common/waterfall/waterfall.css" type="text/css" media="screen" />
    10         <script type="text/javascript" src="${pageContext.request.contextPath}/common/lightview/js/google/swfobject.js"></script>
    11         <!--[if lt IE 9]>
    12           <script type="text/javascript" src="${pageContext.request.contextPath}/common/lightview/js/excanvas/excanvas.js"></script>
    13         <![endif]-->
    14         <script type="text/javascript" src="${pageContext.request.contextPath}/common/lightview/js/spinners/spinners.min.js"></script>
    15         <script type="text/javascript" src="${pageContext.request.contextPath}/common/lightview/js/lightview/lightview.js"></script>
    16         <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/common/lightview/css/lightview/lightview.css" />
    17     </head>
    18     <body>
    19         <div id="container">
    20             ${init}
    21         </div>
    22         <script>
    23             var opt = {
    24                 getResource:function(index,render){//index为已加载次数,render为渲染接口函数,接受一个dom集合或jquery对象作为参数。通过ajax等异步方法得到的数据可以传入该接口进行渲染,如 render(elem)
    25                     if(index>= ${totalPageNum}){// index=index%${totalPageNum}+1;
    26                         return $("");
    27                     }else{
    28                         var html = $.ajax({
    29                                                     type:"post",
    30                                                     url:"${pageContext.request.contextPath}/multimedia/image/index.do",
    31                                                     data:({index:index}),
    32                                                     async:false,
    33                                                     dataType:"html"
    34                                                 }).responseText;
    35                         return $(html);
    36                     }
    37                 },
    38                 auto_imgHeight : true,
    39                 insert_type : 1
    40             }
    41             $("#container").waterfall(opt);
    42         </script>
    43     </body>
    44 </html>

    DisplayImageAction.java

      1 package com.movo.multimedia.struts.action;
      2 
      3 import java.awt.geom.AffineTransform;
      4 import java.awt.image.AffineTransformOp;
      5 import java.awt.image.BufferedImage;
      6 import java.io.File;
      7 import java.io.PrintWriter;
      8 import java.util.ArrayList;
      9 import java.util.HashSet;
     10 import java.util.List;
     11 import java.util.Set;
     12 
     13 import javax.imageio.ImageIO;
     14 import javax.servlet.http.HttpServletRequest;
     15 import javax.servlet.http.HttpServletResponse;
     16 
     17 import org.apache.commons.io.FileUtils;
     18 import org.apache.struts.action.Action;
     19 import org.apache.struts.action.ActionForm;
     20 import org.apache.struts.action.ActionForward;
     21 import org.apache.struts.action.ActionMapping;
     22 
     23 import com.movo.util.Utils;
     24 
     25 public class DisplayImageAction extends Action {
     26 
     27     @Override
     28     public ActionForward execute(ActionMapping mapping, ActionForm form,
     29             HttpServletRequest request, HttpServletResponse response)
     30             throws Exception {
     31         PrintWriter out = response.getWriter();
     32         String[] imageSuffix = new String[]{"jpg","jpeg","bmp","png","gif"};
     33         String[] flashSuffix = new String[]{"swf"};
     34         String[] quicktimeSuffix = new String[]{};
     35         String basePath = "D:\2011-12-28\tomcat\apache-tomcat-6.0.35\webapps\newwork\";
     36         String dirPath = basePath + "userfiles\imageLibrary\";
     37         String dirThumbPath = basePath + "userfiles\imageThumbLibrary\";
     38         Set<File> set = new HashSet<File>();
     39         set = this.getFiles(dirPath,set);
     40         int index = 0;
     41         try{
     42             index = Integer.parseInt(request.getParameter("index"));
     43         }catch(Exception e){
     44         }
     45         if(index == -1){
     46             request.getRequestDispatcher("indexDetails.jsp").forward(request,response);
     47         }else{
     48             int perCount = 30;
     49             StringBuffer buf = new StringBuffer();
     50             List<File> list = new ArrayList<File>();
     51             list.addAll(set);
     52             int totalPageNum = (list.size() + perCount - 1) / perCount;
     53             for(int i = ((index) * perCount);i < (index + 1) * perCount && i < list.size();i++){
     54                 String path = list.get(i).getAbsolutePath();
     55                 String suffix = Utils.getInstance().getExtByUrl(list.get(i).getName());
     56                 boolean imageTag = false;
     57                 boolean flashTag = false;
     58                 boolean quicktimeTag = false;
     59                 for(String str : imageSuffix){
     60                     if(suffix.equalsIgnoreCase(str)){
     61                         imageTag = true;
     62                         break;
     63                     }
     64                 }
     65                 if(!imageTag){
     66                     if(!quicktimeTag){
     67                         for(String str : quicktimeSuffix){
     68                             if(suffix.equalsIgnoreCase(str)){
     69                                 quicktimeTag = true;
     70                                 break;
     71                             }
     72                         }
     73                     }else{
     74                         for(String str : flashSuffix){
     75                             if(suffix.equalsIgnoreCase(str)){
     76                                 flashTag = true;
     77                                 break;
     78                             }
     79                         }
     80                     }
     81                 }
     82                 String thumbPath = dirThumbPath;
     83                 if(imageTag){
     84                     thumbPath += path.replace(dirPath,"");
     85                 }else if(flashTag){
     86                     thumbPath += "15330T5C-11.png";
     87                 }else if(quicktimeTag){
     88                     thumbPath += "15330U928-22.png";
     89                 }
     90                 File thumbFile = new File(thumbPath);
     91                 if(!thumbFile.exists()){
     92                     File tempFile = new File(thumbFile.getAbsolutePath().replace(thumbFile.getName(),""));
     93                     tempFile.mkdirs();
     94                     if(imageTag){
     95                         this.thumbnails(new File(path),thumbFile);
     96                     }else if(flashTag){
     97                         String temp = request.getSession().getServletContext().getRealPath("\") + "images\15330T5C-11.png";
     98                         FileUtils.copyFile(new File(temp),thumbFile);
     99                     }else if(quicktimeTag){
    100                         String temp = request.getSession().getServletContext().getRealPath("\") + "images\15330U928-22.png";
    101                         FileUtils.copyFile(new File(temp),thumbFile);
    102                     }
    103                 }
    104                 path = path.replace(basePath,Utils.BASEURL);
    105                 path = path.replace("\","/");
    106                 thumbPath = thumbPath.replace(basePath,Utils.BASEURL);
    107                 thumbPath = thumbPath.replace("\","/");
    108                 if(imageTag){
    109                     buf.append("<div class="cell"><a class="lightview" data-lightview-type="image" data-lightview-group="test"  data-lightview-caption="").append(list.get(i).getAbsolutePath()).append(""  data-lightview-title="").append(list.get(i).getName()).append("" href="").append(path).append(""><img width="193" src="").append(thumbPath).append("" /></a></div>");
    110                 }else if(flashTag){
    111                     buf.append("<div class="cell"><a class="lightview" data-lightview-type="flash" data-lightview-group="test" data-lightview-title="").append(list.get(i).getName()).append("" href="").append(path).append(""><img width="193" src="").append(thumbPath).append("" /></a></div>");
    112                 }else if(quicktimeTag){
    113                     buf.append("<div class="cell"><a class="lightview" data-lightview-type="quicktime" data-lightview-group="test" data-lightview-options="params:{controller: true,autoplay: true}" data-lightview-title="").append(list.get(i).getName()).append("" href="").append(path).append(""><img width="193" src="").append(thumbPath).append("" /></a></div>");
    114                 }
    115             }
    116             if(index == 0){
    117                 request.setAttribute("init",buf.toString());
    118                 request.setAttribute("totalPageNum",totalPageNum);
    119                 request.getRequestDispatcher("index.jsp").forward(request,response);
    120             }else{
    121                 out.println(buf.toString());
    122             }
    123         }
    124         return null;
    125     }
    126     public Set<File> getFiles(String dirPath,Set<File> set){
    127         File dir = new File(dirPath);
    128         if(dir.isDirectory() && dir.exists()){
    129             File[] files = dir.listFiles();
    130             if(files != null){
    131                 for(File file : files){
    132                     if(file.isDirectory()){
    133                         this.getFiles(file.getAbsolutePath(),set);
    134                     }else{
    135                         set.add(file);
    136                     }
    137                 }
    138             }
    139         }else if(dir.isFile() && dir.exists()){
    140             set.add(dir);
    141         }
    142         return set;
    143     }
    144     private void thumbnails(File fi,File fo){
    145         try {
    146            AffineTransform transform = new AffineTransform();
    147            BufferedImage bis = ImageIO.read(fi);
    148 
    149            int w = bis.getWidth();
    150            int h = bis.getHeight();
    151 
    152             int nw = 193;
    153             int nh = (nw * h) / w;
    154 
    155            double sx = (double)nw / w;
    156            double sy = (double)nh / h;
    157 
    158           transform.setToScale(sx,sy);
    159 
    160           AffineTransformOp ato = new AffineTransformOp(transform, null);
    161           BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
    162           ato.filter(bis,bid);
    163           ImageIO.write(bid, "jpg", fo);
    164        } catch(Exception e) {
    165            e.printStackTrace();
    166        }
    167     }
    168 }

     效果如下图:

  • 相关阅读:
    const用法详解(转)
    [转]Scintilla开源库使用指南
    javascript 流程控制语句 if 语句
    knockout.js 练习一
    深入Node.js的模块机制
    js本地存储解决方案(localStorage与userData)
    linear-gradient 渐变 css3新属性
    制作响应式网站时,用来测试不同宽度下网页展示效果的方法
    zepto.js, django和webpy
    attachEvent 与 addEventListener 的用法、区别
  • 原文地址:https://www.cnblogs.com/movosoft/p/3697125.html
Copyright © 2011-2022 走看看