先看下整体页面效果
1.链接功能的实现 在bshare网站上找到相关的代码贴到对应的位置上就可以了
<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>
2关键字的实现
blogController
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);
}
视图view.jsp中的实现
<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>
3.上下篇功能的实现
BlogDao
/**
* 获取上一篇博客
* @param id
* @return
*/
public Blog getLastBlog(Integer id);
/**
* 获取下一篇博客
* @param id
* @return
*/
public Blog getNextBlog(Integer id);
BlogService
public Blog getLastBlog(Integer id);
public Blog getNextBlog(Integer id);
BlogMapper.xml
<select id="getLastBlog" parameterType="Integer" resultMap="BlogResult">
SELECT * FROM t_blog WHERE id<#{id} ORDER BY id DESC LIMIT 1;
</select>
<select id="getNextBlog" parameterType="Integer" resultMap="BlogResult">
SELECT * FROM t_blog WHERE id>#{id} ORDER BY id ASC LIMIT 1;
</select>
BlogServiceImpl
public Blog getLastBlog(Integer id) {
return blogDao.getLastBlog(id);
}
public Blog getNextBlog(Integer id) {
return blogDao.getNextBlog(id);
}
BlogController
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();
}
}
view.jsp完整视图实现
<script type="text/javascript" src="${pageContext.request.contextPath}/static/ueditor/third-party/SyntaxHighlighter/shCore.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/blog.css">
<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"%>
<style type="text/css">
.data_list .blog_title{
text_align:center;
}
</style>
<div class="data_list">
<div class="data_list_title">
<img src="/static/images/blog_show_icon.png"/>
博客信息
</div>
<div>
<div class="blog_title"><h3 style="text_align:center;"><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>
部分css的实现盒模型
.data_list{
border: 1px solid #E5E5E5;
padding: 10px;
background-color: #FDFDFD;
margin-top: 0px;
margin-bottom: 10px;
}
.data_list .data_list_title{
font-size: 15px;
font-weight: bold;
border-bottom: 1px solid #E5E5E5;
padding-bottom: 10px;
padding-top: 5px;
}
.data_list .data_list_title img{
margin-top: 1px;
vertical-align: top;
}
.data_list .datas ul {
list-style-type: none;
padding-left: 15px;
}
.data_list .datas ul li {
margin-top: 10px;
}
.data_list .data_list_title .datas{
padding: 5px;
}
.datas .date ,.datas .title {
display:block;
line-height: 1.5;
font-family: Verdana,Arial,Helvetica,sans-serif;
padding-bottom: 5px;
font-size: 14px;
}
.datas .date a{
color: #935A32;
font-weight: bold;
}
.datas .title a{
color: #333;
font-weight: bold;
}
.datas .summary{
display:block;
font-family: Verdana, Arial, Helvetica, sans-serif;
line-height: 19.5px;
padding-top: 5px;
font-size: 13px;
color: rgb(0, 0, 0);
}
.datas .img{
display:block;
clear:both;
}
.datas img{
padding:10px;
padding-left:0px;
max-height: 150px;
max-width:300px;
}
.datas .info{
display:block;
font-family: Verdana, Arial, Helvetica, sans-serif;
line-height: 18px;
float: right;
font-size: 12px;
}
.data_list .user_image{
text-align: center;
}
.data_list .user_image img{
padding-top:10px;
width: 200px;;
height: 250px;;
}
.data_list .nickName , .data_list .userSign{
text-align: center;
}