Java 實(shí)戰(zhàn)項(xiàng)目錘煉之樸素風(fēng)格個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡述
本系統(tǒng)功能包括: 基于vue + Springboo痼J后端分離項(xiàng)目個(gè)人博客系統(tǒng),注冊(cè) 登錄,首頁展示,喜爰圖書展示,后臺(tái)圖書維護(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;
/**
* 首頁
*
* @param request http請(qǐng)求
* @return java.lang.String
*/
@GetMapping({"/", "/index", "index.html"})
public String index(HttpServletRequest request) {
return this.page(request, 1);
}
/**
* 首頁(帶頁碼)
*
* @param request http請(qǐng)求
* @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請(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", "分類頁面");
request.setAttribute("configurations", configService.getAllConfigs());
return "blog/" + theme + "/category";
}
/**
* 詳情頁
*
* @param request http請(qǐng)求
* @param blogId 博客id
* @param commentPage 評(píng)論頁
* @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請(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)簽列表頁(帶頁碼)
*
* @param request http請(qǐng)求
* @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請(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);
}
/**
* 分類列表頁(帶頁碼)
*
* @param request http請(qǐng)求
* @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請(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);
}
/**
* 搜索列表頁(帶頁碼)
*
* @param request http請(qǐng)求
* @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";
}
/**
* 評(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)容過長");
}
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)頁面跳轉(zhuǎn)方法
這篇文章主要給大家介紹了關(guān)于JavaGUI界面實(shí)現(xiàn)頁面跳轉(zhuǎn)的相關(guān)資料, GUI是指圖形用戶界面,指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面,需要的朋友可以參考下2023-07-07
深入理解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分頁查詢功能實(shí)現(xiàn)
本篇文章主要介紹了springmvc4+hibernate4分頁查詢功能實(shí)現(xiàn),Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,有興趣的可以了解一下。2017-01-01
springboot實(shí)現(xiàn)執(zhí)行sql語句打印到控制臺(tái)
這篇文章主要介紹了springboot實(shí)現(xiàn)執(zhí)行sql語句打印到控制臺(tái)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Android中比較常見的Java super關(guān)鍵字
這篇文章主要為大家介紹了Android中比較常見的Java super關(guān)鍵字,具有一定的學(xué)習(xí)參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01

