前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSM 完整项目 (内含源码)

SSM 完整项目 (内含源码)

作者头像
张小驰出没
发布2021-04-25 15:24:02
12.1K3
发布2021-04-25 15:24:02
举报

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

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

代码语言:javascript
复制
public class user {
    private Integer id;
    private String username;
    private String paw;
    private Integer tele;
    private String email;
    // 有参\有参方法
    // Get\Set方法
    // toString()
}

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

代码语言:javascript
复制
public class news {
    @NotNull
    private Integer ISDN;
    @NotNull
    private String title;
    @NotNull
    private String author;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Past
    private Date date;
    @NotNull
    private String description;
    // 有参\有参方法
    // Get\Set方法
    // toString()
}

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

4.Dao层

每一个Dao类都分别对应着一个实体类的操作 Mapper接口+Mapper.xml 进行部分举例

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
<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

代码语言:javascript
复制
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);
}
代码语言:javascript
复制
@Service
public class UserServiceimpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public List<user> getUserList() {
        return userMapper.getUserList();
    }
    @Override
    public int insertUser(user user) {
        return userMapper.insertUser(user);
    }
    @Override
    public int upUser(user user) {
        return userMapper.upUser(user);
    }
    @Override
    public int uppaw(user user) {
        return userMapper.uppaw(user);
    }
    @Override
    public user getUserById(int id) {
        return userMapper.getUserById(id);
    }
}

6.Controller层

Controller层的代码都是实现具体功能的代码 因为代码过长,在此只举例User的Controller层代码

代码语言:javascript
复制
@Controller
public class UserController {
    @Autowired
    private   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 MoYu’s Gitee Blog

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SSM 电影后台管理项目
    • 概述
      • 项目展示
        • 准备
          • 实现
            • 1.创建好项目架构
            • 2.SSM架构
            • 3.POJO层
            • 4.Dao层
            • 5.Service层
            • 6.Controller层
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档