新闻公布系统笔记一

1.假设字符串太长,想实现鼠标放上去提示出全部的文字,默认显示一部分能够使用这样的方法:

<td><a
title="${commentBack.content }">${fn:substring(commentBack.content,0,15) }...</a></td>    a标签的title属性能够满足须要,fn是jstl的函数标签。

2.分页时要先查询出记录总条数,有时候须要依据条件查询出总条数。全部条件使用and连接。运行sql时会出错,要把第一个and替换为where才干够。

StringBuffer sb=new StringBuffer("select count(*) as total from t_comment");
		if(s_comment.getNewsId()!=-1){
			sb.append(" and newsId="+s_comment.getNewsId());
		}
		if(StringUtil.isNotEmpty(bCommentDate)){
			sb.append(" and TO_DAYS(commentDate)>=TO_DAYS(‘"+bCommentDate+"‘)");
		}
		if(StringUtil.isNotEmpty(aCommentDate)){
			sb.append(" and TO_DAYS(commentDate)<=TO_DAYS(‘"+aCommentDate+"‘)");
		}
		PreparedStatement pstmt=con.prepareStatement(sb.toString().replaceFirst("and", "where"));
		ResultSet rs=pstmt.executeQuery();
		if(rs.next()){
			return rs.getInt("total");
		}else{
			return 0;
		}

3.分页util

public static String getPagation(String targetUrl,int totalNum,int currentPage,int pageSize){}

targetUrl是要传给分页控件显示的地址,totalNum是上面查询出来的总条数。currentPage当前的页数,pageSize页大小

首先须要计算出总页数:int totalPage=totalNum%pageSize==0?

totalNum/pageSize:totalNum/pageSize+1;

假设能够整除,总页数就不会加1,否则总页数要加1.

拼接上一页时,要推断是不是第一页,要分开处理

if(currentPage==1){

pageCode.append("<li class=‘disabled‘><a href=‘#‘>上一页</a></li>");

}else{

pageCode.append("<li><a href=‘"+targetUrl+"&page="+(currentPage-1)+"‘>上一页</a></li>");

}

拼接下一页时,类似处理。

我们最多仅仅显示5页。所以要拼接当前页的前后二条数据。代码例如以下

for(int i=currentPage-2;i<=currentPage+2;i++){

if(i<1 || i>totalPage){

continue;

}

if(i==currentPage){

pageCode.append("<li class=‘active‘><a href=‘#‘>"+i+"</a></li>");

}else{

pageCode.append("<li><a href=‘"+targetUrl+"&page="+i+"‘>"+i+"</a></li>");

}

}

下图是一个拼接的简单图:

以下是完整演示样例代码:

public static String getPagation(String targetUrl,int totalNum,int currentPage,int pageSize){
		int totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
		StringBuffer pageCode=new StringBuffer();
		pageCode.append("<li><a href=‘"+targetUrl+"&page=1‘>首页</a></li>");
		if(currentPage==1){
			pageCode.append("<li class=‘disabled‘><a href=‘#‘>上一页</a></li>");
		}else{
			pageCode.append("<li><a href=‘"+targetUrl+"&page="+(currentPage-1)+"‘>上一页</a></li>");
		}

		for(int i=currentPage-2;i<=currentPage+2;i++){
			if(i<1 || i>totalPage){
				continue;
			}
			if(i==currentPage){
				pageCode.append("<li class=‘active‘><a href=‘#‘>"+i+"</a></li>");
			}else{
				pageCode.append("<li><a href=‘"+targetUrl+"&page="+i+"‘>"+i+"</a></li>");
			}

		}

		if(currentPage==totalPage){
			pageCode.append("<li class=‘disabled‘><a href=‘#‘>下一页</a></li>");
		}else{
			pageCode.append("<li><a href=‘"+targetUrl+"&page="+(currentPage+1)+"‘>下一页</a></li>");
		}
		pageCode.append("<li><a href=‘"+targetUrl+"&page="+totalPage+"‘>尾页</a></li>");
		return pageCode.toString();
	}

4.分页后台查询处理dao层

须要在dao查询时传入一个PageBean參数,然后再拼接上

if(pageBean!=null){

sb.append(" limit "+pageBean.getStart()+","+pageBean.getPageSize());

}

limit  为分页准备的keyword。

以下的查询还包括了其它一些条件。

