基于SSM框架实现宠物领养系统的设计与实现

简介: 基于SSM框架实现宠物领养系统的设计与实现

项目编号:BS-PT-052

项目说明:

  本项目主要实现对流浪动物的救助和收养功能。前端用户可以注册并登陆,在系统前端页面可以实现对流浪动物相关知识的学习以及在线进行动物的收养操作。同时还为平台的运营者提供后台管理功能:主要包含用户管理、管理员管理、流浪动物管理、收养审批管理等相关功能。本系统功能完整,界面简洁大方,适合做毕业设计和课程设计使用。


本宠物领养系统主要是基于JAVA编程体系进行的研究开发,相较于其他编程语言,能够有效的减少成本。本系统采用的框架为SSM,包含了Spring、MyBatis,其中SpringMVC为Spring中的一部分。SpringMVC以及MyBatis能够相互衔接,减少开发工作中重复的量,为开发工作省了很大的功夫,提高了效率。而基础框架则选择Spring boot框架,使得配置能够更为的简单,减少了对环境的需求。


本项目使用三层架构设计,将整个程序主要分为用户视图层、逻辑接口层、数据处理层,各个层次之间分工明确、互不影响,即使有出现问题也只需维护出现问题的层次,不会影响其他的层次,能够将项目的结构设计的非常的清晰明了。各层次高内聚、低耦合,通过互相有效的配合来完成系统中的高效运行,将该架构的结构清晰、可维护性强、可拓展性高等优点展示得淋漓尽致。


本平台选择了Bootstrap及LayUI作为前端开发框架,Bootstrap能够提供HTML以及CSS规范,且包含JavaScript库以及Glyphicons库,其中具有许多的动态页面元素以及图形元素,便于我们对前端页面的开发。而LayUI门槛相对于其他框架来说较低,配置较为简便,没有那么的繁琐,可以提高开发的效率。同时,本平台还使用了MVC设计应用模式,能够将业务模型以及用户界面的代码实现分类,从而使同一程序中能够使用不同的表现形式。MVC还使用了一种业务逻辑、数据与界面显示分离的方式来组织代码,将许许多多的业务逻辑汇聚到同一部件之中,从而导致在改进界面与用户交互的同时,不用再一次编写业务逻辑,从而提高编程的效率,减少编码的时间。

运行环境

jdk8+tomcat8+mysql5.7+IntelliJ IDEA(或eclipse)+maven

项目技术(必填)

spring+spring mvc+mybatis+bootstrap+jquery

下面展示一下系统的基本功能:

image.png

image.png

image.png

image.png

前端用户注册、登陆

image.png

image.png

后台用户登陆

image.png

后台管理界面

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

以上是基于SSM实现的宠物领养系统的功能展示。

宠物领养的核心代码:

