java做类似于qq空间动态加载_实现类似微博、QQ空间等的动态加载
微博、QQ空间等的动态加载方式属于滚屏加载技术,获取当前滚动条位置来触发onscroll()函数,向服务器发起请求,将请求得到的新的数据动态加载在页面上
本文利用该原理实现了动态加载,但不是检测当前滚动条位置来触发函数,而是由按钮事件触发,因此更简单一些。
走过的弯路
1) 将目前读取到的数据库中的位置存放在session中,当要加载更多的时候,去session中获得该值,动态加载后修改session中的值
错误原因:session是有缓存的,如果停留在当前页面,得到的值还是一开始的session值,就算在该页面进行了修改
2) 将服务器逻辑控制代码通过内嵌的方式放在网页页面中,即通过的方式嵌入
错误原因:这些代码在一开始加载网页的时候,便在服务器端一次执行过后加载在网页中,不会因为网页的后续事件而触发代码段的重新执行
思路
1) 在数据库中,为表项添加一个属性state,用于表示该项是否已经加载
2) 进入该页面时,先将所有的元素的state置0,表示所有的项目都还没加载;通过选中根据一定排序规则排序后的前n项,并将这n项的state置1,表示已经加载
3) 在后续的操作中,若用户想查看更多,选择“加载更多”,即触发加载事件,向服务器发送ajax请求,服务器取得还没加载的项目根据一定排序规则后的前n项,生成网页代码字符串并返回;最后将这n项的state置1
4)当数据库中所有的项目都已加载,则返回0,以供网页端判断处理
注意
1)
网页端通过append()函数动态加载网页元素,无法加载css等,会显示异常,要加上$('#id').trigger("create");才能加
载成功;另外,我的例子中是在jquery
mobile中实现的,为
- 元素动态加载子元素,因此需要刷新
- ,
即$('ul').listview("refresh");
2) Mysql语言中,选择符合条件的记录m到n,不能直接写select * where condition limit m,n
该句的意思是从m开始的n项记录
以上方式利用数据库实现,在实际应用中,若考虑到多用户,则不用采用上述情况,可以考虑使用cookie来存储当前加载位置或者直接在js中利用变量存储当前位置
源码如下:"user_message.jsp"(用于显示留言页)
Document : staff_info
Created on : 2013-7-22, 9:28:58
Author : zengyi
--%>
乘客留言墙
#wrap {
white-space:normal;
word-wrap: break-word;
word-break: break-all;
overflow: hidden;
text-align: left;
}
ResultSet re = null;
Statement stmt = null;
Connection con = null;
String date, descript, time;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connectionUrl = "jdbc:mysql://localhost/wb?" +
"user=root&password=526156";
con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
} catch (SQLException e) {
System.out.println("SQL Exception: "+ e.toString());
}
re = stmt.executeQuery("SELECT * FROM user_message_other order by id DESC limit 10"); //选择前十条未读的显示
%>
乘客留言
data-iconshadow="false" data-icon="arrow-l" data-iconpos="notext"
data-ajax="false">Back
if(re.next()){
if(re.previous()){};
while(re.next()){
descript = re.getString("descrip");
date = re.getString("date");
time = re.getString("time");
%>
%>
发布时间:
%>
}
}
%>
加载更多
var load_pos = 10;
function loadmore(){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
if(xmlhttp.responseText==0){
alert("已加载完所有留言");
}
else{
load_pos += 10;
$('ul').append(xmlhttp.responseText);
$('ul').trigger("create");
$('ul').listview("refresh");
}
}
}
xmlhttp.open("GET","message_load.jsp?load_pos="+load_pos,false);
xmlhttp.send();
}
re.close();
stmt.close();
con.close();
%>
"message_load.jsp"用于服务器端加载信息及返回
Document : update_message
Created on : 2013-5-13, 20:08:31
Author : zengyi
--%>
ResultSet re = null;
Statement stmt = null;
Connection con = null;
String date, descript, time;
int load_pos_start = Integer.parseInt(request.getParameter("load_pos"));
String outstring = "";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String connectionUrl = "jdbc:mysql://localhost/wb?" +
"user=root&password=526156";
con = DriverManager.getConnection(connectionUrl);
stmt = con.createStatement();
re = stmt.executeQuery("SELECT * FROM user_message_other order
by id DESC limit "+load_pos_start+",10"); //从未读的消息中选择十条显示
if(re.next()){
if(re.previous()){};
while(re.next()){
descript = re.getString("descrip");
date = re.getString("date");
time = re.getString("time");
outstring += "
outstring += "
16px; color: white; width: 100%; height: auto;
\">"+descript+"
";
outstring += "
";
outstring += "
";
outstring += "
\">发布时间:"+date+time+"
<
/p>
";
}
out.print(outstring);
}
else{
out.print(0);
}
} catch (SQLException e) {
System.out.println("SQL Exception: "+ e.toString());
} catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
finally{
if (re !=null){
try{ re.close(); }catch(SQLException sqlEx){}
}
if (stmt !=null){
try{ stmt.close(); }catch(SQLException sqlEx){}
}
if (con !=null){
try{ con.close(); }catch(SQLException sqlEx){}
}
}
//-------------------------------------------------
%>
java做类似于qq空间动态加载_实现类似微博、QQ空间等的动态加载相关推荐
- 上拉加载_如何用Vue + Mint UI实现上拉加载更多
引言: 上拉加载更多在移动端不论是在 app 里面还是在页面中都是必不可少的,以下是 mint-ui 中上拉加载更多的总结. 一.在项目中使用 mint-ui 需要先安装 查看官网 (1)安装:npm ...
- 如何将wiki个人空间共享给其他人_青年居室的共享空间设计
"共享"俨然成为青年群体生活的常态化特征.但选择共享,势必要面临隐私保护.公共社交等问题.以居住为例,如何兼顾青年群体的共享需求和隐私需求成为设计师们的思考题.在共享潮流下,青年人 ...
- react 动态修改路由_升级到 React Router 4 并实现动态加载和模块热替换
这篇文章是升级到Webpack2坑--模块热替换失效页面不自动刷新?的后续.那篇文章主要说明了,升级到 Webpack 2 之后,通过升级webpack-dev-server和react-hot-lo ...
- 点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
sina微博: <iframe width="120" height="24" frameborder="0" allowtransp ...
- win10可用空间变成未分配_系统C盘磁盘空间不够用的解决办法
最近很多人咨询大叔,C盘用着用着就没了,100G的使用空间啊,怎么就省寥寥无几的三五G了,或者干脆右下角直接提示可用空间不足了呢 大叔今天就给大家简单教一下,在我们的系统C盘空间不足的情况下如何腾出有 ...
- malloc开辟的空间在哪一个区间_专业指南 | 室内设计和空间设计区别,到底该选哪一个?...
很多想要留学的室内设计同学,在查看各大顶级院校官网信息时,会发现一个新的专业名词"空间设计(Spatial Design)",于是发出疑问: 室内设计不是Interior Desi ...
- 联想拯救者y7000p加内存条_笔记本怎么升级内存和硬盘 联想Y7000P加装内存和硬盘图文教程 (全文)...
一般目前新买的笔记本电脑,大都是标配8GB内存和单块固态硬盘,内存和硬盘容量适中,但对于一些制图设计.偏大型游戏,又或者对硬盘存储要求比较高的用户来说,显然就不太够用,这时候我们一般会通过升级内存和硬 ...
- 动态壁纸安卓_抖音上超火的时间轮盘动态壁纸,安卓苹果都可以设置!个性好看...
今天给大家分享一个最近很火的时间轮盘带姓氏的壁纸 效果呢就像我们现在看到的这样 看起来呢有点像古墓的感觉 同时我们常见的带姓氏的壁纸我也已经给大家准备好了 制作呢也非常的简单 我们只需要在微信的搜索页 ...
- java mysql点赞功能_用Java做一个类似于微博QQ空间点赞的功能-Fun言
点赞是一个互动性很强的功能,网站加入点赞可以增强用户之间的亲密度,可以利用点赞排出受欢迎文章或者其他的列表,所以今天教大家如何做一个类似于微博.QQ空间的点赞功能 需求分析: 首先要明确这个功能是需要 ...
最新文章
- Overall Comparision With WCDMA
- nginx域名配置虚拟主机
- 电子设计基础——电源的各项指标及测量方法
- sql 存储过程中top 后面跟参数的问题
- npm run build 报错 versionRequirement: packageConfig.engines.node 'node' of undefined
- myeclipse怎么创建jframe类_创建型-建造者模式
- Redis基础(四)——持久化
- Win7从VHD中启动 如何扩充虚拟磁盘
- linux内核分析与应用 -- 并发(上)
- 评价微型计算机有哪些主要性能指标,计算机性能指标有哪些
- 海思SDK学习(5)海思媒体处理软件平台MMP(4)VO视频输出
- 工作方式需要主心骨、承载人
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
- 负载均衡之LoadBalancer
- C语言:浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数 (20 分)
- DataFountain
- python实现图片转字符画_Python实现图片转字符画的示例
- 企业服务器采用虚拟化技术的利弊
- Xamarin移动开发的优点和缺点
- mac上AnyProxy安装与使用
热门文章
- 获得百度智能云access token
- python标准化输出
- 配置阿里云docker加速与云镜像配置
- python预测数据怎么写_Python代写时间序列选择波动率预测指数收益算法分析案例...
- java 代码锁_Java 锁的知识总结及实例代码
- 剑桥offer(41~50)
- 关于MOSS列表库新建列表项前的!New标识
- extjs string类型转date_extjs 处理Object格式的Date对象
- php 小程序 活动弹幕,小程序:弹幕效果的消息提示
- java数据结构队列杨辉三角_数据结构之队列——输出杨辉三角形