基於SSM的博客項目實戰(附源碼和SQL)

1.前言

  本項目是SSM的博客系統,目前只支持發表個人博客,管理個人博客相關內容,供他人以遊客身份進行瀏覽,搜索,評論等功能。

2.所用技術

  1. 使用Spring5+SpringMVC+Mybatis3架構
  2. 採用Mysql數據庫
  3. 使用Maven管理項目
  4. 使用Shiro作爲項目安全框架
  5. 使用Lucene作爲全文檢索,支持restful風格
  6. 前臺網頁使用主流的Bootstrap3 UI框架
  7. 後臺管理使用主流易用的EasyUI輕量級框架
  8. 數據庫連接池使用的是阿里巴巴的Druid
  9. 在線編輯器使用了百度的UEditor,支持單圖,多圖上傳,支持截圖上傳,支持代碼高亮特性

3.項目效果圖展示

1.後臺部分

  • 登錄後臺界面:使用Shiro進行安全管理,對前臺輸入的密碼進行加密運算,然後與數據庫(數據庫存入密碼已加密)中的進行比較。成功後才能登入後臺系統。
    在這裏插入圖片描述
  • 博客系統後臺:其分爲博客及類別管理,評論管理等幾大模塊。這裏只展示了博客管理中“寫博客功能”。先寫入博客標題,然後選擇博客類型,將博客內容填入百度的富文本編輯器中,最後加上關鍵字(方便前臺Lucene全文檢索),點擊發布博客按鈕即可發佈博客。
    在這裏插入圖片描述

2.前臺展示部分

  • 首頁展示:可觀看博客內容的相關信息(分頁展示),和博主的相關信息,右上角引入天氣插件模塊,有其他想法可以另做更換。
    在這裏插入圖片描述

  • 查看博客界面:顯示博客具體內容,關鍵字(Lucene全文檢索),鏈接分享,遊客發表評論,查看所有評論(內容太多,沒截屏出來哦~),
    在這裏插入圖片描述

  • 搜索博客:採用Lucene全文檢索,搜索關鍵字採用高亮顯示。這裏不僅可以關鍵字查詢,還可以輸入博客相關內容查詢哦(其他搜索條件可另外填加)。
    在這裏插入圖片描述

4.部分代碼演示

  • 以遊客搜索結果分頁爲例。此處沒有采用分頁類,而是手寫一個上下頁方法,通過字符拼接 html超文標記語言,返回給前臺展示。
 @RequestMapping({"/q"})
    public ModelAndView q(@RequestParam(value = "q", required = false) String q,
                          @RequestParam(value = "page", required = false) String page,
                          HttpServletRequest request) throws ParseException, InvalidTokenOffsetsException, IOException {
        if (StringUtil.isEmpty(page)) {//判斷如果page是空,則顯示爲第一頁
            page = "1";
        }
        ModelAndView mav = new ModelAndView();
        mav.addObject("mainPage", "foreground/blog/result.jsp");
        //加入lucene搜索,結果放入list集合中,方便按條數取出
        List<Blog> blogList = blogIndex.searchBlog(q.trim());

        int toIndex = 0;//展示頁的最後一條
        if (blogList.size()>=Integer.parseInt(page)*10){
        //總條數大於當前取出的最後一條的索引,則設當前取出的最後一條爲展示頁的最後一條
            toIndex = Integer.parseInt(page)*10;
        }else {
        //否則以查詢的總條數,爲展示頁的最後一條的索引
            toIndex = blogList.size();
        }
		//取出展示搜索條數(以截取的條數爲標準給前臺展示)
        mav.addObject("blogList",blogList.subList((Integer.parseInt(page)-1)*10,toIndex));

        mav.addObject("pageCode",genUpAndDownPageCode(Integer.parseInt(page),blogList.size(),q,10,request.getServletContext().getContextPath()));
        mav.addObject("q", q);//q爲搜索關鍵字
        mav.addObject("resultTotal", blogList.size());
        mav.addObject("pageTitle", "搜索關鍵字" + q + "結果頁面_個人博客");
        mav.setViewName("index");
        return mav;
    }


    /**
     * 查詢結果翻頁方法
     */
    private String genUpAndDownPageCode(int page, int totalNum, String q, int pageSize, String projectContext) {
        StringBuffer pageCode = new StringBuffer();
        //運用三目運算判斷總頁數
        int totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1;
        if (totalPage == 0) {
            return "";
        }
        pageCode.append("<nav>");
        pageCode.append("<ur class='pager'>");
        if (page > 1) {//當前大於1,則可以有上一頁
            pageCode.append("<li><a href='" + projectContext + "/blog/q.html?page" + (page - 1) + "&q=" + q + "'>上一頁</a></li>");
        } else {
            pageCode.append("<li class='disabled'><a href='#'>上一頁</a></li>");
        }
        if (page < totalPage) {//不是最後一頁,則也可以有下一頁
            pageCode.append("<li><a href='" + projectContext + "/blog/q.html?page" + (page + 1) + "&q=" + q + "'>下一頁</a></li>");
        } else {
            pageCode.append("<li class='disabled'><a href='#'>下一頁</a></li>");
        }
        pageCode.append("</nav>");
        pageCode.append("</ur>");
        return pageCode.toString();
    }

5.源碼地址

    本項目源碼和SQL已上傳GitHub,歡迎加★Star.下載哦! (^ o ^)。因爲不會美工,前端界面還是照舊,項目如有瑕疵,還望大佬指點,希望大家都可以寫出屬於自己的博客系統。
  源碼地址: https://github.com/Control201/Control

發佈了9 篇原創文章 · 獲贊 7 · 訪問量 4816
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章