天天看点

博客系统-博客评论

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;

public interface CommentDao {

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;

public interface CommentService {

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("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

@RequestMapping("/blog")

public class BlogController {

@Resource

private BlogService blogService;

@Resource

private CommentService commentService;

@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;

}

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" target="_blank" rel="external nofollow" >

<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;></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" rel="external nofollow" 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()" target="_blank" rel="external nofollow" 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>

转载于:https://www.cnblogs.com/csy666/p/6557091.html