首页功能的完善, 关于博主 关于本站, 通过日期 和 type分类找到相应的博客功能实(八)

  1. 点击类别出现相应的内容 关于博主 本站源码下载
  2. BlogDao list getTotal方法需要用到
  3. BlogMap list方法需要改变查询语句 getTotal方法
  4. IndexController 加上相应的typeID@RequestParam(value=“releaseDateStr”)注解进行取值
    将相应的typeIdsairu其中
    map.put(“typeId”,typeId);
    map.put(“releaseDateStr”,releaseDateStr);
  5. mainTemp.jsp 修改 标签
  6. RUN localHost:8080 修改server.xml因为缩略图显示的问题

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&lt;#{id} ORDER BY id DESC LIMIT 1;
	</select>
	
	<select id="getNextBlog" parameterType="Integer" resultMap="BlogResult">
		SELECT * FROM t_blog WHERE id&gt;#{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>

文件的架构目录
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值