SSM 电影后台管理项目

概述

通过对数据库中一张表的CRUD,将相应的操作结果渲染到页面上。
笔者通过这篇博客还原了项目(当然有一些隐藏的坑),然后将该项目上传到了GithubGitee,在末尾会附上有源码地址,读者可参考。

该项目使用的是 Spring+SpringMVC+Mybaits(SSM)后端架构,POJO—Dao—Service—Controller的结构,简单易懂。

  • POJO:实体类层,封装的是数据中的设计的表对应的元素。
  • Dao:Mapper的接口以及Mapper.xml文件,实现sql操作。
  • Service:服务实现层,调用Dao层方法进行实现。
  • Controller:控制层,调用一个个Service层的实现方法完成一个个具体功能。

项目使用了前端JS检错后端JSR303参数校验,能把绝大部分的问题都包括其中。类似于输入信息错误以及输入信息不合法违规跳转等,也加入了过滤器,使用户可以有更好的体验。

电影后台管理系统的管理员在工作中需要查阅和管理如下信息:后台管理的管理员、电影信息、新闻信息以及类型信息。如下图:

项目展示

准备

  • 环境:

    • IDEA
    • MySQL 5.1.47
    • Tomcat 9
    • Maven 3.6
  • 要求:
    • 掌握MySQL数据库
    • 掌握Spring
    • 掌握MyBatis
    • 掌握SpringMVC
    • 掌握简单的前端知识

实现

1.创建好项目架构

先创建好com.zc.xxx路径下的文件;resources资源文件夹下的文件可以先不创建,下面会逐步创建。

2.SSM架构

这部分如果感兴趣,想知道具体操作,可以查看文章 《SSM整合》

3.POJO层

因为设计的数据库中有4个表,分别是:usertypenewsfilm

所以对应创建四个实体类,这里部分举例

public class user {private Integer id;private String username;private String paw;private Integer tele;private String email;// 有参\有参方法// Get\Set方法// toString()
}

news实体类中使用了JSR303检验机制,不加注解也是可以的

public class news {@NotNullprivate Integer ISDN;@NotNullprivate String title;@NotNullprivate String author;@DateTimeFormat(pattern = "yyyy-MM-dd")@Pastprivate Date date;@NotNullprivate String description;// 有参\有参方法// Get\Set方法// toString()
}

在这些实体类中,我使用的是直接添加构造方法;如果觉得麻烦,可以使用Lombok插件

4.Dao层

每一个Dao类都分别对应着一个实体类的操作

Mapper接口+Mapper.xml

进行部分举例

