1.设置上一条、下一条数据

2.使用昌言插件

3.点击链接帖子的访问数加一

1.在mapper中设置分页:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.open1111.dao.ArticleDao">

<resultMap type="Article" id="ArticleResult">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="publishDate" column="publishDate"/>
<result property="content" column="content"/>
<result property="summary" column="summary"/>
<result property="titleColor" column="titleColor"/>
<result property="click" column="click"/>
<result property="isRecommend" column="isRecommend"/>
<result property="isSlide" column="isSlide"/>
<result property="keyWords" column="keyWords"/>

<association property="arcType" column="typeId" select="com.open1111.dao.ArcTypeDao.findById"></association>
</resultMap>

<select id="getNewest" resultMap="ArticleResult">
select * from t_article order by publishDate desc limit 0,7
</select>

<select id="getRecommend" resultMap="ArticleResult">
select * from t_article where isRecommend=1 order by publishDate desc limit 0,7
</select>

<select id="getSlide" resultMap="ArticleResult">
select * from t_article where isSlide=1 order by publishDate desc limit 0,5
</select>

<select id="getIndex" parameterType="Integer" resultMap="ArticleResult">
select * from t_article where typeId=#{typeId} order by publishDate desc limit 0,8
</select>

<select id="findById" parameterType="Integer" resultMap="ArticleResult">
select * from t_article where id=#{id}
</select>

<select id="getLastArticle" parameterType="Integer" resultMap="ArticleResult">
SELECT * FROM t_article WHERE id &lt; #{id} ORDER BY id DESC LIMIT 1;
</select>

<select id="getNextArticle" parameterType="Integer" resultMap="ArticleResult">
SELECT * FROM t_article WHERE id &gt; #{id} ORDER BY id ASC LIMIT 1;
</select>

<update id="update" parameterType="Article">
update t_article
<set>
<if test="click!=0">
click=#{click},
</if>
</set>
where id=#{id}
</update>

</mapper>

dao:

package com.open1111.dao;

import java.util.List;

import com.open1111.entity.Article;

/**
* 帖子Dao接口
* @author user
*
*/
public interface ArticleDao {

/**
* 获取最新的7条帖子
* @return
*/
public List<Article> getNewest();

/**
* 获取最新7条推荐的帖子
* @return
*/
public List<Article> getRecommend();

/**
* 获取最新5条幻灯的帖子
* @return
*/
public List<Article> getSlide();

/**
* 根据帖子类别来查找最新的8条数据
* @param typeId
* @return
*/
public List<Article> getIndex(Integer typeId);

/**
* 通过id查询帖子
* @param id
* @return
*/
public Article findById(Integer id);

/**
* 获取上一个帖子
* @param id
* @return
*/
public Article getLastArticle(Integer id);

/**
* 获取下一个帖子
* @param id
* @return
*/
public Article getNextArticle(Integer id);

/**
* 更新帖子
* @param article
* @return
*/
public Integer update(Article article);
}

service:

package com.open1111.service;

import java.util.List;

import com.open1111.entity.Article;

/**
* 帖子Service接口
* @author user
*
*/
public interface ArticleService {

/**
* 获取最新的7条帖子
* @return
*/
public List<Article> getNewest();

/**
* 获取最新7条推荐的帖子
* @return
*/
public List<Article> getRecommend();

/**
* 获取最新5条幻灯的帖子
* @return
*/
public List<Article> getSlide();

/**
* 根据帖子类别来查找最新的8条数据
* @param typeId
* @return
*/
public List<Article> getIndex(Integer typeId);

/**
* 通过id查询帖子
* @param id
* @return
*/
public Article findById(Integer id);

/**
* 获取上一个帖子
* @param id
* @return
*/
public Article getLastArticle(Integer id);

/**
* 获取下一个帖子
* @param id
* @return
*/
public Article getNextArticle(Integer id);

/**
* 更新帖子
* @param article
* @return
*/
public Integer update(Article article);
}

seviceImpl

package com.open1111.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.open1111.dao.ArticleDao;
import com.open1111.entity.Article;
import com.open1111.service.ArticleService;

