欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 實(shí)戰(zhàn)項(xiàng)目錘煉之樸素風(fēng)格個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程

 更新時(shí)間:2021年11月11日 15:14:18   作者:qq_1334611189  
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)樸素風(fēng)格的個(gè)人博客系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平

一、項(xiàng)目簡(jiǎn)述

本系統(tǒng)功能包括: 基于vue + Springboo痼J后端分離項(xiàng)目個(gè)人博客系統(tǒng),注冊(cè) 登錄,首頁(yè)展示,喜爰圖書(shū)展示,后臺(tái)圖書(shū)維護(hù),個(gè)人文 章展示,后臺(tái)文章上傳等等。

二、項(xiàng)目運(yùn)行

環(huán)境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX (Webstorm也 行)+ Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts都支 持)。

項(xiàng)目技術(shù): Springboot + Maven + Mybatis + Vue + Redis^K, B/S 模式+ Maven等等。

博客信息代碼:

/**
 * 博客信息
 */
@Controller
public class MyblogController {
    //    public static String theme = "default";
    public static String theme = "amaze";
    @Resource
    private BlogService blogService;
    @Resource
    private TagService tagService;
    @Resource
    private CommentService commentService;
    @Resource
    private ConfigService configService;
    @Resource
    private CategoryService categoryService;
 
    /**
     * 首頁(yè)
     *
     * @param request http請(qǐng)求
     * @return java.lang.String
     */
    @GetMapping({"/", "/index", "index.html"})
    public String index(HttpServletRequest request) {
        return this.page(request, 1);
    }
 
