博客系统-博客评论
2017-03-15 22:35
204 查看
1.业务逻辑:用户在点击博客详细内容链接时候显示博客相关类容,并显示评论信息,如果该评论超出十条将不显示并有显示全部的按钮,如果没有评论,则显示无
2.分析:根据博客id把博客内容显示出来
代码:
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.CommentDao">
<resultMap type="Comment" id="CommentResult">
<result property="id" column="id"/>
<result property="userIp" column="userIp"/>
<result property="content" column="content"/>
<result property="commentDate" column="commentDate"/>
<result property="state" column="state"/>
<association property="blog" column="blogId" select="com.java1234.dao.BlogDao.findById"></association>
</resultMap>
<select id="list" parameterType="Map" resultMap="CommentResult">
select * from t_comment
<where>
<if test="blogId!=null">
and blogId=#{blogId}
</if>
<if test="state!=null">
and state=#{state}
</if>
</where>
order by commentDate desc
</select>
</mapper>
dao
package com.java1234.dao;
import java.util.List;
import java.util.Map;
import com.java1234.entity.Comment;
/**
* 评论Dao接口
* @author Administrator
*
*/
public interface CommentDao {
/**
* 查询用户评论信息
* @param map
* @return
*/
public List<Comment> list(Map<String,Object> map);
}
service:
package com.java1234.service;
import java.util.List;
import java.util.Map;
import com.java1234.entity.Comment;
/**
* 评论Service接口
* @author Administrator
*
*/
public interface CommentService {
/**
* 查询用户评论信息
* @param map
* @return
*/
public List<Comment> list(Map<String,Object> map);
}
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.CommentDao;
import com.java1234.entity.Comment;
import com.java1234.service.CommentService;
/**
* 评论Service实现类
* @author Administrator
*
*/
@Service("commentService")
public class CommentServiceImpl implements CommentService{
@Resource
private CommentDao commentDao;
public List<Comment> list(Map<String, Object> map) {
return commentDao.list(map);
}
}
controller
package com.java1234.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
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.service.CommentService;
import com.java1234.util.StringUtil;
/**
* 博客Controller层
* @author Administrator
*
*/
@Controller
@RequestMapping("/blog")
public class BlogController {
@Resource
private BlogService blogService;
@Resource
private CommentService commentService;
/**
* 请求博客详细信息
* @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);
Map<String,Object> map=new HashMap<String,Object>();
map.put("blogId", blog.getId());
map.put("state", 1);
mav.addObject("commentList", commentService.list(map));
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();
function showOtherComment(){
$(".otherComment").show();
}
</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&uuid=&pophcol=2&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"/>』 博客类别:${blog.blogType.typeName } 阅读(${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 }">
无
</c:when>
<c:otherwise>
<c:forEach var="keyWord" items="${keyWords }">
<a href="#" target="_blank">${keyWord }</a>
</c:forEach>
</c:otherwise>
</c:choose>
</div>
<div class="blog_lastAndNextPage">
${pageCode }
</div>
</div>
</div>
<div class="data_list">
<div class="data_list_title">
<img src="/static/images/comment_icon.png"/>
评论信息
<c:if test="${commentList.size()>10 }">
<a href="javascript:showOtherComment()" style="float: right;padding-right: 40px;">显示所有评论</a>
</c:if>
</div>
<div class="commentDatas">
<c:choose>
<c:when test="${commentList.size()==0 }">
暂无评论
</c:when>
<c:otherwise>
<c:forEach var="comment" items="${commentList}" varStatus="status">
<c:choose>
<c:when test="${status.index<10 }">
<div class="comment">
<span><font>${status.index+1 }楼 ${comment.userIp }:</font>${comment.content } [ <fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/> ]</span>
</div>
</c:when>
<c:otherwise>
<div class="otherComment">
<span><font>${status.index+1 }楼 ${comment.userIp }:</font>${comment.content } [ <fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/> ]</span>
</div>
</c:otherwise>
</c:choose>
</c:forEach>
</c:otherwise>
</c:choose>
</div>
</div>
2.分析:根据博客id把博客内容显示出来
代码:
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.CommentDao">
<resultMap type="Comment" id="CommentResult">
<result property="id" column="id"/>
<result property="userIp" column="userIp"/>
<result property="content" column="content"/>
<result property="commentDate" column="commentDate"/>
<result property="state" column="state"/>
<association property="blog" column="blogId" select="com.java1234.dao.BlogDao.findById"></association>
</resultMap>
<select id="list" parameterType="Map" resultMap="CommentResult">
select * from t_comment
<where>
<if test="blogId!=null">
and blogId=#{blogId}
</if>
<if test="state!=null">
and state=#{state}
</if>
</where>
order by commentDate desc
</select>
</mapper>
dao
package com.java1234.dao;
import java.util.List;
import java.util.Map;
import com.java1234.entity.Comment;
/**
* 评论Dao接口
* @author Administrator
*
*/
public interface CommentDao {
/**
* 查询用户评论信息
* @param map
* @return
*/
public List<Comment> list(Map<String,Object> map);
}
service:
package com.java1234.service;
import java.util.List;
import java.util.Map;
import com.java1234.entity.Comment;
/**
* 评论Service接口
* @author Administrator
*
*/
public interface CommentService {
/**
* 查询用户评论信息
* @param map
* @return
*/
public List<Comment> list(Map<String,Object> map);
}
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.CommentDao;
import com.java1234.entity.Comment;
import com.java1234.service.CommentService;
/**
* 评论Service实现类
* @author Administrator
*
*/
@Service("commentService")
public class CommentServiceImpl implements CommentService{
@Resource
private CommentDao commentDao;
public List<Comment> list(Map<String, Object> map) {
return commentDao.list(map);
}
}
controller
package com.java1234.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
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.service.CommentService;
import com.java1234.util.StringUtil;
/**
* 博客Controller层
* @author Administrator
*
*/
@Controller
@RequestMapping("/blog")
public class BlogController {
@Resource
private BlogService blogService;
@Resource
private CommentService commentService;
/**
* 请求博客详细信息
* @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);
Map<String,Object> map=new HashMap<String,Object>();
map.put("blogId", blog.getId());
map.put("state", 1);
mav.addObject("commentList", commentService.list(map));
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();
function showOtherComment(){
$(".otherComment").show();
}
</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&uuid=&pophcol=2&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"/>』 博客类别:${blog.blogType.typeName } 阅读(${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 }">
无
</c:when>
<c:otherwise>
<c:forEach var="keyWord" items="${keyWords }">
<a href="#" target="_blank">${keyWord }</a>
</c:forEach>
</c:otherwise>
</c:choose>
</div>
<div class="blog_lastAndNextPage">
${pageCode }
</div>
</div>
</div>
<div class="data_list">
<div class="data_list_title">
<img src="/static/images/comment_icon.png"/>
评论信息
<c:if test="${commentList.size()>10 }">
<a href="javascript:showOtherComment()" style="float: right;padding-right: 40px;">显示所有评论</a>
</c:if>
</div>
<div class="commentDatas">
<c:choose>
<c:when test="${commentList.size()==0 }">
暂无评论
</c:when>
<c:otherwise>
<c:forEach var="comment" items="${commentList}" varStatus="status">
<c:choose>
<c:when test="${status.index<10 }">
<div class="comment">
<span><font>${status.index+1 }楼 ${comment.userIp }:</font>${comment.content } [ <fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/> ]</span>
</div>
</c:when>
<c:otherwise>
<div class="otherComment">
<span><font>${status.index+1 }楼 ${comment.userIp }:</font>${comment.content } [ <fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/> ]</span>
</div>
</c:otherwise>
</c:choose>
</c:forEach>
</c:otherwise>
</c:choose>
</div>
</div>
相关文章推荐
- 一个单用户博客系统DEMO——文章详情中插入评论表单
- 【分享】博客美化(5)为博客或系统添加一个强大的评论系统
- 为Hexo博客添加LiveRe评论系统
- 博客系统漏洞解析 之 评论灌水机 推荐
- Hexo博客yelee主题添加Gitment评论系统
- hexo 博客next主题集成gitment或者gitalk评论系统
- 使用静态化技术写了一个用于在手机上看的博客系统(目前只能看文章,写不了评论)
- 个人博客系统中的评论功能设计
- 如何使用hugo搭建个人博客(四):添加评论系统disqus
- 博客系统之评论树与评论楼相关操作
- 如何给自己的博客网站加入评论系统
- ghost博客系统+disqus评论系统
- Yii实现单用户博客系统文章详情页插入评论表单的方法
- 在Jekyll博客添加评论系统:gitment篇
- Django之博客系统:增加评论
- hexo+github打造个人博客系列之评论系统
- Yii实现单用户博客系统文章详情页插入评论表单的方法
- 在Jekyll博客添加评论系统:gitment篇
- 关于增强51cto博客评论系统功能的建议