最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、項目簡述

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

二、項目運(yùn)行

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

項目技術(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;
 
    /**
     * 首頁
     *
     * @param request http請求
     * @return java.lang.String
     */
    @GetMapping({"/", "/index", "index.html"})
    public String index(HttpServletRequest request) {
        return this.page(request, 1);
    }
 
    /**
     * 首頁(帶頁碼)
     *
     * @param request http請求
     * @param pageNum 頁碼
     * @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", "首頁");
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/index";
    }
 
    /**
     * Categories頁面(包括分類數(shù)據(jù)和標(biāo)簽數(shù)據(jù))
     *
     * @param request http請求
     * @return java.lang.String
     */
    @GetMapping({"/categories"})
    public String categories(HttpServletRequest request) {
        request.setAttribute("hotTags", tagService.getBlogTagCountForIndex());
        request.setAttribute("categories", categoryService.getAllCategories());
        request.setAttribute("pageName", "分類頁面");
        request.setAttribute("configurations", configService.getAllConfigs());
        return "blog/" + theme + "/category";
    }
 
    /**
     * 詳情頁
     *
     * @param request     http請求
     * @param blogId      博客id
     * @param commentPage 評論頁
     * @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)簽列表頁
     *
     * @param request http請求
     * @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)簽列表頁(帶頁碼)
     *
     * @param request http請求
     * @param tagName 標(biāo)簽名稱
     * @param page    頁碼
     * @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";
    }
 
    /**
     * 分類列表頁
     *
     * @param request      http請求
     * @param categoryName 類別名稱
     * @return java.lang.String
     */
    @GetMapping({"/category/{categoryName}"})
    public String category(HttpServletRequest request, @PathVariable("categoryName") String categoryName) {
        return category(request, categoryName, 1);
    }
 
    /**
     * 分類列表頁(帶頁碼)
     *
     * @param request      http請求
     * @param categoryName 類別名稱
     * @param page         頁碼
     * @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";
    }
 
    /**
     * 搜索列表頁
     *
     * @param request http請求
     * @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);
    }
 
    /**
     * 搜索列表頁(帶頁碼)
     *
     * @param request http請求
     * @param keyword 關(guān)鍵詞
     * @param page    頁碼
     * @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";
    }
 
 
    /**
     * 評論留言
     *
     * @param request     http請求
     * @param session     session
     * @param blogId      博客id
     * @param verifyCode  驗證碼
     * @param commentator 評論者昵稱
     * @param email       郵箱
     * @param websiteUrl  留言者的網(wǎng)站
     * @param commentBody 評論內(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("驗證碼不能為空");
        }
        String kaptchaCode = session.getAttribute("verifyCode") + "";
        if (StringUtils.isEmpty(kaptchaCode)) {
            return ResultGenerator.genFailResult("非法請求");
        }
        if (!verifyCode.equals(kaptchaCode)) {
            return ResultGenerator.genFailResult("驗證碼錯誤");
        }
        String ref = request.getHeader("Referer");
        if (StringUtils.isEmpty(ref)) {
            return ResultGenerator.genFailResult("非法請求");
        }
        if (null == blogId || blogId < 0) {
            return ResultGenerator.genFailResult("非法請求");
        }
        if (StringUtils.isEmpty(commentator)) {
            return ResultGenerator.genFailResult("請輸入稱呼");
        }
        if (StringUtils.isEmpty(email)) {
            return ResultGenerator.genFailResult("請輸入郵箱地址");
        }
        if (!PatternUtil.isEmail(email)) {
            return ResultGenerator.genFailResult("請輸入正確的郵箱地址");
        }
        if (StringUtils.isEmpty(commentBody)) {
            return ResultGenerator.genFailResult("請輸入評論內(nèi)容");
        }
        if (commentBody.trim().length() > 200) {
            return ResultGenerator.genFailResult("評論內(nèi)容過長");
        }
        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 實戰(zhàn)項目錘煉之樸素風(fēng)格個人博客系統(tǒng)的實現(xiàn)流程的詳細(xì)內(nèi)容,更多關(guān)于Java 博客系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java中子類繼承父類,程序運(yùn)行順序的深入分析

    java中子類繼承父類,程序運(yùn)行順序的深入分析

    本篇文章是對java中子類繼承父類,程序運(yùn)行順序進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 原生Java操作mysql數(shù)據(jù)庫過程解析

    原生Java操作mysql數(shù)據(jù)庫過程解析

    這篇文章主要介紹了原生Java操作mysql數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • springboot整合quartz定時任務(wù)框架的完整步驟

    springboot整合quartz定時任務(wù)框架的完整步驟

    在做項目時有時候會有定時器任務(wù)的功能,比如某某時間應(yīng)該做什么,多少秒應(yīng)該怎么樣之類的,下面這篇文章主要給大家介紹了關(guān)于springboot整合quartz定時任務(wù)框架的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Java超級實用的Freemarker工具類

    Java超級實用的Freemarker工具類

    這篇文章主要介紹了Java超級實用的Freemarker工具類,文章圍繞相關(guān)資料介紹以及代碼描述非常詳細(xì),需要的小伙伴可以參考一下,希望對你得學(xué)習(xí)有所幫助
    2022-02-02
  • Java?json轉(zhuǎn)換實體類(JavaBean)及實體類(JavaBean)轉(zhuǎn)換json代碼示例

    Java?json轉(zhuǎn)換實體類(JavaBean)及實體類(JavaBean)轉(zhuǎn)換json代碼示例

    這篇文章主要介紹了兩種常見的JSON與Java實體類相互轉(zhuǎn)換的方法,分別是使用庫Jackson、Gson、Fastjson和在線工具,無論是將JSON轉(zhuǎn)換為Java實體類還是將Java實體類轉(zhuǎn)換為JSON,這些方法都能顯著簡化開發(fā)過程,需要的朋友可以參考下
    2024-12-12
  • 如何使用MyBatis Plus實現(xiàn)數(shù)據(jù)庫curd操作

    如何使用MyBatis Plus實現(xiàn)數(shù)據(jù)庫curd操作

    MyBatis-Plus是一個MyBatis 的增強(qiáng)工具,在MyBatis,的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。 這篇文章主要介紹了MyBatis Plus實現(xiàn)數(shù)據(jù)庫curd操作,需要的朋友可以參考下
    2021-09-09
  • MyBatis-Plus 快速入門案例(小白教程)

    MyBatis-Plus 快速入門案例(小白教程)

    這篇文章主要介紹了MyBatis-Plus 快速入門案例(小白教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 教你怎么實現(xiàn)java語言的在線編譯

    教你怎么實現(xiàn)java語言的在線編譯

    這篇文章主要介紹了教你怎么實現(xiàn)java語言的在線編譯,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java字符串常量池和intern方法解析

    Java字符串常量池和intern方法解析

    本文主要介紹了Java字符串常量池和intern方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Spring Boot整合Thymeleaf詳解

    Spring Boot整合Thymeleaf詳解

    這篇文章主要介紹了Spring Boot整合Thymeleaf詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08

最新評論

成安县| 怀柔区| 永修县| 山东| 谢通门县| 广安市| 武乡县| 稻城县| 三河市| 海口市| 邯郸县| 抚松县| 扎赉特旗| 连州市| 广南县| 宝清县| 清新县| 隆回县| 鹰潭市| 龙海市| 鄂伦春自治旗| 调兵山市| 始兴县| 纳雍县| 讷河市| 靖远县| 合阳县| 灵台县| 黄骅市| 邹平县| 西丰县| 紫金县| 保定市| 高青县| 洛浦县| 武义县| 中卫市| 玛曲县| 芦溪县| 普兰县| 茂名市|