commentdate是前台通过时间控件传回的日期值,TO_DAYS()

mysql内部函数。date的形式为2015-07-06。

TO_DAYS(‘2015-06-7‘)返回736121, 返回一个天数
(从年份0開始的天数 )

完整代码:

public List<Comment> commentList(Connection con,Comment s_comment,PageBean pageBean,String bCommentDate,String aCommentDate)throws Exception{
		List<Comment> commentList=new ArrayList<Comment>();
		StringBuffer sb=new StringBuffer("select * from t_comment t1,t_news t2 where t1.newsId=t2.newsId");
		if(s_comment.getNewsId()!=-1){
			sb.append(" and t1.newsId="+s_comment.getNewsId());
		}
		if(StringUtil.isNotEmpty(bCommentDate)){
			sb.append(" and TO_DAYS(t1.commentDate)>=TO_DAYS(‘"+bCommentDate+"‘)");
		}
		if(StringUtil.isNotEmpty(aCommentDate)){
			sb.append(" and TO_DAYS(t1.commentDate)<=TO_DAYS(‘"+aCommentDate+"‘)");
		}
		sb.append(" order by t1.commentDate desc ");
		if(pageBean!=null){
			sb.append(" limit "+pageBean.getStart()+","+pageBean.getPageSize());
		}
		PreparedStatement pstmt=con.prepareStatement(sb.toString());
		ResultSet rs=pstmt.executeQuery();
		while(rs.next()){
			Comment comment=new Comment();
			comment.setCommentId(rs.getInt("commentId"));
			comment.setNewsId(rs.getInt("newsId"));
			comment.setNewsTitle(rs.getString("title"));
			comment.setContent(rs.getString("content"));
			comment.setUserIP(rs.getString("userIP"));
			comment.setCommentDate(DateUtil.formatString(rs.getString("commentDate"), "yyyy-MM-dd HH:mm:ss"));
			commentList.add(comment);
		}
		return commentList;
	}

5.form表单中的东西 通过submitbutton提交之后,就会消失,假设要保留,须要把他们在后台存到session之中,然后再前台通过el表达式获取。

也能够通过这个区分是查询还是,通过分页请求的后台。获取不同的參数。

if(StringUtil.isEmpty(page)){
			page="1";
			session.setAttribute("s_bCommentDate", s_bCommentDate);
			session.setAttribute("s_aCommentDate", s_aCommentDate);
		}else{
			s_bCommentDate=(String) session.getAttribute("s_bCommentDate");
			s_aCommentDate=(String) session.getAttribute("s_aCommentDate");
		}

6.My97日期控件

设置開始日期小于结束日期:

開始日期的input id = "startDate"

结束日期的input id = "endDate"

日期 从:<input id="startDate" class="Wdate" type="text" onFocus="var endDate=$dp.$(‘endDate‘);WdatePicker({onpicked:function(){endDate.focus();},maxDate:‘#F{$dp.$D(\‘endDate\‘)}‘})"/>

<input id="endDate" class="Wdate" type="text" onFocus="WdatePicker({minDate:‘#F{$dp.$D(\‘startDate\‘)}‘})"/>

时间: 2024-12-20 21:05:21

新闻公布系统笔记一的相关文章

新闻公布系统 (Asp.net 三层架构 )

2012年度课程设计---新闻公布系统(小结) -----Presented By [email protected] Tips:因本课程设计大部分代码皆有本人短时间仓促码成,界面恶心,代码丑陋.唯一长处便是:        所有代码都已贴上,而且所有都已凝视.另外与Asp.net教程结合恰当,通俗易懂,easy上手. 需求 新闻公布系统需求III NewsPublish(简称NP) 功能说明 本项目用于对新闻公布进行管理. 1.查看新闻 全部新闻按时间按降序排列: 用户登录后在自己主页能够查看

【牛腩新闻公布系统】----你的验证码正确么

前言 这是一个奇妙的站点--牛腩新闻公布系统,尽管做的不咋地,但毕竟是自己动手敲出来,还是有一点点的满足感.同一时候这也是小编的第一个雠小鸭,长相不算美丽,发育还是挺健全的. 终有一天我的丑小鸭会变成白天鹅. 一步一步的进化,一步一步的蜕变-- 你的验证码正确么 哎呀--为什么我的牛腩新闻公布系统   请输入验证码的图片一直为这个样子呀--不显示,就是不显示图片,图片载入出错呀. 想想预计是图片路径不对. 尝试一:牛老师说的图片载入路径 <img src="handler/WaterMar

