博客系统-详细类容补充

业务逻辑:在详细页面还可以有分享到人人网、qq空间、微信。。。。。2.还有关键字,点击时候进入百度关键字搜索;3.显示上一篇、下一篇

1.补充-分享到:----->前端插件

2.关键字:在后台根据id、查询得到对应博客,拿出关键字,以空格分割字符串成数字,将去掉空格的字符串放入集合,集合出入前端遍历出来即可

3.关键字

  3.1:上一篇sql:根据id倒序,查询条件为id大于当前id并限制取一条

  3.2:下一篇sql:根据id升序,查询出id大于当前id的,取第一条即可,

  3.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.java1234.dao.BlogDao">

<resultMap type="Blog" id="BlogResult">
<result property="id" column="id"/>
<result property="title" column="title"/>
<result property="summary" column="summary"/>
<result property="releaseDate" column="releaseDate"/>
<result property="clickHit" column="clickHit"/>
<result property="replyHit" column="replyHit"/>
<result property="content" column="content"/>
<result property="keyWord" column="keyWord"/>

<association property="blogType" column="typeId" select="com.java1234.dao.BlogTypeDao.findById"></association>
</resultMap>

<select id="countList" resultMap="BlogResult">
SELECT DATE_FORMAT(releaseDate,'%Y年%m月') AS releaseDateStr,COUNT(*) AS blogCount FROM t_blog GROUP BY DATE_FORMAT(releaseDate,'%Y年%m月') ORDER BY DATE_FORMAT(releaseDate,'%Y年%m月') DESC;
</select>

<select id="list" parameterType="Map" resultMap="BlogResult">
select * from t_blog
<where>
<if test="typeId!=null and typeId!='' ">
and typeId=#{typeId}
</if>
<if test="releaseDateStr!=null and releaseDateStr!='' ">
and DATE_FORMAT(releaseDate,'%Y年%m月')=#{releaseDateStr}
</if>
</where>
order by releaseDate desc
<if test="start!=null and size!=null">
limit #{start},#{size}
</if>
</select>

<select id="getTotal" parameterType="Map" resultType="Long">
select count(*) from t_blog
<where>
<if test="typeId!=null and typeId!='' ">
and typeId=#{typeId}
</if>
<if test="releaseDateStr!=null and releaseDateStr!='' ">
and DATE_FORMAT(releaseDate,'%Y年%m月')=#{releaseDateStr}
</if>
</where>
</select>

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

<update id="update" parameterType="Blog">
update t_blog
<set>
<if test="clickHit!=null">
clickHit=#{clickHit},
</if>
</set>
where id=#{id}
</update>

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

<select id="getNextBlog" parameterType="Integer" resultMap="BlogResult">
SELECT * FROM t_blog WHERE id&gt;#{id} ORDER BY id ASC LIMIT 1;
</select>
</mapper>

dao:

package com.java1234.dao;

import java.util.List;
import java.util.Map;

import com.java1234.entity.Blog;

/**
* 博客Dao接口
* @author Administrator
*
*/
public interface BlogDao {

/**
* 根据日期分月分组查询
* @return
*/
public List<Blog> countList();

/**
* 分页查询博客
* @param map
* @return
*/
public List<Blog> list(Map<String,Object> map);

/**
* 获取总记录数
* @param map
* @return
*/
public Long getTotal(Map<String,Object> map);

/**
* 根据id查找实体
* @param id
* @return
*/
public Blog findById(Integer id);

/**
* 更新博客信息
* @param blog
* @return
*/
public Integer update(Blog blog);

/**
* 获取上一个博客
* @param id
* @return
*/
public Blog getLastBlog(Integer id);

/**
* 获取下一个博客
* @param id
* @return
*/
public Blog getNextBlog(Integer id);
}

service

package com.java1234.service;

import java.util.List;
import java.util.Map;

import com.java1234.entity.Blog;

/**
* 博客Service接口
* @author Administrator
*
*/
public interface BlogService {

/**
* 根据日期分月分组查询
* @return
*/
public List<Blog> countList();

/**
* 分页查询博客
* @param map
* @return
*/
public List<Blog> list(Map<String,Object> map);

/**
* 获取总记录数
* @param map
* @return
*/
public Long getTotal(Map<String,Object> map);

/**
* 根据id查找实体
* @param id
* @return
*/
public Blog findById(Integer id);

/**
* 更新博客信息
* @param blog
* @return
*/
public Integer update(Blog blog);

/**
* 获取上一个博客
* @param id
* @return
*/
public Blog getLastBlog(Integer id);

/**
* 获取下一个博客
* @param id
* @return
*/
public Blog getNextBlog(Integer id);
}

