天天看點

基于java SpringBoot和HTML的部落格系統,附源碼

作者:程式猿大波

随着網絡技術滲透到社會生活的各個方面,傳統的交流方式也面臨着變化。網際網路是一個非常重要的方向。基于Web技術的網絡考試系統可以在全球範圍内使用網際網路,可以在本地或異地進行通信,大大提高了通信和交換的靈活性。在當今高速發展的網際網路時代,部落格已經成為人們不可或缺的一部分。網際網路日志,翻譯部落格或部落格的部落格通常是個人管理的,不定期發表新文章的網站。部落格的文章通常按照從新到舊的順序排列,很多部落格集中于提供對特定主題的意見或新聞,其他部落格則用作個人日記。一般部落格包括文本、圖像、結合其他部落格或網站的連結和與主題相關的其他媒體。讓讀者以互動方式留下評論的能力是許多部落格的重要因素。大部分部落格内容主要是文本。部落格是社交媒體網絡的一部分。

部落格在中國的發展始于1998年,但直到2000年才真正流行起來。2000年部落格進入中國,迅速發展起來,但平淡無奇。直到2004年木子美事件,中國人才了解和使用部落格。2005年,不看好部落格的新浪、搜狐等國内網站也加入部落格陣營,開始進入部落格的春秋戰國時代。部落格比電子郵件和讨論組更簡單,是以成為家庭、部門、公司和團隊越來越廣泛使用的交流工具。

基于java SpringBoot和HTML的部落格系統,附源碼
基于java SpringBoot和HTML的部落格系統,附源碼

開發環境:

開發工具:IDEA、jdk1.8、SpringBoot

資料庫:MySQL

所用技術:

前端:LayUI、JQuery、HTML5+CSS3、Ajax

後端:SpringBoot+Spring-Data-Jpa

安全控件:SpringSecurity

頁面采用:Thymeleaf

項目管理:Maven

基于java SpringBoot和HTML的部落格系統,附源碼
基于java SpringBoot和HTML的部落格系統,附源碼

基本功能:

注冊、登入、發部落格、檢視部落格、部落格稽核(管理者)、個人資料設定、密碼修改、權限修改(管理者)等。

基于java SpringBoot和HTML的部落格系統,附源碼

部分代碼展示:

public class BlogsController extends CommonController<Blogs, Integer, BlogsForm> {
	@Autowired
	private BlogsSerive blogService;
	@Autowired
	private SystemDataService dataService;
	@Autowired
	private UserUtils userUtils;
	@Autowired
	private CommentService commentService;
	
	@Override
	public void manage(ModelMap map) {
		map.put("user", userUtils.getUser());
		super.manage(map);
	}

	@Override
	public void edit(BlogsForm form, ModelMap map) throws InstantiationException, IllegalAccessException {
		map.put("sf", dataService.findByDictionariesCode("SJZD_BKFL"));
		map.put("type", dataService.findByDictionariesCode("SJZD_WZLX"));
		super.edit(form, map);
	}