    /**
     * 首頁(yè)(帶頁(yè)碼)
     *
     * @param request http請(qǐng)求
     * @param pageNum 頁(yè)碼
     * @return java.lang.String
     */
    @GetMapping({"/page/{pageNum}"})
    public String page(HttpServletRequest request, @PathVariable("pageNum") int pageNum) {
        PageResult blogPageResult = blogService.getBlogsForIndexPage(pageNum);
        if (blogPageResult == null) {
            return "error/error_404";
        }
        request.setAttribute("blogPageResult", blogPageResult);
        request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1));
        request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0));
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("pageName", "首頁(yè)");
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/index";
    }
 
    /**
     * Categories頁(yè)面(包括分類數(shù)據(jù)和標(biāo)簽數(shù)據(jù))
     *
     * @param request http請(qǐng)求
     * @return java.lang.String
     */
    @GetMapping({"/categories"})
    public String categories(HttpServletRequest request) {
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("categories", categoryService.getAllCategories());
        request.setAttribute("pageName", "分類頁(yè)面");
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/category";
    }
 
    /**
     * 詳情頁(yè)
     *
     * @param request     http請(qǐng)求
     * @param blogId      博客id
     * @param commentPage 評(píng)論頁(yè)
     * @return java.lang.String
     */
    @GetMapping({"/blog/{blogId}", "/article/{blogId}"})
    public String detail(HttpServletRequest request, @PathVariable("blogId") Long blogId, @RequestParam(value = "commentPage", required = false, defaultValue = "1") Integer commentPage) {
        BlogDetailVO blogDetailVO = blogService.getBlogDetail(blogId);
        if (blogDetailVO != null) {
            request.setAttribute("blogDetailVO", blogDetailVO);
            request.setAttribute("commentPageResult", commentService.getCommentPageByBlogIdAndPageNum(blogId, commentPage));
        }
        request.setAttribute("pageName", "詳情");
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/detail";
    }
 
    /**
     * 標(biāo)簽列表頁(yè)
     *
     * @param request http請(qǐng)求
     * @param tagName 標(biāo)簽名稱
     * @return java.lang.String
     */
    @GetMapping({"/tag/{tagName}"})
    public String tag(HttpServletRequest request, @PathVariable("tagName") String tagName) {
        return tag(request, tagName, 1);
    }
 
    /**
     * 標(biāo)簽列表頁(yè)(帶頁(yè)碼)
     *
     * @param request http請(qǐng)求
     * @param tagName 標(biāo)簽名稱
     * @param page    頁(yè)碼
     * @return java.lang.String
     */
    @GetMapping({"/tag/{tagName}/{page}"})
    public String tag(HttpServletRequest request, @PathVariable("tagName") String tagName, @PathVariable("page") Integer page) {
        PageResult blogPageResult = blogService.getBlogsPageByTag(tagName, page);
        request.setAttribute("blogPageResult", blogPageResult);
        request.setAttribute("pageName", "標(biāo)簽");
        request.setAttribute("pageUrl", "tag");
        request.setAttribute("keyword", tagName);
        request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1));
        request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0));
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/list";
    }
 
    /**
     * 分類列表頁(yè)
     *
     * @param request      http請(qǐng)求
     * @param categoryName 類別名稱
     * @return java.lang.String
     */
    @GetMapping({"/category/{categoryName}"})
    public String category(HttpServletRequest request, @PathVariable("categoryName") String categoryName) {
        return category(request, categoryName, 1);
    }
 
    /**
     * 分類列表頁(yè)(帶頁(yè)碼)
     *
     * @param request      http請(qǐng)求
     * @param categoryName 類別名稱
     * @param page         頁(yè)碼
     * @return java.lang.String
     */
    @GetMapping({"/category/{categoryName}/{page}"})
    public String category(HttpServletRequest request, @PathVariable("categoryName") String categoryName, @PathVariable("page") Integer page) {
        PageResult blogPageResult = blogService.getBlogsPageByCategory(categoryName, page);
        request.setAttribute("blogPageResult", blogPageResult);
        request.setAttribute("pageName", "分類");
        request.setAttribute("pageUrl", "category");
        request.setAttribute("keyword", categoryName);
        request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1));
        request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0));
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/list";
    }
 
    /**
     * 搜索列表頁(yè)
     *
     * @param request http請(qǐng)求
     * @param keyword 關(guān)鍵詞
     * @return java.lang.String
     */
    @GetMapping({"/search/{keyword}"})
    public String search(HttpServletRequest request, @PathVariable("keyword") String keyword) {
        return search(request, keyword, 1);
    }
 
    /**
     * 搜索列表頁(yè)(帶頁(yè)碼)
     *
     * @param request http請(qǐng)求
     * @param keyword 關(guān)鍵詞
     * @param page    頁(yè)碼
     * @return java.lang.String
     */
    @GetMapping({"/search/{keyword}/{page}"})
    public String search(HttpServletRequest request, @PathVariable("keyword") String keyword, @PathVariable("page") Integer page) {
        PageResult blogPageResult = blogService.getBlogsPageBySearch(keyword, page);
        request.setAttribute("blogPageResult", blogPageResult);
        request.setAttribute("pageName", "搜索");
        request.setAttribute("pageUrl", "search");
        request.setAttribute("keyword", keyword);
        request.setAttribute("newBlogs", blogService.getBlogListForIndexPage(1));
        request.setAttribute("hotBlogs", blogService.getBlogListForIndexPage(0));
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/list";
    }
 
 
    /**
     * 評(píng)論留言
     *
     * @param request     http請(qǐng)求
     * @param session     session
     * @param blogId      博客id
     * @param verifyCode  驗(yàn)證碼
     * @param commentator 評(píng)論者昵稱
     * @param email       郵箱
     * @param websiteUrl  留言者的網(wǎng)站
     * @param commentBody 評(píng)論內(nèi)容
     * @return com.hbu.myblog.util.Result
     */
    @PostMapping(value = "/blog/comment")
    @ResponseBody
    public Result comment(HttpServletRequest request, HttpSession session,
                          @RequestParam Long blogId, @RequestParam String verifyCode,
                          @RequestParam String commentator, @RequestParam String email,
                          @RequestParam String websiteUrl, @RequestParam String commentBody) {
        if (StringUtils.isEmpty(verifyCode)) {
            return ResultGenerator.genFailResult("驗(yàn)證碼不能為空");
        }
        String kaptchaCode = session.getAttribute("verifyCode") + "";
        if (StringUtils.isEmpty(kaptchaCode)) {
            return ResultGenerator.genFailResult("非法請(qǐng)求");
        }
        if (!verifyCode.equals(kaptchaCode)) {
            return ResultGenerator.genFailResult("驗(yàn)證碼錯(cuò)誤");
        }
        String ref = request.getHeader("Referer");
        if (StringUtils.isEmpty(ref)) {
            return ResultGenerator.genFailResult("非法請(qǐng)求");
        }
        if (null == blogId || blogId < 0) {
            return ResultGenerator.genFailResult("非法請(qǐng)求");
        }
        if (StringUtils.isEmpty(commentator)) {
            return ResultGenerator.genFailResult("請(qǐng)輸入稱呼");
        }
        if (StringUtils.isEmpty(email)) {
            return ResultGenerator.genFailResult("請(qǐng)輸入郵箱地址");
        }
        if (!PatternUtil.isEmail(email)) {
            return ResultGenerator.genFailResult("請(qǐng)輸入正確的郵箱地址");
        }
        if (StringUtils.isEmpty(commentBody)) {
            return ResultGenerator.genFailResult("請(qǐng)輸入評(píng)論內(nèi)容");
        }
        if (commentBody.trim().length() > 200) {
            return ResultGenerator.genFailResult("評(píng)論內(nèi)容過(guò)長(zhǎng)");
        }
        BlogComment comment = new BlogComment();
        comment.setBlogId(blogId);
        comment.setCommentator(MyBlogUtils.cleanString(commentator));
        comment.setEmail(email);
        if (PatternUtil.isURL(websiteUrl)) {
            comment.setWebsiteUrl(websiteUrl);
        }
        comment.setCommentBody(MyBlogUtils.cleanString(commentBody));
        return ResultGenerator.genSuccessResult(commentService.addComment(comment));
    }
}