/**
* 帖子Service实现类
* @author user
*
*/
@Service("articleService")
public class ArticleServiceImpl implements ArticleService{

@Resource
private ArticleDao articleDao;

public List<Article> getNewest() {
return articleDao.getNewest();
}

public List<Article> getRecommend() {
return articleDao.getRecommend();
}

public List<Article> getSlide() {
return articleDao.getSlide();
}

public List<Article> getIndex(Integer typeId) {
return articleDao.getIndex(typeId);
}

public Article findById(Integer id) {
return articleDao.findById(id);
}

public Article getLastArticle(Integer id) {
return articleDao.getLastArticle(id);
}

public Article getNextArticle(Integer id) {
return articleDao.getNextArticle(id);
}

public Integer update(Article article) {
return articleDao.update(article);
}

}

controller:

package com.open1111.controller;

import java.util.Arrays;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.open1111.entity.ArcType;
import com.open1111.entity.Article;
import com.open1111.service.ArticleService;
import com.open1111.util.NavUtil;
import com.open1111.util.StringUtil;

/**
* 帖子Controller层
* @author user
*
*/
@Controller
@RequestMapping("/article")
public class ArticleController {

@Resource
private ArticleService articleService;

@RequestMapping("/{id}")
public ModelAndView details(@PathVariable("id") Integer id,HttpServletRequest request)throws Exception{
ModelAndView mav=new ModelAndView();
Article article=articleService.findById(id);
String keyWords=article.getKeyWords();
if(StringUtil.isNotEmpty(keyWords)){
String arr[]=keyWords.split(" ");
mav.addObject("keyWords", StringUtil.filterWhite(Arrays.asList(arr)));
}else{
mav.addObject("keyWords", null);
}
mav.addObject("article", article);
article.setClick(article.getClick()+1);
articleService.update(article);
mav.addObject("pageCode", this.genUpAndDownPageCode(articleService.getLastArticle(id), articleService.getNextArticle(id), request.getServletContext().getContextPath()));
ArcType arcType=article.getArcType();
mav.addObject("navCode",NavUtil.genArticleNavigation(arcType.getTypeName(), arcType.getId(), article.getTitle()));
mav.setViewName("article");
return mav;
}

/**
* 获取下一篇帖子和上一篇帖子代码
* @param lastArticle
* @param nextArticle
* @param projectContext
* @return
*/
public String genUpAndDownPageCode(Article lastArticle,Article nextArticle,String projectContext){
StringBuffer pageCode=new StringBuffer();
if(lastArticle==null || lastArticle.getId()==null){
pageCode.append("<p>上一篇:没有了</p>");
}else{
pageCode.append("<p>上一篇:<a href='"+projectContext+"/article/"+lastArticle.getId()+".html'>"+lastArticle.getTitle()+"</a></p>");
}

if(nextArticle==null || nextArticle.getId()==null){
pageCode.append("<p>下一篇:没有了</p>");
}else{
pageCode.append("<p>下一篇:<a href='"+projectContext+"/article/"+nextArticle.getId()+".html'>"+nextArticle.getTitle()+"</a></p>");
}
return pageCode.toString();
}

}

页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!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>${article.title }_Open1111官方网站 -南通小锋网络科技有限公司</title>
<META NAME="Author" CONTENT="Java1234_小锋老师">
<meta name="keywords"
content="${article.keyWords }" />
<meta name="description"
content="${article.summary }" />
<link rel="stylesheet"
href="${pageContext.request.contextPath}/static/css/open1111.css">
<script src="${pageContext.request.contextPath}/static/js/jQuery.js"></script>
</head>
<body>
<jsp:include page="/common/head.jsp"></jsp:include>
<jsp:include page="/common/menu.jsp"></jsp:include>

