Java 實戰(zhàn)項目錘煉之樸素風(fēng)格個人博客系統(tǒng)的實現(xiàn)流程
一、項目簡述
本系統(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)文章
springboot整合quartz定時任務(wù)框架的完整步驟
在做項目時有時候會有定時器任務(wù)的功能,比如某某時間應(yīng)該做什么,多少秒應(yīng)該怎么樣之類的,下面這篇文章主要給大家介紹了關(guān)于springboot整合quartz定時任務(wù)框架的相關(guān)資料,需要的朋友可以參考下2022-01-01
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是一個MyBatis 的增強(qiáng)工具,在MyBatis,的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。 這篇文章主要介紹了MyBatis Plus實現(xiàn)數(shù)據(jù)庫curd操作,需要的朋友可以參考下2021-09-09

