基于JAVA SpringBoot和HTML美食网站博客程序设计

摘要

美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能,还为用户提供了分享和交流的平台。随着移动互联网的发展,美食网站应该更加注重用户体验和个性化服务,提供更加精准的推荐和定制化的功能。同时,美食网站也应该加强与餐饮业的合作,推动餐饮业的创新和发展。总之,美食网站为用户提供了一个全面了解和学习美食的平台,帮助他们发现新的食谱、餐厅和烹饪技巧,享受美食带来的乐趣。

所用技术

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

后端:SpringBoot+Spring-Data-Jpa

安全控件:SpringSecurity

页面采用:Thymeleaf

项目管理:Maven

基本功能

拥有管理员和普通用户两种角色;

注册、登录、发美食博客、查看美食博客、美食博客审核(管理员)、个人资料设置、密码修改、权限修改(管理员)等。

部分代码展示

java 复制代码
@Controller
@RequestMapping(value="/blog")
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,"评论失败");
		}
	}
}

演示视频

基于JAVA SpringBoot和HTML美食网站博客程序

相关推荐
神奇的程序员4 小时前
我的软件冲进苹果商店下载榜前 50 了
前端
阳光是sunny4 小时前
别再被 worktree 绕晕了!AI 编程时代你必须掌握的 Git 隔离神器
前端·人工智能·后端
万少6 小时前
万少的博客 - 技术分享与解决方案
前端·javascript·后端
尘世中一位迷途小书童8 小时前
用 Cesium 撸了一个森林火情监控大屏,弧线、粒子、发光效果都齐了
前端·javascript
IT_陈寒9 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
月光下的丝瓜9 小时前
Flutter 国内安装指南
前端·flutter
玄星啊10 小时前
AI 编程的第 30 天,我怀念古法 Coding 了
前端·ai编程
Jolyne_10 小时前
Angular基础速通
前端·angular.js
锋行天下11 小时前
半秒开!还有谁!!!
前端·vue.js·架构
代码搬运媛12 小时前
git 下中文文件名乱码问题解决
前端