package com.ecjtu.controller;
import com.ecjtu.entity.Admin;
import com.ecjtu.service.AdminService;
import com.ecjtu.util.Message;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 */
@Controller
@RequestMapping("admin")
public class AdminController {
    @Autowired
    private AdminService adminService;
    @RequestMapping("admins.action")
    @ResponseBody
    public Message getAdmins(@RequestParam(value = "pn",defaultValue = "1") Integer pn){
        // 引入PageHelper分页插件
        // 在查询之前只需要调用,传入页码,以及每页的大小
        PageHelper.startPage(pn,4);
        List<Admin> admins = adminService.getAdmins();
        // startPage后面紧跟的这个查询就是一个分页查询
        System.out.println(admins+"admins");
        // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
        // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
        PageInfo page=new PageInfo(admins,2);
        return Message.success().add("pageInfo",page);
    }
    @RequestMapping("create.action")
    @ResponseBody
    public Message addAdmin(Admin admin){
        int i = adminService.addAdmin(admin);
        System.out.println(i);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("delete.action")
    @ResponseBody
    public Message deleteAdmin(Integer id){
        int i = adminService.deleteAdmin(id);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("update.action")
    @ResponseBody
    public Message updateAdmin(Admin admin,MultipartFile file, HttpServletRequest request){
        System.out.println(111);
        if(file!=null && file.equals("")==false) {
            String load = FileLoad.load(file,request);
            admin.setPic(load);
        }
        int i = adminService.updateAdmin(admin);
        System.out.println(i);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findById.action")
    @ResponseBody
    public Message findById(Integer id) throws ParseException {
        Admin admin = adminService.findById(id);
        if(admin!=null){
            return Message.success().add("admin",admin);
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("/findByName.action")
    @ResponseBody
    public Message findByName(@RequestParam(value = "pn",defaultValue = "1") Integer pn,String adminName){
        PageHelper.startPage(pn,4);
        List<Admin> admins = adminService.findByName(adminName);
        if(admins!=null){
            PageInfo page = new PageInfo(admins,2);
            return Message.success().add("pageInfo",page);
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("logout.action")
    public String logout(){
        return "admin/login";
    }
}
package com.ecjtu.controller;
import com.ecjtu.entity.Answer;
import com.ecjtu.entity.Users;
import com.ecjtu.service.AnswerService;
import com.ecjtu.service.CommentService;
import com.ecjtu.util.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
 */
@Controller
@RequestMapping("answer")
public class AnswerController {
    @Autowired
    private AnswerService answerService;
    @Autowired
    private CommentService commentService;
    @RequestMapping("create.action")
    @ResponseBody
    public Message addAnswer(Integer ids,String content, HttpServletRequest request){
        Answer answer=new Answer();
        Users user = (Users)request.getSession().getAttribute("user");
        answer.setComment(commentService.findById(ids));
        answer.setAnswerTime(new Date());
        answer.setUser(user);
        answer.setContent(content);
        int i = answerService.addAnswer(answer);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("creates.action")
    @ResponseBody
    public Message addAnswers(Integer id,String content,Integer comment_id,HttpServletRequest request){
        Answer answer=new Answer();
        Users user = (Users)request.getSession().getAttribute("user");
        answer.setComment(commentService.findById(comment_id));
        answer.setAnswer(answerService.findById(id));
        answer.setAnswerTime(new Date());
        answer.setUser(user);
        answer.setContent(content);
        int i = answerService.addAnswers(answer);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findByCommentId.action")
    @ResponseBody
    public Message findByCommentId(Integer comment_id){
        List<Answer> answers = answerService.findByCommentId(comment_id);
        System.out.println(answers);
        if(answers!=null){
            return Message.success().add("answer",answers);
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findById.action")
    @ResponseBody
    public Message findById(Integer id){
        Answer answer = answerService.findById(id);
        System.out.println(answer);
        if(answer!=null){
            return Message.success().add("answer",answer);
        }else{
            return Message.fail();
        }
    }
}
package com.ecjtu.controller;
import com.ecjtu.entity.Apply;
import com.ecjtu.service.ApplyService;
import com.ecjtu.util.Message;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Date;
import java.util.List;
/**
 */
@Controller
@RequestMapping("apply")
public class ApplyController {
    @Autowired
    private ApplyService applyService;
    @RequestMapping("applys.action")
    @ResponseBody
    public Message getBlog(@RequestParam(value = "pn",defaultValue = "1") Integer pn){
        // 引入PageHelper分页插件
        // 在查询之前只需要调用,传入页码,以及每页的大小
        PageHelper.startPage(pn,3);
        List<Apply> applys = applyService.getApply();
        System.out.println(applys);
        // startPage后面紧跟的这个查询就是一个分页查询
        // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
        // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
        PageInfo page=new PageInfo(applys,2);
        return Message.success().add("pageInfo",page);
    }
    @RequestMapping("create.action")
    @ResponseBody
    public Message addApply(Apply apply){
        apply.setApplyTime(new Date());
        apply.setState(2);
        int i = applyService.addApply(apply);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("delete.action")
    @ResponseBody
    public Message deleteApply(Integer id){
        int i = applyService.deleteApply(id);
        if(i>0){
            return Message.success();
        }else {
            return Message.fail();
        }
    }
    @RequestMapping("update.action")
    @ResponseBody
    public Message updateApply(Apply apply){
        if(applyService.updateApply(apply)>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findById.action")
    @ResponseBody
    public Message findById(Integer id){
        Apply apply=applyService.findById(id);
        if(apply!=null){
            return Message.success().add("apply",apply);
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findByState.action")
    @ResponseBody
    public Message findByTime(@RequestParam(defaultValue ="1",value = "pn") Integer pn,Integer state){
        PageHelper.startPage(pn,4);
        List<Apply> states = applyService.findByState(state);
        if(states!=null){
            PageInfo page=new PageInfo(states,3);
            return Message.success().add("pageInfo",page);
        }else{
            return Message.fail();
        }
    }
}
package com.ecjtu.controller;
import com.ecjtu.entity.Apply;
import com.ecjtu.service.ApplyService;
import com.ecjtu.util.Message;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Date;
import java.util.List;
/**
 */
@Controller
@RequestMapping("apply")
public class ApplyController {
    @Autowired
    private ApplyService applyService;
    @RequestMapping("applys.action")
    @ResponseBody
    public Message getBlog(@RequestParam(value = "pn",defaultValue = "1") Integer pn){
        // 引入PageHelper分页插件
        // 在查询之前只需要调用,传入页码,以及每页的大小
        PageHelper.startPage(pn,3);
        List<Apply> applys = applyService.getApply();
        System.out.println(applys);
        // startPage后面紧跟的这个查询就是一个分页查询
        // 使用pageInfo包装查询后的结果,只需要将pageInfo交给页面就行了。
        // 封装了详细的分页信息,包括有我们查询出来的数据,传入连续显示的页数
        PageInfo page=new PageInfo(applys,2);
        return Message.success().add("pageInfo",page);
    }
    @RequestMapping("create.action")
    @ResponseBody
    public Message addApply(Apply apply){
        apply.setApplyTime(new Date());
        apply.setState(2);
        int i = applyService.addApply(apply);
        if(i>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("delete.action")
    @ResponseBody
    public Message deleteApply(Integer id){
        int i = applyService.deleteApply(id);
        if(i>0){
            return Message.success();
        }else {
            return Message.fail();
        }
    }
    @RequestMapping("update.action")
    @ResponseBody
    public Message updateApply(Apply apply){
        if(applyService.updateApply(apply)>0){
            return Message.success();
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findById.action")
    @ResponseBody
    public Message findById(Integer id){
        Apply apply=applyService.findById(id);
        if(apply!=null){
            return Message.success().add("apply",apply);
        }else{
            return Message.fail();
        }
    }
    @RequestMapping("findByState.action")
    @ResponseBody
    public Message findByTime(@RequestParam(defaultValue ="1",value = "pn") Integer pn,Integer state){
        PageHelper.startPage(pn,4);
        List<Apply> states = applyService.findByState(state);
        if(states!=null){
            PageInfo page=new PageInfo(states,3);
            return Message.success().add("pageInfo",page);
        }else{
            return Message.fail();
        }
    }
}
相关文章
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
2月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
2月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
34 0
|
5月前
|
搜索推荐 JavaScript Java
计算机Java项目|基于SSM的个性化商铺系统
计算机Java项目|基于SSM的个性化商铺系统
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
|
3月前
|
SQL Java 应用服务中间件
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
这篇文章是关于如何使用SSM框架搭建图书商城管理系统的教程,包括完整过程介绍、常见问题解答和售后服务,提供了项目地址、运行环境配置、效果图展示以及运行代码的步骤。
使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)
|
5月前
|
Java 物联网 Maven
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
74 1
基于SSM+layui【爱车汽车租赁管理系统】附源码+论文
|
4月前
|
存储 关系型数据库 测试技术
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)(2)
基于ssm+vue的校园驿站管理系统+(源码+部署说明+演示视频+源码介绍)
60 1
|
5月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
60 0
杨校老师之基于SSM开发的校园点餐配送系统
|
5月前
|
小程序 前端开发 测试技术
微信小程序|ssm基于微信小程序的高校课堂教学管理系统
微信小程序|ssm基于微信小程序的高校课堂教学管理系统