博客系统-博客评论

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&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>

<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 }楼&nbsp;&nbsp;&nbsp;&nbsp;${comment.userIp }:</font>${comment.content }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/>&nbsp;]</span>
</div>
</c:when>
<c:otherwise>
<div class="otherComment">
<span><font>${status.index+1 }楼&nbsp;&nbsp;&nbsp;&nbsp;${comment.userIp }:</font>${comment.content }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;<fmt:formatDate value="${comment.commentDate }" type="date" pattern="yyyy-MM-dd HH:mm"/>&nbsp;]</span>
</div>
</c:otherwise>
</c:choose>
</c:forEach>
</c:otherwise>
</c:choose>
</div>
</div>

 

posted @ 2017-03-15 22:35  小拽A  阅读(373)  评论(1编辑  收藏  举报