	@Override
	public Object save(BlogsForm form) {
		System.out.println(form.getText()+"=========");
		form.setUser(userUtils.getUser());
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Blogs model = new Blogs();
			String name = userUtils.getName();
			Integer id = form.getId();
			if(id != null) {
				model = blogService.findById(id);
				model.setUpdateDate(sdf.format(new Date()));
				model.setUpdateName(name);
			}else {
				form.setCreateDate(sdf.format(new Date()));
				form.setCreateName(name);
				model.setUpdateDate(sdf.format(new Date()));
				model.setUpdateName(name);
			}
			BeanUtils.copyProperties(form, model,"id");
			blogService.save(model);
			Integer id2;
			if(form.getId() != null) {
				id2 = form.getId();
			}else {
				id2 = blogService.findByUserNicknameAndUpdateDate(name, model.getUpdateDate()).getId();
			}
			return new AjaxResult(id2+"");
		} catch (Exception e) {
			return new AjaxResult(false,"資料儲存失敗");
		}
	}
	
	/**
	 * 通路頁面
	 * @param id
	 * @param map
	 */
	@RequestMapping(value="/visit")
	public void visit(Integer id, ModelMap map) {
		map.put("blog", blogService.findById(id));
		map.put("comment", commentService.findByBlogId(id));
	}

	/**
	 * 通路頁面資料
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/blogText")
	@ResponseBody
	public Object blogText(Integer id) {
		return blogService.findById(id).getText();
	}
	
	@RequestMapping(value="/audit")
	public void audit(ModelMap map) {
		
	}
	
	@RequestMapping(value="/indexBlog")
	public void indexBlog() {
		
	}
	
	/**
	 * 同意
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/consent")
	@ResponseBody
	public Object consent(Integer id) {
		try {
			Blogs blogs = blogService.findById(id);
			blogs.setBlogStatic("稽核通過");
			blogService.save(blogs);
			return new AjaxResult("同意成功");
		} catch (Exception e) {
			return new AjaxResult(false,"同意失敗");
		}
	}
	
	/**
	 * 拒絕
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/refuse")
	@ResponseBody
	public Object refuse(Integer id, String jy) {
		try {
			Blogs blogs = blogService.findById(id);
			blogs.setBlogStatic("已拒絕");
			blogs.setSuggest(jy);
			blogService.save(blogs);
			return new AjaxResult("拒絕成功");
		} catch (Exception e) {
			return new AjaxResult(false,"拒絕失敗");
		}
	}
	
	@RequestMapping(value="/fysj")
	@ResponseBody
	public Object fysj(Integer page, BlogsForm form) {
		Sort sort=Sort.by(Sort.Direction.DESC, "updateDate");
		Pageable pageable = PageRequest.of(page-1, 10, sort);
		Page<Blogs> blog;
		Specification<Blogs> spec = buildSpec2(form);
		blog = blogService.findAll(spec, pageable);
		return FlowloadUtils.buildResult(blog);
	}
	
	@RequestMapping(value="/fysj2")
	@ResponseBody
	public Object fysj2(Integer page, BlogsForm form) {
		Sort sort=Sort.by(Sort.Direction.DESC, "updateDate");
		Pageable pageable = PageRequest.of(page-1, 10, sort);
		Page<Blogs> blog;
		Specification<Blogs> spec = buildSpec3(form);
		blog = blogService.findAll(spec, pageable);
		return FlowloadUtils.buildResult(blog);
	}
	
	private Specification<Blogs> buildSpec3(BlogsForm form) {
		Specification<Blogs> specification = new Specification<Blogs>() {

			private static final long serialVersionUID = 1L;
			
			@Override
			public Predicate toPredicate(Root<Blogs> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				HashSet<Predicate> rules=new HashSet<>();
				Predicate difficultylevel = cb.equal(root.get("blogStatic"), "稽核通過");
				rules.add(difficultylevel);
				return cb.and(rules.toArray(new Predicate[rules.size()]));
			}

		};
		return specification;
	}

	private Specification<Blogs> buildSpec2(BlogsForm form) {
		Specification<Blogs> specification = new Specification<Blogs>() {

			private static final long serialVersionUID = 1L;
			
			@Override
			public Predicate toPredicate(Root<Blogs> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				HashSet<Predicate> rules=new HashSet<>();
				SysUser user = userUtils.getUser();
				Predicate difficultylevel = cb.equal(root.get("user").get("id"), user.getId());
				rules.add(difficultylevel);
				return cb.and(rules.toArray(new Predicate[rules.size()]));
			}

		};
		return specification;
	}

	@RequestMapping(value="/page2")
	@ResponseBody
	public HashMap<String, Object> page2(ModelMap map, DataGridParam param, BlogsForm form) {
		Sort sort=Sort.by("id");
		Pageable pabeable = param.getPageable(sort);
		Specification<Blogs> spec = buildSpec1(form);
		Page<Blogs> page = blogService.findAll(spec, pabeable);
		return DataGridUtils.buildResult(page);
	}

	private Specification<Blogs> buildSpec1(BlogsForm form) {
		Specification<Blogs> specification = new Specification<Blogs>() {

			private static final long serialVersionUID = 1L;
			
			@Override
			public Predicate toPredicate(Root<Blogs> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
				HashSet<Predicate> rules=new HashSet<>();
				Predicate difficultylevel = cb.like(root.get("blogStatic"), "%待稽核%");
				rules.add(difficultylevel);
				return cb.and(rules.toArray(new Predicate[rules.size()]));
			}

		};
		return specification;
	}
	
	/**
	 * 評論
	 */
	@RequestMapping(value="/comment")
	@ResponseBody
	public Object comment(String comment, Integer id) {
		try {
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Comment model = new Comment();
			model.setText(comment);
			model.setUser(userUtils.getUser());
			model.setBlog(blogService.findById(id));
			model.setRead2(false);
			model.setCreateDate(sdf.format(new Date()));
			commentService.save(model);
			return new AjaxResult("評論成功");
		} catch (Exception e) {
			return new AjaxResult(false,"評論失敗");
		}
	}
}           

擷取源碼請關注後私信“20230728”