基于java+springboot+layui的流浪动物交流信息平台设计实现

embedded/2024/11/14 23:10:56/

javaspringbootlayui_0">基于java+springboot+layui的流浪动物交流信息平台设计实现

🍅 作者主页 网顺技术团队
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 文末获取源码联系方式 📝
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

文章目录

  • 基于java+springboot+layui的流浪动物交流信息平台设计实现
  • 前言介绍:
  • 技术工具:
  • 模块设计:
  • 系统架构:
  • 功能截图:
    • 用户登录注册:
    • 前端首页:
    • 分类查看:
    • 详情查看:
    • 收藏领养管理:
    • 我的个人信息:
    • 我的领养收藏:
    • 发布流浪交流信息:
    • 我的发布:
    • 后端管理:
    • 后端首页:
    • 用户管理:
    • 类型管理:
    • 详情管理:
    • 评论回复管理:
    • 通知公告等:
  • 代码实现:

前言介绍:

漫步校园中,偶尔会看到几只猫,或是晃做在小道上,或是蜷作一团躺在花坛边上,就像是无家可归的可怜的孩子,真叫人心疼!其实,它们就是一些被人遗弃的流浪宠物。 流浪宠物是指无主、长期在野外生存的宠物。与野猫(狗)不同,流浪宠物特指那些曾被人们收养过,后来因为某些原因、被抛弃的宠物。某些原因,可能是因为主人的乔迁,可能是经济跟不上,也可能只是主人不喜欢了,就遗弃了。事实上,在全国社会各地,还有许许多多同他们一样遭遇被遗弃的命运的可怜的猫儿狗儿。 校园里的这些猫儿,算是比较幸运的,因为经常有好心的同学会给它们喂一些吃的,它们还不至于饿死。另外的那些流浪宠物,不仅失去了温暖的家,失去了主人的关爱,就连基本的餐饷都成了问题。
在现在猫狗等小动物自被驯化以来,作为人类的伙伴,他们也有自己的理智与情感,我们应该给予充分的尊重和关怀。但是随着社会经济的发展,猫狗等小动物数量日益增多、部分人们的嫌弃和遗弃,流浪动物越来越多。这就需要社会机构或者热心人士关怀和救助这些流浪动物。在社会网络化的背景下,推进人与动物和谐共处符合时代特点。而我们开发一个自愿救助流浪动物网站能够为一些机构和爱心人士提供平台,让小宠物们能更好的找到主人使它们也更容易的生存下去。同时,也可以为一些不愿意继续养宠物的主人提供转让服务。提高人们的动物保护意识,动物也是大自然的一员人们应该保护它们,倡导爱护动物的社会风气,促进人与动物更和谐的相处。因此,本课题的研究符合时代现状,将为营造一个人与自然动物生命体和谐共处的良好社会环境走出一小步。

技术工具:

开发工具:IDEA 2021.3、navicat for mysql 、postman。

开发语言java、jdk1.8、mysql5。

硬件环境:Windows 10操作系统、Google浏览器等。

主要技术:springboot、mybatis-plus、layui、mysql等

模块设计:

1.用户模块管理:用户登录、用户注册、用户的查询、删除操作、

2.流浪动物首页管理:首页列表的展示、添加、修改、删除操作、

3.流浪动物信息详情管理:流浪动物信息详情列表的查看、添加、删除等操作、

4.管理员信息管理:管理员信息的查看、修改、

5.公告信息管理:公告信息的查看、添加、修改、删除操作、

6.用户模块管理:用户列表查询、添加、删除、、

7.用户评论模块管理:用户评论查询、添加、删除、

8.注销退出登录管理

系统架构:

在这里插入图片描述

功能截图:

用户登录注册:

在这里插入图片描述

前端首页:

在这里插入图片描述

分类查看:

在这里插入图片描述

详情查看:

在这里插入图片描述
评论回复信息:这里用户头像替换成自己本地路径即可显示
在这里插入图片描述

收藏领养管理:

在这里插入图片描述

