BlogDao
package com.java1234.dao; import java.util.List; import java.util.Map; import com.java1234.entity.Blog; /** * 博客Dao * @author Lenovo * */ public interface BlogDao { /** * 根据日期分组查寻 * @return */ public List<Blog> countList(); /** * 分页查询博客 * @param map * @return */ public List<Blog> list(Map<String,Object> map); /** * 获取总记录数 * @param map * @return */ public Long getTotal(Map<String,Object> map); /** * 根据Id查找博客实体 * @param id * @return */ public Blog findById(Integer id); /** * 更新博客信息 * @param blog * @return */ public Integer update(Blog blog); /** * 获取上一篇博客 * @param id * @return */ public Blog getLastBlog(Integer id); /** * 获取下一篇博客 * @param id * @return */ public Blog getNextBlog(Integer id); }BlogMapper.xml
<?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.BlogDao"> <resultMap type="Blog" id="BlogResult"> <result property="id" column="id"/> <result property="title" column="title"/> <result property="summary" column="summary"/> <result property="releaseDate" column="releaseDate"/> <result property="clickHit" column="clickHit"/> <result property="replyHit" column="replyHit"/> <result property="content" column="content"/> <result property="keyWord" column="keyWord"/> <association property="blogType" column="typeId" select="com.java1234.dao.BlogTypeDao.findById"></association> </resultMap> <select id="countList" resultMap="BlogResult"> SELECT DATE_FORMAT(releaseDate,'%Y年%m月') AS releaseDateStr,COUNT(*) AS blogCount FROM t_blog GROUP BY DATE_FORMAT(releaseDate,'%Y年%m月') ORDER BY DATE_FORMAT(releaseDate,'%Y年%m月') DESC; </select> <select id="list" parameterType="Map" resultMap="BlogResult"> select * from t_blog <where> <if test="typeId!=null and typeId!='' "> and typeId=#{typeId} </if> <if test="releaseDateStr!=null and releaseDateStr!='' "> and DATE_FORMAT(releaseDate,'%Y年%m月')=#{releaseDateStr} </if> </where> order by releaseDate desc <if test="start!=null and size!=null"> limit #{start},#{size} </if> </select> <select id="getTotal" parameterType="Map" resultType="Long"> select count(*) from t_blog <where> <if test="typeId!=null and typeId!='' "> and typeId=#{typeId} </if> <if test="releaseDateStr!=null and releaseDateStr!='' "> and DATE_FORMAT(releaseDate,'%Y年%m月')=#{releaseDateStr} </if> </where> </select> <select id="findById" parameterType="Integer" resultMap="BlogResult"> select * from t_blog where id=#{id} </select> <update id="update" parameterType="Blog"> update t_blog <set> <if test="clickHit!=null"> clickHit=#{clickHit}, </if> </set> where id=#{id} </update> <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> </mapper>BlogService
package com.java1234.service; import java.util.List; import java.util.Map; import com.java1234.entity.Blog; /** * 博客service接口 * @author Lenovo * */ public interface BlogService { /** * 根据日期查寻分类 * @return */ public List<Blog> countList(); /** * 分页查询博客信息 * @param map * @return */ public List<Blog> list(Map<String,Object> map); /** * 查寻总记录数 * @param map * @return */ public Long getTotal(Map<String,Object> map); /** * 根据Id查找博客实体 * @param id * @return */ public Blog findById(Integer id); /** * 更新博客信息 * @param blog * @return */ public Integer update(Blog blog); public Blog getLastBlog(Integer id); public Blog getNextBlog(Integer id); }BlogServiceImpl
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.BlogDao; import com.java1234.entity.Blog; import com.java1234.service.BlogService; /** * 博客service实现类 * @author Lenovo * */ @Service("blogService") public class BlogServiceImpl implements BlogService { @Resource private BlogDao blogDao; /** * 根据日期分类查询博客 */ public List<Blog> countList() { return blogDao.countList(); } public List<Blog> list(Map<String, Object> map) { return blogDao.list(map); } public Long getTotal(Map<String, Object> map) { return blogDao.getTotal(map); } public Blog findById(Integer id) { return blogDao.findById(id); } public Integer update(Blog blog) { return blogDao.update(blog); } public Blog getLastBlog(Integer id) { return blogDao.getLastBlog(id); } public Blog getNextBlog(Integer id) { return blogDao.getNextBlog(id); } }IndexController
package com.java1234.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.java1234.entity.Blog; import com.java1234.entity.PageBean; import com.java1234.service.BlogService; import com.java1234.util.PageUtil; import com.java1234.util.StringUtil; /** * 主页Contrller * @author Administrator * */ @Controller @RequestMapping("/") public class IndexController { @Resource private BlogService blogService; /** * 请求主页 * @return */ @RequestMapping("/index") public ModelAndView index(@RequestParam(value="page",required=false)String page,@RequestParam(value="typeId",required=false)String typeId,@RequestParam(value="releaseDateStr",required=false)String releaseDateStr,HttpServletRequest request)throws Exception{ ModelAndView mav=new ModelAndView(); if(StringUtil.isEmpty(page)){ page="1"; } PageBean pageBean=new PageBean(Integer.parseInt(page),10); Map<String,Object> map=new HashMap<String,Object>(); map.put("start", pageBean.getStart()); map.put("size", pageBean.getPageSize()); map.put("typeId", typeId); map.put("releaseDateStr", releaseDateStr); List<Blog> blogList=blogService.list(map); for(Blog blog:blogList){ List<String> imageList=blog.getImageList(); String blogInfo=blog.getContent(); Document doc=Jsoup.parse(blogInfo); Elements jpgs=doc.select("img[src$=.jpg]"); for(int i=0;i<jpgs.size();i++){ Element jpg=jpgs.get(i); imageList.add(jpg.toString()); if(i==2){ break; } } } mav.addObject("blogList", blogList); StringBuffer param=new StringBuffer(); if(StringUtil.isNotEmpty(typeId)){ param.append("typeId="+typeId+"&"); } if(StringUtil.isNotEmpty(releaseDateStr)){ param.append("releaseDateStr="+releaseDateStr+"&"); } mav.addObject("pageCode", PageUtil.genPagination(request.getContextPath()+"/index.html", blogService.getTotal(map), Integer.parseInt(page), 10, param.toString())); mav.addObject("pageTitle", "java开源博客系统"); mav.addObject("mainPage", "foreground/blog/list.jsp"); mav.setViewName("mainTemp"); return mav; } /** * 源码下载 * @return * @throws Exception */ @RequestMapping("/download") public ModelAndView download()throws Exception{ ModelAndView mav=new ModelAndView(); mav.addObject("pageTitle", "本站源码下载页面_java开源博客系统"); mav.addObject("mainPage", "foreground/system/download.jsp"); mav.setViewName("mainTemp"); return mav; } }新建相应的jsp文件以便于后续的跳转 mainTemp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/bootstrap3/css/bootstrap.min.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/bootstrap3/css/bootstrap-theme.min.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/static/css/blog.css"> <script src="${pageContext.request.contextPath}/static/bootstrap3/js/jquery-1.11.2.min.js"></script> <script src="${pageContext.request.contextPath}/static/bootstrap3/js/bootstrap.min.js"></script> <title>${pageTitle }-Powered by java1234</title> <style type="text/css"> body{ padding-top: 10px; padding-bottom: 40px; } </style> </head> <body> <div class="container"> <jsp:include page="/foreground/common/head.jsp"/> <jsp:include page="/foreground/common/menu.jsp"/> <div class="row"> <div class="col-md-9"> <jsp:include page="${mainPage }"/> </div> <div class="col-md-3"> <div class="data_list"> <div class="data_list_title"> <img src="${pageContext.request.contextPath}/static/images/user_icon.png"/> 博主信息 </div> <div class="user_image"> <img src="${pageContext.request.contextPath}/static/userImages/${blogger.imageName}"/> </div> <div class="nickName">${blogger.nickName}</div> <div class="userSign">(${blogger.sign})</div> </div> <div class="data_list"> <div class="data_list_title"> <img src="${pageContext.request.contextPath}/static/images/byType_icon.png"/> 按日志类别 </div> <div class="datas"> <ul> <c:forEach var="blogTypeCount" items="${blogTypeCountList }"> <li><span><a href="${pageContext.request.contextPath}/index.html?typeId=${blogTypeCount.id}">${blogTypeCount.typeName }(${blogTypeCount.blogCount })</a></span></li> </c:forEach> </ul> </div> </div> <div class="data_list"> <div class="data_list_title"> <img src="${pageContext.request.contextPath}/static/images/byDate_icon.png"/> 按日志日期 </div> <div class="datas"> <ul> <c:forEach var="blogCount" items="${blogCountList }"> <li><span><a href="${pageContext.request.contextPath}/index.html?releaseDateStr=${blogCount.releaseDateStr}">${blogCount.releaseDateStr }(${blogCount.blogCount })</a></span></li> </c:forEach> </ul> </div> </div> <div class="data_list"> <div class="data_list_title"> <img src="${pageContext.request.contextPath}/static/images/link_icon.png"/> 友情链接 </div> <div class="datas"> <ul> <c:forEach var="link" items="${linkList }"> <li><span><a href="${link.linkUrl }" target="_blank">${link.linkName }</a></span></li> </c:forEach> </ul> </div> </div> </div> </div> <jsp:include page="/foreground/common/foot.jsp"/> </div> </body> </html>文件的架构目录