以上就是Java 實(shí)戰(zhàn)項(xiàng)目錘煉之樸素風(fēng)格個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程的詳細(xì)內(nèi)容,更多關(guān)于Java 博客系統(tǒng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaGUI界面實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)方法

    JavaGUI界面實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)方法

    這篇文章主要給大家介紹了關(guān)于JavaGUI界面實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的相關(guān)資料, GUI是指圖形用戶界面,指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面,需要的朋友可以參考下
    2023-07-07
  • Java中的CountDownLatch簡(jiǎn)單理解

    Java中的CountDownLatch簡(jiǎn)單理解

    這篇文章主要介紹了Java中的CountDownLatch簡(jiǎn)單理解,CountDownLatch是一個(gè)同步工具類,用來(lái)攜調(diào)多個(gè)線程之間的同步,它是是使用一個(gè)計(jì)數(shù)器進(jìn)行實(shí)現(xiàn)的,計(jì)數(shù)器初始值為線程數(shù)量,需要的朋友可以參考下
    2024-01-01
  • 深入理解Java運(yùn)行時(shí)數(shù)據(jù)區(qū)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    深入理解Java運(yùn)行時(shí)數(shù)據(jù)區(qū)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java運(yùn)行時(shí)數(shù)據(jù)區(qū)的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-06-06
  • springmvc4+hibernate4分頁(yè)查詢功能實(shí)現(xiàn)

    springmvc4+hibernate4分頁(yè)查詢功能實(shí)現(xiàn)

    本篇文章主要介紹了springmvc4+hibernate4分頁(yè)查詢功能實(shí)現(xiàn),Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,有興趣的可以了解一下。
    2017-01-01
  • springboot實(shí)現(xiàn)執(zhí)行sql語(yǔ)句打印到控制臺(tái)

    springboot實(shí)現(xiàn)執(zhí)行sql語(yǔ)句打印到控制臺(tái)

    這篇文章主要介紹了springboot實(shí)現(xiàn)執(zhí)行sql語(yǔ)句打印到控制臺(tái)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java與php的區(qū)別淺析

    java與php的區(qū)別淺析

    在本篇文章里小編給大家整理了關(guān)于java與php的區(qū)別以及相關(guān)知識(shí)點(diǎn),有興趣的朋友們學(xué)習(xí)下。
    2019-03-03
  • 排查Java進(jìn)程內(nèi)存占比過(guò)高的方法

    排查Java進(jìn)程內(nèi)存占比過(guò)高的方法

    某天下午運(yùn)維反應(yīng)集成環(huán)境的一個(gè)Java服務(wù)內(nèi)存飆高,內(nèi)存耗的太高了,會(huì)疑似內(nèi)存泄漏,所以本文記一次排查Java進(jìn)程內(nèi)存占比過(guò)高的解決方法,需要的朋友可以參考下
    2023-10-10
  • java實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲(2)

    java實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲(2)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單五子棋小游戲的第二部分,添加游戲結(jié)束條件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Android中比較常見(jiàn)的Java super關(guān)鍵字

    Android中比較常見(jiàn)的Java super關(guān)鍵字

    這篇文章主要為大家介紹了Android中比較常見(jiàn)的Java super關(guān)鍵字,具有一定的學(xué)習(xí)參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • SpringBoot集成mybatis實(shí)例

    SpringBoot集成mybatis實(shí)例

    本篇文章主要介紹了SpringBoot集成mybatis實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04

最新評(píng)論