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&uuid=&pophcol=2&></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" rel="external nofollow" 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()" 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 }樓 ${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>
轉載于:https://www.cnblogs.com/csy666/p/6557091.html