`
knight_black_bob
  • 浏览: 857925 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文章分页 及 动态列表 静态 详细内容 思想

    博客分类:
  • web
阅读更多

 

 

 

 为什么用动态列表加静态详细页面?

便于开发和维护……实际上是可以全部动态,文章放到fckediter中,但是网页编辑没有css基础是很难做好的,现在我们可以通过上传jsp的形式注入jsp,达到动态化。。。。。

 

 缺陷:

文章内容的分词搜索 就不可能实现,,,,

 

 

 

 


 

 



 

 

 

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=9" />
<link href="../css/comm.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../js/comm/comm.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../image/bitbug_favicon.ico" />
<script type='text/javascript'>
$(function(){
	$.selfReturnTop('returnTOP','.articleMain');
	var a =  "${session_user}";
	if(a==''){
		var documentWidth = $(document).width();
		$('.header').css({
			width:documentWidth,
		});
		$('body').css('background','#FFF');
	};
});
</script>
<title>栏目详情页</title>
</head>
<body>
	<%@ include file="../common/header_long.jsp"%>
	<div style='width:1200px;margin:0 auto; background:#FFF;'>
	<div class='articleMain'>
		<!-- articleBox -->
		
		<div class='articleBody'>
			<h1>${article.articleTitle} 
				<font>发布时间:${article.insertTime}</font>
			</h1>
			<!-- 引入文章主体内容 --> 

			<jsp:include page="../article/${article.topage}" flush="true" />
			<h3>
				<span>来源:${article.source}</span>
				<span>浏览量:${article.count}次</span>
			</h3>
			<h4>
				<font class='prev'>
				<s:if test="#request.beforeArticle != null">
				<a href="<%=request.getContextPath()%>/user/getArticleDetail.action?articleId=${beforeArticle.articleId}">< 查看上一篇</a>
				</s:if>
				<s:if test="#request.beforeArticle == null">
				 已到最前  
				</s:if>
				</font>
				<font class='next'>
				<s:if test="#request.nextArticle != null">
				<a href="<%=request.getContextPath()%>/user/getArticleDetail.action?articleId=${nextArticle.articleId}">> 查看下一篇</a>
				</s:if>
				<s:if test="#request.nextArticle == null">
					 已到最后 
				</s:if> 
				</font>
			</h4>
		</div>	
		</div>
	</div>
	<%@ include file="../common/foot_long.jsp"%>
</body>
</html>

 

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=9" />
<link href="../css/comm.css" rel="stylesheet" type="text/css" />
<link href="../css/jBootsrapPage.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../js/comm/comm.js"></script>
<script type="text/javascript" src="../js/jBootstrapPage/jBootstrapPage.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../image/bitbug_favicon.ico" />
<style>
html { overflow-x: hidden;}
</style>
<script type='text/javascript'>
$(function(){
	$.selfReturnTop('returnTOP','.articleMain');
	var a =  "${session_user}";
	if(a==''){
		var documentWidth = $(document).width();
		$('.header').css({
			width:documentWidth,
		});
		$('body').css('background','#FFF');
	};
});

function write(pageSize,total,pageIndex){ 
   var url = "<%=request.getContextPath()%>/user/getArticleTableInfo.action?limit=" + pageSize + "&offset=" +pageIndex; 
	$.ajax({
	    cache: true,
	    type: "post",
	    url:url, 
	    dataType: "json",
	    
	    async: false,
	    error: function(data) {
	    },
	    success: function(data) {  
	    	var sum = data.total;
	    	var jsonList= data.rows ; 
	    	var htmlContent='';
			for(var i=0;i<jsonList.length;i++){
				
				if (jsonList[i].hasImage >0) {  
					htmlContent +='<div class="articleBox">'+
					'<h2>'+
						'<span>【'+ jsonList[i].category+'】</span>'+
						'<b>'+ jsonList[i].articleTitle+'</b>'+
						'<font>发布时间:'+ jsonList[i].insertTime+'</font>'+
					'</h2>'+
					'<div class="hasImg">'+
						'<div class="articleImg"> <img src="a.png"> </div>'+
						 jsonList[i].articleContent+' <a href="<%=request.getContextPath()%>/user/getArticleDetail.action?articleId='+jsonList[i].articleId +'"> 查看全文 ></a>'+
					'</div>'+
					'<h3>'+
						'<span>来源:'+ jsonList[i].source+'</span>'+
						'<span>浏览量:'+ jsonList[i].count+'次</span>'+
					'</h3>'+
				'</div>'; 
				}else{ 
					htmlContent +='<div class="articleBox">'+
					'<h2>'+
						'<span>【'+ jsonList[i].category+'】</span>'+
						'<b>'+ jsonList[i].articleTitle+'</b>'+
						'<font>发布时间:'+ jsonList[i].insertTime+'</font>'+
					'</h2>'+
					'<div>'+
					   jsonList[i].articleContent+'<a href="<%=request.getContextPath()%>/user/getArticleDetail.action?articleId='+jsonList[i].articleId +'"> 查看全文 ></a>'+
					'</div>'+
					'<h3>'+
						'<span>来源:'+ jsonList[i].source+'</span>'+
						'<span>浏览量:'+ jsonList[i].count+'次</span>'+
					'</h3>'+
				'</div> '; 
				}
			}  
		$('.articleMain').html(htmlContent); 
	    }
	});    
}


$(function(){
	var size=0; 
	
		$.ajax({
	    cache: true,
	    type: "POST",
	    url:'<%=request.getContextPath()%>/user/getArticleCount.action', 
	    dataType: "json",
	    async: false,
	    error: function(data) {
	    },
	    success: function(data) { 
	     size = data.total;  
	    }
	});  
	var bottonsize= size /5 +1;	
		
    createPage(5, bottonsize, size);
	//
	$('a[page="1"]').click();
	
    function createPage(pageSize, buttons, total) {
        $(".pagination").jBootstrapPage({
            pageSize : pageSize,
            total : total,
            maxPageButton:buttons,
            onPageClicked: function(obj, pageIndex) {
            	write(pageSize,total,pageIndex);
            }
        });
    }

    
    
    
    $('.btn1').click(function(){
    	var size=0; 
    	
		$.ajax({
	    cache: true,
	    type: "POST",
	    url:'<%=request.getContextPath()%>/user/getArticleCount.action', 
	    dataType: "json",
	    async: false,
	    error: function(data) {
	    },
	    success: function(data) { 
	     size = data.total;  
	    }
	});  
	var bottonsize= size /5 +1;	
		
    createPage(5, bottonsize, size); 
		$('a[page="1"]').click();
    });

    $('.btn2').click(function(){
var size=0; 
    	
		$.ajax({
	    cache: true,
	    type: "POST",
	    url:'<%=request.getContextPath()%>/user/getArticleCount.action', 
	    dataType: "json",
	    async: false,
	    error: function(data) {
	    },
	    success: function(data) { 
	     size = data.total;  
	    }
	});  
	var bottonsize= size /5 +1;	
		
    createPage(10, bottonsize, size); 
		$('a[page="1"]').click();
    });

    $('.btn3').click(function(){
var size=0; 
    	
		$.ajax({
	    cache: true,
	    type: "POST",
	    url:'<%=request.getContextPath()%>/user/getArticleCount.action', 
	    dataType: "json",
	    async: false,
	    error: function(data) {
	    },
	    success: function(data) { 
	     size = data.total;  
	    }
	});  
	var bottonsize= size /5 +1;	
		
    createPage(15, bottonsize, size); 
		$('a[page="1"]').click();
    });
       
});
</script>
<title>栏目列表页</title>
</head>
<body>
	<%@ include file="../common/header_long.jsp"%>
	<div style='width:1200px; background:#FFF; margin:0 auto;'>		
		<div class='articleMain'>
			<!-- 文章区 -->
			
			<!-- 图片样式 
				
			-->
			
		</div>
		<div class='articleBtn'>
			<div class='articleBtnBox'>共300条记录,每页显示<font>5<i></i></font>条
				<ol class='articleBtnOl' style='display:none;'>
					<li class='btn1'>5</li>
					<li class='btn2'>10</li>
					<li class='btn3'>15</li>
				</ol>
			</div>
			<ul class="pagination"></ul>
			<div class='clearBoth'></div>
		</div>
	</div>
	<%@ include file="../common/foot_long.jsp"%>
</body>
</html>

 

package com.fusionability.web.bean;
/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年6月30日 下午1:57:35
 * 类说明
 */
public class Article {
//	articleId,articleTitle,articleContent,insertTime,category,source,topage,count,image,hasImage,desc
	
	private String articleId;
	private String articleTitle;
	private byte[] articleContent;
	private String insertTime;
	private String category;
	private String source;
	private String topage;
	private long count;
	private String image;
	private int  hasImage;
	private String des;
	
	
	
	public String getArticleId() {
		return articleId;
	}
	public void setArticleId(String articleId) {
		this.articleId = articleId;
	}
	public String getArticleTitle() {
		return articleTitle;
	}
	public void setArticleTitle(String articleTitle) {
		this.articleTitle = articleTitle;
	}
	 
	public String getInsertTime() {
		return insertTime;
	}
	public void setInsertTime(String insertTime) {
		this.insertTime = insertTime;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	 
	public byte[] getArticleContent() {
		return articleContent;
	}
	public void setArticleContent(byte[] articleContent) {
		this.articleContent = articleContent;
	}
	public String getSource() {
		return source;
	}
	public void setSource(String source) {
		this.source = source;
	}
	public String getTopage() {
		return topage;
	}
	public void setTopage(String topage) {
		this.topage = topage;
	}
	public long getCount() {
		return count;
	}
	public void setCount(long count) {
		this.count = count;
	}
	public String getImage() {
		return image;
	}
	public void setImage(String image) {
		this.image = image;
	}
	public int getHasImage() {
		return hasImage;
	}
	public void setHasImage(int hasImage) {
		this.hasImage = hasImage;
	}
	public String getDes() {
		return des;
	}
	public void setDes(String des) {
		this.des = des;
	}
}

 

 

 

	@SuppressWarnings("unchecked")
	public  Article  getNextArticleById(String articleId) { 
		List<Article> list = new ArrayList<Article>();
		try{
			String sql = "select articleId,articleTitle,articleContent,insertTime,category,source,topage,count,image,hasImage,des  "
				+ "from article order by insertTime desc ";
			list=  this.getJdbcTemplate().query(sql, new ArticleBlobRowMapper());
			if (list !=null) {
				return getArticle(articleId, list, 1);
			}else{
				return null;
			}
		}catch(Exception e){
			logger.error("Exception,", e);
		}
		return null;
	}
	 
	@SuppressWarnings("unchecked")
	public  Article  getBeforeArticleById(String articleId) { 
		List<Article> list = new ArrayList<Article>();
		try{
			String sql = "select articleId,articleTitle,articleContent,insertTime,category,source,topage,count,image,hasImage,des  "
				+ "from article order by insertTime desc";
			list=  this.getJdbcTemplate().query(sql, new ArticleBlobRowMapper());
			if (list !=null) {
				return getArticle(articleId, list, -1);
			}else{
				return null;
			}
		}catch(Exception e){
			logger.error("Exception,", e);
		}
		return null;
	}


	
	//flag = 0  本生  flag=-1 上一篇文章  flag=+1 下一篇文章  
	private   Article getArticle (String articleId ,List<Article> list ,int flag ){
		int index=0;
		for (int i = 0; i < list.size(); i++) {
			Article a = list.get(i);
			if (  articleId.equals(a.getArticleId())) {
				index=i;
			}
		} 
		switch (flag) {
		case -1: 
			if (index+flag<0) {
				return null;
			}
			
			break;
		case 0:
			
			break;
		case 1: 
			if (index+flag>=list.size()) {
				return null;
			}
			break;
		default:
			break;
		}
		for (int i = 0; i < list.size(); i++) {
			 if (i== (index + flag)) {
				return list.get(i);
			}
		}
		return null;
	}
	

 

 

public void getTable() {
		try {
			List<Article> list = articleService.getList(limit, offset*limit);
			List<ArticleVO> ArticleVOlist = new ArrayList<ArticleVO>();
			for (int i = 0; i < list.size(); i++) {
				Article a =list.get(i);
				ArticleVO avo = new ArticleVO();
				avo.setArticleId(a.getArticleId());
				avo.setArticleTitle(a.getArticleTitle());
				avo.setArticleContent(a.getArticleContent() == null ? "" : new String(a.getArticleContent(), "UTF-8"));
				avo.setInsertTime(a.getInsertTime());
				avo.setCategory(a.getCategory());
				avo.setSource(a.getSource());
				avo.setTopage(a.getTopage());
				avo.setCount(a.getCount());
				avo.setImage(a.getImage());
				avo.setHasImage(a.getHasImage());
				avo.setDes(a.getDes());
				ArticleVOlist.add(avo);
			}

			int count = articleService.getCount();

			JSONObject jsonobj = new JSONObject();
			jsonobj.put("total", count);
			JSONArray jsonarr = new JSONArray(ArticleVOlist);
			jsonobj.put("rows", jsonarr);

			System.out.println(jsonobj.toString());
			getResponse().getWriter().print(jsonobj.toString());
		} catch (IOException | JSONException e) {
		}
	}

 

 

public String toArticleDailPage() {
		Article article = articleService.getArticleById(articleId);
		article.setCount(article.getCount()+1);
		articleService.updateCount(article); 
		
		Article nextArticle = articleService.getNextArticleById(articleId);
		Article beforeArticle = articleService.getBeforeArticleById(articleId);
		
		getRequest().setAttribute("article", article);
		getRequest().setAttribute("nextArticle", nextArticle);
		getRequest().setAttribute("beforeArticle", beforeArticle);
		
		return SUCCESS;
	}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

  • 大小: 14 KB
  • 大小: 57.6 KB
  • 大小: 23.7 KB
分享到:
评论

相关推荐

    用js实现静态网页中文章列表页的分页功能

    本文将详细介绍如何利用JavaScript在静态网页上实现文章列表的分页功能。 #### 一、需求分析 假设我们需要在一个静态网页上展示一篇文章列表,并且每页显示的文章数量固定为20篇。为了更好地管理和展示这些文章,...

    静态生成代码,含分页,内页生成

    在IT行业中,静态生成代码是一种常见的网页开发技术,它的核心思想是将动态内容预先渲染成HTML文件,然后存储在服务器上,供用户直接访问。这种方式相比动态生成的页面,具有加载速度快、SEO优化良好以及减轻服务器...

    PHP 文本文章分页代码 按标记或长度(不涉及数据库)

    总的来说,这个PHP代码示例提供了一个基本的文本文章分页解决方案,它不依赖于数据库,适用于简单的静态内容分页。通过自定义`$perpage`和`$delimiter`,可以适应不同的分页需求。此外,这个方法也可以作为一个基础...

    PHP通用分页小代码

    6. **静态和动态分页**:动态分页适用于数据频繁更新的场景,数据在服务器端实时生成;而静态分页则是在首次访问时生成所有页面并保存为HTML,后续请求直接返回已生成的页面,提高了访问速度。 在实际项目中,你...

    php个人博客系统

    3. 文章展示:按时间、热度、分类等维度展示文章列表,支持分页。 4. 评论功能:用户对文章进行评论,支持回复、点赞和举报。 5. 搜索功能:提供关键词搜索,匹配文章标题和内容。 6. 用户权限:区分普通用户和管理...

    博客系统——asp源代码

    博客系统是互联网上个人或团队分享思想、经验、知识和个人见解的重要平台,它结合了内容管理系统(CMS)和社交网络的特性。在这个特定的案例中,我们关注的是一个基于ASP(Active Server Pages)技术构建的博客系统...

    基于SpringBoot技术博客实现论文设计

    通过预览,我们可以看到项目的效果包括文章的分页展示,详细信息查看,以及后台的文章管理列表。这些功能的实现将依赖于SpringBoot框架的灵活性和便捷性。 【系统设计与开发环境】:系统采用SpringBoot作为核心开发...

    jpressuniapp傻瓜式教程手把手从0开始编写

    5.1 文章列表:创建一个列表组件,通过调用jPress API获取文章列表,动态渲染到页面上。 5.2 文章详情:点击列表项跳转到文章详情页,加载文章内容、作者信息、评论等数据。 5.3 用户登录与注册:使用uni-app实现...

    学完JSP,运用MVC设计模式实现简单的CRUD操作

    这样,我们可以将静态内容与动态内容很好地结合在一起,提高了代码的可维护性和可扩展性。 MVC设计模式是Web开发中的一种经典架构,它的核心思想是将应用程序分为三个主要部分:模型(Model)、视图(View)和控制...

    python-django实现个人博客,部分功能未实现,有待拓展

    从描述来看,这个博客项目尚未完成所有功能,可能还需要添加用户注册、登录、文章的发布与编辑、评论系统、搜索功能、分页以及更多的定制化设置。扩展这个项目时,开发者可以考虑以下几个方面: - 用户认证:实现...

    网站前端网页源码模板 (865).zip

    - `blog.html` 和 `blog-post.html`: 代表博客列表页面和单个博客文章页面,通常包含文章摘要、分类、标签和评论等功能。 - `portfolio.html`、`portfolio-manual-pagination.html` 和 `portfolio-item.html`: ...

    个人博客:我的个人博客,使用静态网站生成器(Metalsmith)

    2. **metalsmith-pagination**:用于分页博客文章。 3. **metalsmith-in-place**:在原地编辑文件,例如替换模板变量。 4. **metalsmith-watch**:实时监听文件变化,自动重新构建。 总的来说,Metalsmith提供了一...

    基于ARM CPU的Linux物理内存管理

    总的来说,这篇文章详细阐述了基于ARM CPU的Linux系统中物理内存的管理方法,从内存布局的历史发展到现代内核的实现技术,为读者提供了一个全面的理解。掌握这些知识对于进行Linux内核开发、系统优化或者解决内存...

    web个人博客管理系统

    在信息技术日新月异的今天,个人博客已经成为了许多人分享思想、交流经验的重要平台。而“web个人博客管理系统”正是这样一款为用户提供便捷博客创建、管理和发布的工具,尤其适合初学者进行学习和实践。本文将深入...

    艺帆人力资源管理咨询机构网站模板

    特色功能:产品、新闻内容图片可以批量上传(免去一张张上传的烦恼),全站伪静态(优化SEO,对搜索引擎更友好),全站关键词可自动设置(每个页面关键词都有针对性),文章内容可以分页,图片渐显载入(优化显示速度...

    guntherrotsch.github.io

    通过定义变量和控制结构,可以动态生成 HTML 内容,如文章列表、分页等,提供了高度的可定制性。 Bootstrap,则是著名的前端开发框架,以其响应式设计和丰富的组件库闻名。在 guntherrotsch.github.io 项目中,...

    关联文章升级小插件 for KesionCMS科汛 v5.5&&6.0

    KS_ItemInfoR为关联文章数据库,V6.0以前每次关联是程序自动寻找tags匹配,现在使用了数据表,对使用动态或伪静态时速度会增快不少,但是只有新文章才会自动建关联,并且在每次添加文章自己不指定关联词语时,只有...

    艺帆简洁干净家具网站源码CMS版 v1.7.5.zip

    特色功能:产品、新闻内容图片可以批量上传(免去一张张上传的烦恼),全站伪静态(优化SEO,对搜索引擎更友好),全站关键词可自动设置(每个页面关键词都有针对性),文章内容可以分页,图片渐显载入(优化显示速度...

Global site tag (gtag.js) - Google Analytics