1.layer前端组件介绍

layer是一款口碑极佳的web弹层组件,她具备全方位的解决方案,致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富而友好的操作体验。

http://sentsin.com/jquery/layer/

使用方法
http://sentsin.com/jquery/layer/ext.html

在项目中引入layer组件

<script type="text/javascript" src="${pageContext.request.contextPath}/layer/layer.min.js"></script>

2.userlist.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css">
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/layer/layer.min.js"></script>
<script type="text/javascript">
$(function(){
//显示照片
$(".picture").click(function(){
//引入layer.ext.js
layer.use('extend/layer.ext.js');
$.getJSON("${pageContext.request.contextPath}/picture/getpic",{"picture.uid":this.lang},function(data){
layer.photos({
html:"", //网页路径,表示左边显示图片,右边可以显示一个网页用于介绍图片
json: data
});
});
});
});
</script>
</head>
<body>
用户列表
<br>
<br>
<table class="bordered">
<thead>
<tr><th>序号</th><th>用户名</th><th>密码</th><th>照片</th><th>删除</th><th>修改</th></tr>
</thead>
<!-- USERLIST,cuser,s存入的Stack Context -->
<s:iterator value="#USERLIST" id="cuser" status="s">
<tr>
<td><s:property value="#s.index+1"/></td>
<td><s:property value="#cuser.userName"/></td>
<td><s:property value="#cuser.pwd"/></td>
<td><a href="#" class="picture" lang="<s:property value="#cuser.id"/>">照片</a></td>
<td><a href="#" class="delete" lang="<s:property value="#cuser.id"/>!<s:property value="#cuser.userName"/>">删除</a></td>
<td><a href="#" class="modify" lang="<s:property value="#cuser.id"/>">修改</a></td>
</tr>
</s:iterator>
</table>
<br>
<br>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a>
</body>
<!-- 调试
Value Stack 访问时不用加#
Stack Context 访问时要加#
-->
<s:debug></s:debug>
</html>

3.PictureAction

/**
* 得到当前用户所有照片的json字符串
* @return
* @throws IOException
* @throws SQLException
* @throws ClassNotFoundException
* @throws NamingException
*/
public String getpic() throws IOException, SQLException, ClassNotFoundException, NamingException{
PictureDAO dao=new PictureDAO();
//从数据库中通过当前用户id获取当前用户的所有图片
ArrayList<Picture> list = dao.getPicture(picture.getUid());
//获取网站部署的根目录
String path=ServletActionContext.getRequest().getContextPath();
//调用PictureService中的getJSON方法
String json=PictureService.getJSON(list, path);
response.setCharacterEncoding("utf-8");
out=response.getWriter();
out.print(json);
//输出到控制台看一看
System.out.println(json);
return null;
}

4.PictureDAO

/**
* 通过uid(当前用户id)从数据库获得当前用户的所有照片
* @param id
* @return
* @throws SQLException
* @throws NamingException
*/
public ArrayList<Picture> getPicture(int id) throws SQLException, NamingException
{
if(conn.isClosed())
{
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
conn = ds.getConnection();
}
ArrayList<Picture> pics=new ArrayList<Picture>();
sql="select * from pictures where uid = ?";
ps=conn.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Picture pic =new Picture();
pic.setId(rs.getInt(1));
pic.setUid(rs.getInt(2));
pic.setName(rs.getString(3));
pic.setUrl(rs.getString(4));
pics.add(pic);
}
conn.close();
return pics;
}

5.创建一个PictureService类来组装json数据

package mypicture;

import java.util.ArrayList;

/**
* 收到所有照片,返回一个json字符串
*/
public class PictureService { public static String getJSON(ArrayList<Picture> list,String contextPath)
{
//字符串连接
StringBuilder str = new StringBuilder();
str.append("{");
//请求的状态,1表示成功,其它表示失败 \"转译字符,代表 ""
str.append("\"status\": 1, ");
//状态提示语
str.append("\"msg\": \"照片\", ");
//相册标题
str.append("\"title\": \"whr的相册\", ");
//相册id
str.append("\"id\": 0, ");
//初始显示的图片序号,默认0
str.append("\"start\": 0, ");
str.append("\"data\": [ ");
//处理照片
for (int i = 0; i < list.size(); i++) {
str.append("{");
//图片名
str.append("\"name\": \"" + list.get(i).getName() + "\", ");
//图片id
str.append("\"pid\": 0, ");
//注意这个中间的是左斜杠,若是写成右斜杠"\\"出不来结果
//图片路径
str.append("\"src\": \""+ contextPath + "/" +list.get(i).getUrl() + "\", ");
//缩略图地址
str.append("\"thumb\": \"\", ");
//原图宽高
str.append("\"area\": [600,800] " );
str.append("}");
//不是最后一项的话,加上,号
if (i < list.size()-1) {
str.append(",");
}else {
break;
}
}
str.append("]");
str.append("}");
return str.toString();
}
}