public interface UserMapper {/*** 获取用户列表* @return*/public List<user> getUserList();/*** id查用户* @return*/public user getUserById(int id);/***  添加用户* @param user* @return*/public int insertUser(user user);/*** 修改用户个人信息* @return*/public int upUser(user user);/*** 修改密码* @param user* @return*/public int uppaw(user user);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.zc.Dao.UserMapper"><select id="getUserList" resultType="com.zc.pojo.user">select * from film.user</select><select id="getUserById" resultType="com.zc.pojo.user">select * from film.user where id=#{id}</select><insert id="insertUser" parameterType="com.zc.pojo.user" >insert into film.user (username,paw,tele,email) values (#{username},#{paw},#{tele},#{email})</insert><update id="upUser" parameterType="com.zc.pojo.user">update film.user set username = #{username},tele = #{tele},email = #{email} where id = #{id}</update><update id="uppaw" parameterType="com.zc.pojo.user">update film.user set paw=#{paw} where id = #{id}</update>
</mapper>

5.Service层

每个Dao层也会有一个对应的Service实现层

进行部分举例

UserService

public interface UserService {/*** 得到全部User数据* @return*/public  List<user> getUserList();/*** 插入一个User* @param user* @return*/public int insertUser(user user);/*** 更新用户信息* @param user* @return*/public int upUser(user user);/*** 更新用户密码* @param user* @return*/public int uppaw(user user);/*** 通过id查找用户* @param id* @return*/public user getUserById(int id);
}
@Service
public class UserServiceimpl implements UserService{@Autowiredprivate UserMapper userMapper;@Overridepublic List<user> getUserList() {return userMapper.getUserList();}@Overridepublic int insertUser(user user) {return userMapper.insertUser(user);}@Overridepublic int upUser(user user) {return userMapper.upUser(user);}@Overridepublic int uppaw(user user) {return userMapper.uppaw(user);}@Overridepublic user getUserById(int id) {return userMapper.getUserById(id);}
}

6.Controller层

Controller层的代码都是实现具体功能的代码

因为代码过长,在此只举例User的Controller层代码

@Controller
public class UserController {@Autowiredprivate   HttpServletRequest request;@Autowired@Qualifier("userServiceimpl")private UserService userService;/*** 登录* @param username* @param password* @param code* @return*/@RequestMapping("/Login")public String getUserList(String username, String password, String code){List<user> userList = userService.getUserList();for (user user : userList) {System.out.println(user);if(user.getUsername().equals(username)&&user.getPaw().equals(password)){HttpSession session = request.getSession();Object attribute = session.getAttribute(Constants.KAPTCHA_SESSION_KEY);if(code.equals(attribute)){session.setAttribute("user",user);return "main.jsp";}else {request.setAttribute("mgs", "验证码错误");return "index.jsp";}}}//  System.out.println(user.getUsername()+"-----"+user.getPaw());request.setAttribute("mgs", "用户名或密码错误");return "index.jsp";}/*** 注销* @return*/@RequestMapping("/exit")public String exit(){request.getSession().removeAttribute("user");return "index.jsp";}/*** 注册* @param user* @return*/@RequestMapping("/register")public String insertUser(user user){List<user> userList = userService.getUserList();for (user user1 : userList) {if (user1.getUsername().equals(user.getUsername())){request.setAttribute("mgs1", "已经存在该用户");return "index.jsp";}else {System.out.println(user);userService.insertUser(user);return "index.jsp";}}return "index.jsp";}/*** 修改用户信息* @param user* @return*/@RequestMapping("/upUser")public String upUser(user user){int i = userService.upUser(user);System.out.println(user+"-----"+i);if (i>0){user user1 = userService.getUserById(user.getId());request.getSession().setAttribute("user",user1);request.setAttribute("mgs4","修改成功");return "person/person_info.jsp";}else{request.setAttribute("mgs4","修改失败");return "person/person_info.jsp";}}/*** 修改密码* @param user* @return*/@RequestMapping("/uppaw")public String uppaw(user user, String paw1){user userById = userService.getUserById(user.getId());System.out.println(user+"----------"+paw1);if(userById.getPaw().equals(paw1)){userService.uppaw(user);user user1 = userService.getUserById(user.getId());request.getSession().setAttribute("user",user1);request.setAttribute("mgs3","修改密码成功");return "person/updatepwd.jsp";}else{request.setAttribute("mgs3","输入原始密码不对");return "person/updatepwd.jsp";}}
}

该项目地址为:

Github:https://github.com/MoYu-zc/Film_manage

Gitee:https://gitee.com/MoYu-zc/film_manage

个人博客为:
MoYu’s HomePage

SSM 完整项目 (内含源码)相关推荐

  1. python3 Flask 多人答题(完整项目带源码与使用)