<div class="content">
<div class="w960">
<div class="pLeft">
<div class="data_list">
<div class="dataHeader navi">${navCode }</div>
<div class="article_title"><h2><strong>${article.title }</strong></h2></div>
<div class="share">
<div class="bshare-custom"><a title="分享到QQ空间" class="bshare-qzone"></a><a title="分享到新浪微博" class="bshare-sinaminiblog"></a><a title="分享到人人网" class="bshare-renren"></a><a title="分享到腾讯微博" class="bshare-qqmb"></a><a title="分享到网易微博" class="bshare-neteasemb"></a><a title="更多平台" class="bshare-more bshare-more-icon more-style-addthis"></a><span class="BSHARE_COUNT bshare-share-count">0</span></div><script type="text/javascript" charset="utf-8" src="http://static.bshare.cn/b/buttonLite.js#style=-1&amp;uuid=&amp;pophcol=2&amp;lang=zh"></script><script type="text/javascript" charset="utf-8" src="http://static.bshare.cn/b/bshareC0.js"></script>
</div>
<div class="article_info">
发布时间:『<fmt:formatDate value="${article.publishDate }" pattern="yyyy-MM-dd HH:mm" />』&nbsp;&nbsp;
&nbsp;&nbsp;帖子类别:『${article.arcType.typeName}』&nbsp;&nbsp;阅读次数:${article.click}
</div>
<div class="article_summary">
${article.summary }
</div>

<div class="article_content">
${article.content }
</div>
<div class="article_keyWord">
<font><strong>关键字:</strong></font>
<c:choose>
<c:when test="${keyWords==null }">
&nbsp;&nbsp;无
</c:when>
<c:otherwise>
<c:forEach var="keyWord" items="${keyWords }">
&nbsp;&nbsp;<a href="http://zhannei.baidu.com/cse/search?q=${keyWord }&s=5738221493575509323&entry=1" target="_blank">${keyWord }</a>&nbsp;&nbsp;
</c:forEach>
</c:otherwise>
</c:choose>
</div>
<div class="article_lastAndNextPage">
${pageCode }
</div>

</div>

<div>
<!--PC版-->
<div id="SOHUCS" sid="${article.id }"></div>
<script charset="utf-8" type="text/javascript" src="http://changyan.sohu.com/upload/changyan.js" ></script>
<script type="text/javascript">
window.changyan.api.config({
appid: 'cysGfqVIm',
conf: 'prod_b63f4160d3c1165b9a6d353811cc8e2d'
});
</script>
</div>

</div>

<div class="pRight">
<div class="data_list">
<div class="dataHeader">站长推荐</div>
<div class="datas">
<ul>
<c:forEach var="article" items="${recommendArticleList }">
<li><a target="_blank"
href="${pageContext.request.contextPath}/article/${article.id}.html"
title="${article.title }"><font
color="${article.titleColor }">${fn:substring(article.title,0,16) }</font></a></li>
</c:forEach>

</ul>
</div>
</div>

<div class="data_list" style="margin-top: 10px;">
<div class="dataHeader">最近更新</div>
<div class="datas">
<ul>
<c:forEach var="article" items="${newestArticleList }">
<li><a target="_blank"
href="${pageContext.request.contextPath}/article/${article.id}.html"
title="${article.title }"><font
color="${article.titleColor }">${fn:substring(article.title,0,16) }</font></a></li>
</c:forEach>
</ul>
</div>
</div>
</div>
</div>
</div>

<jsp:include page="/common/foot.jsp"></jsp:include>
</body>
</html>