serviceImpl

package com.java1234.service.impl;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.java1234.dao.BlogDao;
import com.java1234.entity.Blog;
import com.java1234.service.BlogService;

/**
* 博客Service实现类
* @author Administrator
*
*/
@Service("blogService")
public class BlogServiceImpl implements BlogService{

@Resource
private BlogDao blogDao;

public List<Blog> countList() {
return blogDao.countList();
}

public List<Blog> list(Map<String, Object> map) {
return blogDao.list(map);
}

public Long getTotal(Map<String, Object> map) {
return blogDao.getTotal(map);
}

public Blog findById(Integer id) {
return blogDao.findById(id);
}

public Integer update(Blog blog) {
return blogDao.update(blog);
}

public Blog getLastBlog(Integer id) {
return blogDao.getLastBlog(id);
}

public Blog getNextBlog(Integer id) {
return blogDao.getNextBlog(id);
}

}

controller

package com.java1234.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.java1234.entity.Blog;
import com.java1234.service.BlogService;
import com.java1234.util.StringUtil;

/**
* 博客Controller层
* @author Administrator
*
*/
@Controller
@RequestMapping("/blog")
public class BlogController {

@Resource
private BlogService blogService;

/**
* 请求博客详细信息
* @param id
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/articles/{id}")
public ModelAndView details(@PathVariable("id") Integer id,HttpServletRequest request)throws Exception{
ModelAndView mav=new ModelAndView();
Blog blog=blogService.findById(id);
String keyWords=blog.getKeyWord();
if(StringUtil.isNotEmpty(keyWords)){
String arr[]=keyWords.split(" ");
mav.addObject("keyWords", StringUtil.filterWhite(Arrays.asList(arr)));
}else{
mav.addObject("keyWords",null);
}
mav.addObject("blog",blog);
blog.setClickHit(blog.getClickHit()+1);
blogService.update(blog);
mav.addObject("pageCode", this.getUpAndDownPageCode(blogService.getLastBlog(id), blogService.getNextBlog(id), request.getServletContext().getContextPath()));
mav.addObject("pageTitle", blog.getTitle()+"java开源博客系统");
mav.addObject("mainPage", "foreground/blog/view.jsp");
mav.setViewName("mainTemp");
return mav;
}

/**
* 获取上一篇博客和下一篇博客
* @param lastBlog
* @param nextBlog
* @param projectContext
* @return
*/
private String getUpAndDownPageCode(Blog lastBlog,Blog nextBlog,String projectContext){
StringBuffer pageCode=new StringBuffer();
if(lastBlog==null || lastBlog.getId()==null){
pageCode.append("<p>上一篇:没有了</p>");
}else{
pageCode.append("<p>上一篇:<a href='"+projectContext+"/blog/articles/"+lastBlog.getId()+".html'>"+lastBlog.getTitle()+"</a></p>");
}

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

页面:

<script type="text/javascript" src="${pageContext.request.contextPath}/static/ueditor/third-party/SyntaxHighlighter/shCore.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css">
<script type="text/javascript">
SyntaxHighlighter.all();
</script>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>


<div class="data_list">
<div class="data_list_title">
<img src="/static/images/blog_show_icon.png"/>
博客信息
</div>
<div>
<div class="blog_title"><h3><strong>${blog.title }</strong></h3></div>
<div class="blog_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="blog_info">
发布时间:『 <fmt:formatDate value="${blog.releaseDate }" type="date" pattern="yyyy-MM-dd HH:mm"/>』&nbsp;&nbsp;博客类别:${blog.blogType.typeName }&nbsp;&nbsp;阅读(${blog.clickHit }) 评论(${blog.replyHit })
</div>
<div class="blog_content">
${blog.content }
</div>
<div class="blog_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;&nbsp;&nbsp;<a href="#" target="_blank">${keyWord }</a>&nbsp;&nbsp;

</c:forEach>
</c:otherwise>
</c:choose>
</div>
<div class="blog_lastAndNextPage">
${pageCode }
</div>
</div>
</div>

 

posted @ 2017-03-15 21:53  小拽A  阅读(216)  评论(0编辑  收藏  举报