    TopQB答题系统 2020/01/05 @pingfan 功能:     1.多人同时答题系统     2.在线查看个人得分与答题情况(解析)     3.载入题库,随机抽取题目支持[单选题,多选题 ...

  2. java电商项目源码_电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码...

    本篇我们根据架构图进行代码的构建.根据微服务化设计思想,结合spring cloud一些优秀的项目,如服务发现.治理.配置化管理.路由负载.安全控制等优秀解决方案,使用Maven技术将框架进行模块化. ...

  3. 微信读书登陆界面java_(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好...

    转载地址:(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 一.环境搭建 相关环境软件:JDK1 ...

  4. (微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好

    转载地址:(微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 作者:Happy王子乐 个人网站(整理 ...

  5. 我整理了十套 SpringBoot 项目完整教程「源码+视频+讲义」

    1,基于Springboot+Vue的音乐项目[源码+详细视频][视频原创] 系统的演示: 系统的视频非常详细,都是我们自己录制的,也都免费分享: 2,基于SSM的商城系统[源码+详细视频] 系统的教 ...

  6. 计算机毕业设计-ssm+vue宿舍管理系统源码-宿舍维修管理系统javaweb项目

    计算机毕业设计-ssm+vue宿舍管理系统源码-宿舍维修管理系统javaweb项目 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言:Java 后台框架 ...

  7. 今年我读了四个开源项目的源码,来分享下心得

    今年来看了 RocketMQ.Kafka.Dubbo .Tomcat 的源码,之前也有读者询问过如何读源码,索性就来分享一下. 其实还看了一点点 Linux.Redis.jdk8,这几个阅读的目的和上 ...

  8. 开源项目实例源码_今年我读了四个开源项目的源码,来分享下心得

    今年来看了 RocketMQ.Kafka.Dubbo .Tomcat 的源码,之前也有读者询问过如何读源码,索性就来分享一下. 其实还看了一点点 Linux.Redis.jdk8,这几个阅读的目的和上 ...

  9. h5棋牌游戏源码 java_YM202H5房ka微信贝密棋盘游戏平台,完整全套游戏源码下载...

    H5房ka微信贝密棋盘游戏平台,完整全套游戏源码下载,UI设计以及后台系统(JAVA)开发,包含了前端UI. 开发工具:Cocos Creater 开发语言:Java + JavaScript 服务端 ...

最新文章

  1. 为什么Redis要比Memcached更火?
  2. EXCEL 找出重复的记录 COUNTIF
  3. java实现俄罗斯方块游戏
  4. python按行求和_Python第一篇:对3个Excel文件进行整合
  5. 大学c语言下上机考试题,计算机考试二级C语言上机试题下[5]
  6. 互联网寒冬!技术站最全MySQL数据库实战规范
  7. 论文浅尝 | Doc2EDAG:一种针对中文金融事件抽取的端到端文档级框架
  8. centos7php自启动,centos7系统下nginx安装并配置开机自启动操作
  9. Bootstrap3 模态对话框的尺寸
  10. #1062 – Duplicate entry ‘1’ for key ‘PRIMARY’
  11. 高通WLAN芯片点灯方法-QCA9563操控9880GPIO进行点灯
  12. 波特率和比特率的关系
  13. 计算机和未来汽车有联系吗,汽车的未来是会奔跑的计算机?
  14. jetbrains验证服务器,搭建个人jetbrains授权服务器
  15. 远程控制-Virut蠕虫病毒(需专杀工具请三连并私信)
  16. 虚拟机与物理主机设置为同一ip字段
  17. 大疆 IC设计校招笔试题目
  18. 分享两个解决Mac 访问Github的好方法
  19. 【动网论坛7.1 sp1 修改】-加强检查注册昵称,防止全数字及简单重复ID注册
  20. 面试应该怎样应对!细节决定成败

热门文章

  1. 开启混合睡眠 解决Hybrid Sleep The hypervisor does not support this standby statewindows
  2. 【Linux内核分析与应用-陈莉君老师】动手实践-把虚拟内存转换成物理地址
  3. 8路服务器性能,8路泰坦服务器级别!玩《GTA5》会发生什么!真滴强!
  4. 微信小程序 slider双向滑动渐变色
  5. 柯罗芭KLOVA 22周年盛典 时尚女装的全新打开方式
  6. wow怀旧服新开服务器最新消息,魔兽世界:怀旧服再次开放新免费转入服,“五大排队服”皆可转入...
  7. 对合并后的excel表格进行删除重复值和简单的排版
  8. webgl通过shader实现逼真水面
  9. https服务IE可以访问,而GOOGLE无法访问
  10. 简单工厂模式之php实现