cms-详细页面-3的更多相关文章

  1. magento在产品详细页面添加分享链接的方法

    1,在产品详细页面的对用位置加入一下代码 <div class="sharethis_box">          <?php echo $this->ge ...

  2. ios 类似的效果淘宝商品详细页面

    今天试着写ios 分类似影响淘宝的商品详细页面 我使用第三方库EGORefreshTableHeaderView有一个下拉效果刷新PWLoadMoreTableFooterView上拉电阻负载许多其他 ...

  3. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_14-课程预览功能开发-CMS添加页面接口

    5.3 CMS添加页面接口 cms服务对外提供添加页面接口,实现:如果不存在页面则添加,否则就更新页面信息. 此接口由课程管理服务在课程预览时调用. 接口方法.:页面没有就添加.有了更新数据 之前的接 ...

  4. 帝国CMS自定义页面的添加与目录式链接的处理

    需求: 1.将某一本地前端自定义页面模板,导入到帝国系统,应用到网站 2.将导入的页面在站点中打开为目录式链接 www.abc.com/softlink/ 环境: 1.windows服务器 2.帝国C ...

  5. 通过SPList Definition自定义ListItem打开编辑详细页面

    在SharePoint中对列表SPList的操作里,常常希望当增加一个条目后还希望关联做一些其它的操作 而SharePoint自身提供的Item操作页面却没有那么灵活:所以通常情况下,我们专门为其提供 ...

  6. zencart产品详细页面调用数据库显示tags标签

      给商品信息页面添加一些tag关键词标签有利于谷歌的收录,也有利于关键词的SEO,实现这个功能并不难.其实就是给zencart添加一个功能模块, 具体方法是: 1,在mudules目录下面新建一个以 ...

  7. 如何修改magento产品详细页面的栏目

    magento默认模板里面的产品信息页面的布局是以两栏带右侧栏显示的,那么如何修改为两栏带左侧栏或者三栏.一栏的方式显示呢?下面教大家一种很简单的方法就可以实现.下面是默认的布局预览:

  8. *ecsho 的商品详细页面上获取该商品的一级分类ID及NAME

    1.打开goods.php并找到 $smarty->assign('goods', $goods); 在它上面增加以下代码 $cat_arr = get_parent_cats($goods[' ...

  9. ECSHOP在商品详细页面上获取该商品的顶级分类id和名称

    在 goods.php 文件, 找到 $smarty->assign('goods', $goods); 在它上面增加下面代码: 方法一: $cat_arr = get_parent_cats( ...

  10. IOS开发---菜鸟学习之路--(十)-实现新闻详细信息浏览页面

    前面已经将了上下拉刷新 实现了上下拉刷新后我们的第一级界面就做好,接下来我们就需要实现 新闻详细信息浏览了 我个人认为一般实现新闻详细页面的方法有两种(主要是数据源的不同导致了方法的不同) 第一种是本 ...

随机推荐

  1. 将一个mapList转换为beanList

    public static <T> List<T> copyMapToBean(   List<Map<String, Object>> resultM ...

  2. Python-OpenCV中图像颜色空间转换

    目录 cv2.cvtColor() 1. RGB to GRAY 2. RGB to CIE XYZ 3. RGB to YCrCb JPEG 4. RGB to HSV 5. RGB to HLS ...

  3. SQL Server 2012 安装——安装 OR 卸载

    前言     上篇介绍了.net framework 3.5的安装,这次介绍一下,SQL Server2012的安装和彻底卸载.根据百度,下面是自己根据自己实际情况整理的安装步骤: 安装 见安装步骤( ...

  4. 莫队算法-小Z的袜子

    小Z的妹子袜子这道题用的是莫队算法,据说解决离线区间询问几乎无敌. 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于 ...

  5. dbms_xplan的display查看执行计划

    DBMS_XPLAN包包括一系列函数,主要是用于显示SQL语句的执行计划,且不同的情形下使用不同的函数来显示,如预估的执行计划则使用 display函数,而实际的执行计划则是用display_curs ...

  6. dblink 简单使用

    create extension dblink查看连接:select dblink_get_connections()断开所有连接:select dblink_disconnect()断开指定名称的连 ...

  7. Idea提示没有符号类错误解决

    将提示没有符号类的文件打开,右键单独编译一次,再重新打包即可解决

  8. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  9. BZOJ 1053 [HAOI2007]反素数ant 神奇的约数

    本蒟蒻终于开始接触数学了...之前写的都忘了...忽然想起来某神犇在几个月前就切了FWT了... 给出三个结论: 1.1-N中的反素数是1-N中约数最多但是最小的数 2.1-N中的所有数的质因子种类不 ...

  10. 判断文件是否存在 local/hdfs

    在Linux文件系统中,我们可以使用下面的Shell脚本判断某个文件是否存在: # 这里的-f参数判断$file是否存在 if [ ! -f "$file" ]; then ech ...