【牛腩新闻公布系统】WebForms UnobtrusiveValidationMode 须要“jquery”ScriptResourceMapping。

问题:       WebForms UnobtrusiveValidationMode须要"jquery"ScriptResourceMapping. 请加入一个名jquery (区分大写和小写)的 ScriptResourceMapping.       解决的方法:      在后台中Page_Load中增加例如以下语句就OK了. <em> <strong> protected void Page_Load(object sender, EventArgs

承上启下——牛腩新闻公布系统总结

牛腩新闻公布系统视频前段时间已经看完了,但一直没有总结.系统是做完了,但还是有非常多遗留的问题.本来想看完ASP.NET的视频以后再回来改,可这系统越放着就越不想再去改. 再拿起这个系统,调整调整了非常多格式不足的地方,最终公布成功了! 牛老师的视频能够分成下面几个部分: 一是准备: 包含文档.绘图部分,设计数据库等内容.这也是整个系统的整体规划和设计阶段,它起着举足轻重的地位,它是基础.前提.但也总是被非常多人忽略. 二是后台: 与前台相比,后台更easy理解和学习,主要是功能的实现,当中非常

牛腩新闻公布系统--学习Web的小技巧汇总

2014年11月10日,是个难忘的日子.这一天.小编的BS学习開始了.BS的开头,从牛腩新闻公布系统開始.之前学习的内容都是CS方面的知识,软考过后.開始学习BS,接触BS有几天的时间了,跟着牛腩老师敲着牛腩新闻公布系统,感觉棒棒哒,看了前面二十集.发现牛腩老师真的是把党的思想贯彻的淋漓尽致,跟着牛腩老师一起学习,发现了非常多让我怦然心动的小知识,每次都让我的小宇宙爆发,如今就把这些小技巧分享给小编的小伙伴.该博文小编主要解说三个方面的知识.第一:怎样让代码整齐美观,第二:代码的凝视,第三:连接

牛腩新闻发布系统笔记——怎么写CSS

根据这牛腩学习敲新闻发布系统已经有一段时间了,挺佩服牛腩的,讲那么多东西,我听着也不觉得枯燥,反而有种,一不留神就会错过很多东西的感觉,所以有些地方也是重复又重复的在看. 这篇博客就总结总结小编在学习牛腩新闻发布系统的时候一些笔记.可能知识还比较原生态,but who cares.现在先提炼出来,以后慢慢的体会和升华吧. 牛腩一部分可以说是和机房相似,也是让我从.net到c#的一个过渡.中间一部分就是讲div +css了.里面的知识说多也不多的,根据不同的需求,它又有各种变形和组合,这加起来就有

牛腩新闻公布系统小结

学习牛腩时,也刚刚结束个人重构,所曾经面差点儿相同1/3的部分感觉都非常熟悉,非常上手,包含数据库设计和B.D层代码的编写.当中重新理解了SQLHelper的完美演化.存储过程的强大.使用了触发器初探(触发器建好以后看不到,但能够查询出来,后来发现原来在每张表的以下),接着就是站点的建立,事实上和三层差点儿相同,web层相当于我们的UI层,仅仅只是之前我们的控件放在窗口中.如今放在网页中,然后引用CSS样式来控制html中各控件属性,真正做到网页表现与内容分离的一种样式设计语言 . 接着是各个网

新闻发布系统笔记二

1.批量删除的实现:首先是前端的checkbox,实现点击最上面的复选框,会全选或者取消下面的复选框选择状态. 通过jquery实现,涉及了一个属性选择器,用来选择结点或者设置属性.prop法,$("input[name='commentIds']").prop("checked",true); 这一句是设置所有name属性是commentIds的结点checked属性为true.代码如下: $(document).ready(function(){ $("

新闻发布系统笔记一

1.如果字符串太长,想实现鼠标放上去提示出所有的文字,默认显示一部分可以使用这种方法: <td><a title="${commentBack.content }">${fn:substring(commentBack.content,0,15) }...</a></td>    a标签的title属性可以满足需要,fn是jstl的函数标签. 2.分页时要先查询出记录总条数,有时候需要根据条件查询出总条数,所有条件使用and连接,执行sq