我的个人信息:

在这里插入图片描述

我的领养收藏:

在这里插入图片描述

发布流浪交流信息:

在这里插入图片描述

我的发布:

在这里插入图片描述

后端管理:

在这里插入图片描述

后端首页:

在这里插入图片描述

用户管理:

在这里插入图片描述

类型管理:

在这里插入图片描述

详情管理:

在这里插入图片描述
在这里插入图片描述

评论回复管理:

在这里插入图片描述

通知公告等:

在这里插入图片描述

代码实现:

用户登录:

java">/*** 根路径以及其他请求处理* * @author admin**/
@Controller
public class IndexController {@Value("${imageFilePath}")private String imageFilePath; // 文件路径@Resourceprivate NoticeService noticeService;@Resourceprivate UserService userService;@Resourceprivate ArticleService articleService;@Resourceprivate ClassifyService classifyService;@RequestMapping("/")public String index(HttpSession session) {// 查询公告session.setAttribute("noticeList", noticeService.list(0, 5));return "index";// 跳转到index.html}/*** 登录页面* * @return*/@RequestMapping("/login")public String login() {return "login";}/*** 前台登录页面* * @return*/@RequestMapping("/webLogin")public String webLogin() {return "webLogin";}/*** 注册* * @return*/@RequestMapping("/regist")public String regist() {return "regist";}/*** 保存注册信息* * @param user* @return*/@RequestMapping("/saveUser")public String saveUser(User user) {
//    List<Article> randomArticle = articleService.getRandomArticle(3);
//    String ids="";
//    for (int i = 0; i < randomArticle.size(); i++) {
//      Integer articleId = randomArticle.get(i).getArticleId();
//      ids+=articleId+",";
//    }
//    ids = ids.substring(0, ids.length() -1);
//    user.setArticleIds(ids);user.setRegistrationDate(new Date());userService.save(user);return "webLogin";}/*** 退出登录* * @param request* @return*/@RequestMapping("/quit")public String quit(HttpServletRequest request) {HttpSession session = request.getSession();session.removeAttribute("user");return "index";}/*** 退出登录* * @param request* @return*/@RequestMapping("/quitAdmin")public String quitAdmin(HttpServletRequest request) {HttpSession session = request.getSession();session.removeAttribute("user");return "login";}/*** 验证登录* * @param user* @param request* @return*/@RequestMapping("/checkLogin")public ModelAndView checkLogin(User user, HttpServletRequest request) {ModelAndView mav = new ModelAndView();HttpSession session = request.getSession();User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());if (u == null) {mav.addObject("user", user);mav.addObject("errorInfo", "用户名或者密码错误!");mav.setViewName("webLogin");} else {u.setLatelyLoginTime(new Date());userService.save(u);session.setAttribute("user", u);mav.addObject("username", u.getUsername());mav.addObject("user", u);mav.addObject("success", true);mav.setViewName("/index");}return mav;}/*** 查看个人信息* * @return*/@RequestMapping("viewPerson")public ModelAndView viewPerson(HttpServletRequest request) {User user = (User) request.getSession().getAttribute("user");ModelAndView mav = new ModelAndView();User u = userService.findById(user.getUserId());mav.addObject("user", u);mav.setViewName("/viewPerson");return mav;}/*** 查看个人收藏夹* * @return*/@RequestMapping("viewCollection")public ModelAndView viewCollection(HttpServletRequest request, HttpSession session) {User user = (User) request.getSession().getAttribute("user");ModelAndView mav = new ModelAndView();User u = userService.findById(user.getUserId());String artIds = u.getArticleIds();List<String> result = new ArrayList<>();if (StringUtils.isNotBlank(artIds)) {result = Arrays.asList(StringUtils.split(artIds, ","));}List<Integer> retIds = new ArrayList<>();for (String temp : result) {retIds.add(Integer.valueOf(temp).intValue());}List<Article> retArt = articleService.findByListId(retIds);session.setAttribute("noticeList", noticeService.list(0, 5));mav.addObject("retArt", retArt);mav.addObject("user", u);mav.setViewName("/viewCollection");return mav;}/*** 查看个人关注用户* * @return*/@RequestMapping("viewFocusUser")public ModelAndView viewFocusUser(HttpServletRequest request, HttpSession session) {User user = (User) request.getSession().getAttribute("user");ModelAndView mav = new ModelAndView();User u = userService.findById(user.getUserId());String userIds = u.getUserIds();List<String> result = new ArrayList<>();if (StringUtils.isNotBlank(userIds)) {result = Arrays.asList(StringUtils.split(userIds, ","));}List<Integer> retIds = new ArrayList<>();for (String temp : result) {retIds.add(Integer.valueOf(temp).intValue());}List<User> retArt = userService.findByListId(retIds);session.setAttribute("noticeList", noticeService.list(0, 5));mav.addObject("retArt", retArt);mav.addObject("user", u);mav.setViewName("/viewFocusUser");return mav;}/*** 保存用户信息* * @param user* @return*/@RequestMapping("/save")public ModelAndView save(User user) {ModelAndView mav = new ModelAndView();userService.save(user);mav.setViewName("/index");return mav;}/*** 流浪动物信息发布页面* * @param request* @return*/// @RequestMapping("notePage")// public String notePage(HttpServletRequest request, Model model) {// User user = (User) request.getSession().getAttribute("user");// if (user == null) {// return "webLogin";// }// List<Classify> list = classifyService.findAll();// model.addAttribute("list", list);// return "one";// }@RequestMapping("notePage")public ModelAndView notePage(HttpServletRequest request) {ModelAndView mav = new ModelAndView();User user = (User) request.getSession().getAttribute("user");if (user == null) {mav.setViewName("/webLogin");return mav;}List<Classify> list = classifyService.findAll();mav.addObject("list", list);mav.setViewName("/one");return mav;}/*** 保存笔记* * @param article* @param request* @return*/@RequestMapping("addNote")public ModelAndView addNote(Article article, HttpServletRequest request) {ModelAndView mav = new ModelAndView();// 获取当前用户信息User user = (User) request.getSession().getAttribute("user");article.setUserId(user.getUserId());article.setPublishDate(new Date());article.setClick(0);article.setCommentNum(0);article.setContentNoTag(StringUtil.Html2Text(article.getContent()));articleService.save(article);mav.setViewName("/index");return mav;}@RequestMapping("saveNote")public ModelAndView saveNote(Article article, HttpServletRequest request) {ModelAndView mav = new ModelAndView();Article a = articleService.findById(article.getArticleId());article.setPublishDate(a.getPublishDate());// 获取当前用户信息articleService.save(article);mav.setViewName("/index");return mav;}/*** 查看笔记* * @return*/@RequestMapping("viewNote")public String viewNote(HttpSession session) {session.setAttribute("noticeList", noticeService.list(0, 5));return "mylist";}@RequestMapping("/delete/{id}")public String delete(@PathVariable(value = "id") String id) throws Exception {articleService.delete(Integer.parseInt(id));return "mylist";}/*** 查看个人笔记加载数据列表* * @param article* @param publishDates* @param page* @param pageSize* @return*/@RequestMapping("/mylist")public Map<String, Object> list(Article article,@RequestParam(value = "publishDates", required = false) String publishDates,@RequestParam(value = "page", required = false) Integer page,@RequestParam(value = "pageSize", required = false) Integer pageSize, HttpServletRequest request) {Map<String, Object> resultMap = new HashMap<String, Object>();// User user = (User) request.getSession().getAttribute("user");// article.setUserId(user.getUserId());String s_bPublishDate = null; // 开始时间String s_ePublishDate = null; // 结束时间if (StringUtil.isNotEmpty(publishDates)) {String[] strs = publishDates.split(" - "); // 拆分时间段s_bPublishDate = strs[0];s_ePublishDate = strs[1];}Long total = articleService.getCount(article, s_bPublishDate, s_ePublishDate);int totalPage = (int) (total % pageSize == 0 ? total / pageSize : total / pageSize + 1); // 总页数resultMap.put("totalPage", totalPage);resultMap.put("errorNo", 0);resultMap.put("data", articleService.list(article, s_bPublishDate, s_ePublishDate, page - 1, pageSize));resultMap.put("total", total);return resultMap;}/*** 后台默认首页* * @return*/@RequestMapping("/index")public String root() {return "/common/index";}/*** 博主信息页面* * @return*/@RequestMapping("/blogger")public String blogger() {return "/blogger/index";}/*** 图片上传处理 @Title: ckeditorUpload @param file 图片文件 @return 参数说明 @return* Map<String,Object> 返回类型 @throws*/@ResponseBody@RequestMapping("/upload")public Map<String, Object> ckeditorUpload(@RequestParam("file") MultipartFile file) {Map<String, Object> resultMap = new HashMap<String, Object>();Map<String, Object> resultMap1 = new HashMap<String, Object>();String fileName = file.getOriginalFilename(); // 获取文件名String suffixName = fileName.substring(fileName.lastIndexOf(".")); // 获取文件的后缀String newFileName = "";try {newFileName = DateUtil.getCurrentDateStr() + suffixName; // 新文件名FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath + newFileName)); // 上传} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}resultMap.put("code", 0);resultMap1.put("filePath", newFileName);resultMap.put("data", resultMap1);return resultMap;}}

全局yml:

server: port: 80servlet:context-path: /spring: datasource: driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/baby_mobile?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456jpa:hibernate:ddl-auto: updateshow-sql: truethymeleaf:cache: false

获取源码
总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考
🍅 查看下方微信号获取联系方式 承接各种定制系统 📝
🚀🚀🚀精彩系列推荐
Java毕设项目精品实战案例《1000套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人


http://www.ppmy.cn/embedded/137619.html

相关文章

三周精通FastAPI:37 包含 WSGI - Flask,Django,Pyramid 以及其它

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/advanced/wsgi/ 包含 WSGI - Flask&#xff0c;Django&#xff0c;其它 您可以挂载多个 WSGI 应用&#xff0c;正如您在 Sub Applications - Mounts, Behind a Proxy 中所看到的那样。 为此, 您可以使用 WSGIMiddlewar…

计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021

作者&#xff1a;程序媛9688开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0…

保研考研机试攻略(满分篇):第二章——满分之路上(1)

&#x1f368;&#x1f368;&#x1f368;高分篇的内容已经将机试可能涉及到的题型及考点都一一列举出来&#xff0c;并给大家提供了练习题目&#xff0c;帮助大家巩固基础加深理解。在大多数院校的机试中&#xff0c;学会高分篇的内容已经足够考到 90 分以上的成绩&#xff0c…

李飞飞从底层逆袭到AI行业先锋改变世界给我带来什么启发?

文章目录 前言艰难的移民历程:从成都到美国的文化冲击经济困境中的坚持:从洗衣店到哈佛梦关键的导师:鲍勃老师的影响与数学天赋的发现学术与创业的选择:听从母亲的建议,走向学术巅峰ImageNet的开创:定义现代图像识别技术的基石中美文化的交融:始终不忘中国身份的她启发前…

【Chapter 3】Machine Learning Classification Case_Prediction of diabetes-XGBoost

文章目录 1、XGBoost Algorithm2、Comparison of algorithm implementation between Python code and Sentosa_DSML community edition(1) Data reading and statistical analysis(2)Data preprocessing(3)Model Training and Evaluation(4)Model visualization 3、summarize 1…

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)

一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

Java集合Queue——针对实习面试

目录 Java集合QueueQueue接口的特点是什么&#xff1f;Queue和Deque的区别&#xff1f;ArrayDeque和LinkedList的区别&#xff1f;什么是PriorityQueue&#xff1f;什么是BlockingQueue&#xff1f; Java集合Queue Queue接口的特点是什么&#xff1f; Queue接口在Java中是一个…