6.可以对能接受的上传文件的大小进行修改

在struts.xml中修改常量struts.multipart.maxSize

<!-- 控制上传文件大小 3个0表示Kb,6个0表示Mb,这里为10Mb-->
<constant name="struts.multipart.maxSize" value="10000000"/>

Struts2(九.利用layer组件实现图片显示功能)的更多相关文章

  1. 利用Layer组件弹出多个对话框(非嵌套)与关闭及刷新

    页面A中弹出页面B,在页面B中弹出页面C,在layer做嵌套ifframe弹出时会遇到C页面被嵌套在B页面中,如果C尺寸大于B,则C将不能显示完整.这个时候可以考虑B,C页面均由A页面弹出从而避免嵌套 ...

  2. struts2中利用POI导出Excel文档并下载

    1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...

  3. 前台利用jcrop做头像选择预览,后台通过django利用Uploadify组件上传图最终使用PIL做图像裁切

    之前一直使用python的PIL自定义裁切图片,今天有需求需要做一个前端的选择预览页面,索性就把这个功能整理一下,分享给大家. 实现思路: 1.前端页面: 用户选择本地一张图片,然后通过鼠标缩放和移动 ...

  4. Android学习笔记:使用ViewPager组件实现图片切换

    在很多App中,尤其是第一次安装启动后,都会出现几个图片进行一些app的介绍和说明,图片可以随着滑动而切换. 我们这里利用 ViewPager组件来演示如何实现这一点. 1.创建一个app工程,默认创 ...

  5. 微信小程序把玩(二十九)video组件

    原文:微信小程序把玩(二十九)video组件 视频播放组件与图片加载组件也没啥差别,使用起来也没啥注意的 重要属性: wxml <!--监听button点击事件--> <button ...

  6. Django【第23篇】:利用Form组件和ajax实现的注册

    利用Form组件和ajax实现的注册 一.注册相关的知识点 1.Form组件 我们一般写Form的时候都是把它写在views视图里面,那么他和我们的视图函数也不影响,我们可以吧它单另拿出来,在应用下面 ...

  7. Struts2漏洞利用实例

    Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...

  8. 【重构】 利用 cos 组件实现jsp中上传附件

    利用JSP&Servlet重构项目 利用 cos 组件实现jsp中上传附件 fileUpload.jsp --> FileUploadController.java --> fil ...

  9. 如何利用CSS代码使图片和文字在同一行显示且对齐

    对于初学css的新手朋友来说,经常会遇到这样一个问题,当文字和图片出现在同一行或者同一个div里面的时候,在浏览器中运行出来的显示效果往往是在不同的行,那么,我们怎么才能利用CSS代码使图片和文字在同 ...

随机推荐

  1. webapp前端性能优化规范

    加载优化 合并css javascript 合并小图片 使用雪碧图 缓存一切可缓存的资源 使用长的cache 使用外链式引用css,javascript 压缩HTML,CSS,JAVASCRPT 启用 ...

  2. POJ 1753 Flip Game (状态压缩 bfs+位运算)

    Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 square ...

  3. 使用ITextSharper小结

    用到了生成PDF版的合同,上网研究了一圈,发现不需要服务器端安装插件的,比较好用的就是这个ITextSharper了,于是便开始了研究. 1.解决汉字不显示的问题,指定一下字体,默认的字体好像不支持中 ...

  4. TortoiseSVN 分支创建与合并

    前提准备: 确保本地Work Copy 和 服务器上的 版本一致.( 所有代码都提交到SVN,并update一次) 1  从主干创建分支代码 在本地Work Copy  选中项目文件夹,鼠标右键选择 ...

  5. 使用BSRR和BRR寄存器直接操作STM32的I/O端口

    STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'. GPIOx_BSRR的高16位中每 ...

  6. 给requests模块添加请求头列表和代理ip列表

    Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,符合了Python语言的思想,通俗的说去繁存 ...

  7. jQuery 遍历 - children() 方法 获取指定id下子元素的值

    <a id="Aobj_2_2" class="" specid="2" specvid="2" href=&qu ...

  8. 类似"音速启动"的原创工具简码"万能助手"在线用户数终于突破100了!

    原本只是开发出来方便自己的一个小工具,看到群友也喜欢,就随手分享了, 经过1个多月的自然积累,在线用户数终于突破100了,这增长速度实在让人泪奔~ 博客园的朋友如果看到,喜欢的话就拿去用吧, 万能助手 ...

  9. 【2018 ICPC亚洲区域赛南京站 A】Adrien and Austin(博弈)

    题意: 有一排n个石子(注意n可以为0),每次可以取1~K个连续的石子,Adrien先手,Austin后手,若谁不能取则谁输. 思路: (1) n为0时的情况进行特判,后手必胜. (2) 当k=1时, ...

  10. 百度地图定位JSP代码

    附:百度地图API:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a1b0?qq-pf-to=pcqq.c2c &l ...