栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM酒店管理系统V1一(环境搭建页面登录实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM酒店管理系统V1一(环境搭建页面登录实现)

SSM酒店管理系统V1一

整体的项目使用Layui框架搭建完成

1、用户表和部门表数据库设计

;

;

;
;
;
;
CREATE DATABASE `db_hotel_jt11` ;

USE `db_hotel_jt11`;



DROp TABLE IF EXISTS `sys_dept`;

CREATE TABLE `sys_dept` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门编号',
  `deptname` varchar(50) DEFAULT NULL COMMENT '部门名称',
  `address` varchar(255) DEFAULT NULL COMMENT '地址',
  `createDate` datetime DEFAULT NULL COMMENT '创建时间',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;





DROP TABLE IF EXISTS `sys_employee`;

CREATE TABLE `sys_employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '员工编号',
  `loginname` varchar(50) DEFAULT NULL COMMENT '登录账号',
  `loginpwd` varchar(200) DEFAULT NULL COMMENT '登录密码',
  `name` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `sex` int(11) DEFAULT NULL COMMENT '性别(1-男 2-女)',
  `deptId` int(11) DEFAULT NULL COMMENT '部门编号',
  `hiredate` datetime DEFAULT NULL COMMENT '入职日期',
  `salt` varchar(100) DEFAULT NULL COMMENT '加密盐值',
  `createdBy` int(11) DEFAULT NULL COMMENT '创建人',
  `createDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` int(11) DEFAULT NULL COMMENT '修改人',
  `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



;
;
;
;

2、项目创建
  1. 创建MavebWeb项目工程ssm_hotel

  2. 导入项目依赖坐标pom.xml

    
    
    
    5.2.8.RELEASE
    
    3.5.5
    
    2.0.5
    
    8.0.19
    
    1.2.73
    
    2.11.2
    
    
    
    
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.aspectj
      aspectjweaver
      1.8.7
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
    
    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
      org.mybatis
      mybatis-spring
      ${mybatis-spring.version}
    
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      commons-logging
      commons-logging
      1.2
    
    
    
    
      commons-dbcp
      commons-dbcp
      1.4
    
    
    
    
      log4j
      log4j
      1.2.17
    
    
    
    
      junit
      junit
      4.13
      test
    
    
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
    
      javax.servlet.jsp
      jsp-api
      2.2
      provided
    
    
    
      javax.servlet
      javax.servlet-api
      4.0.1
      provided
    
    
    
    
      org.hibernate
      hibernate-validator
      5.4.3.Final
    
    
    
    
    
      com.alibaba
      fastjson
      ${fast-json.version}
    
    
    
      com.fasterxml.jackson.core
      jackson-core
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    
    
    
    
      commons-io
      commons-io
      2.7
    
    
    
      commons-fileupload
      commons-fileupload
      1.4
    
    
    
    
      org.apache.shiro
      shiro-core
      1.6.0
    
    
    
      jstl
      jstl
      1.2
    
    
    
    
    
  3. 创建包文件

  4. 导入核心配置在resources文件夹下

    对于配置文件的一些修改需要根据自己的包名来修改,可能配置文件的包扫描不是当前的包

    1. applicationContext.xml
    2. database.properties
    3. log4j.properties
    4. mybatis-config.xml
    5. springmvc.xml
  5. 导入web.xml配置文件

    
    
    
    
      
      
        login.jsp
      
    
      
      
        org.springframework.web.context.ContextLoaderListener
      
      
      
        contextConfigLocation
        
        classpath:applicationContext*.xml
      
    
      
      
        
        springmvc
        
        org.springframework.web.servlet.DispatcherServlet
        
        
          contextConfigLocation
          
          classpath:springmvc.xml
        
      
      
        
        springmvc
        
        /
      
    
      
      
        encodingFilter
        
          org.springframework.web.filter.CharacterEncodingFilter
        
        
          encoding
          UTF-8
        
        
          forceEncoding
          true
        
      
      
        encodingFilter
        
    @Controller
    @RequestMapping("/admin")
    public class SystemController {
    
        @RequestMapping("/login.html")
        public String login(){
            return "admin/login";
        }
    }
    
    
    4、实体类的创建(与数据库表同名)

    在com.zcl.entity包下进行创建

    后面的get和set方法就省略不写了

    public class Employee {
        private Integer id;//员工编号
        private String loginName;//登录名称
        private String loginPwd;//登录密码
        private String name;//真实姓名
        private Integer sex;//性别 1-男 2-女
        private Integer deptId;//所属部门
        private Date hireDate;//入职日期
        private String salt;//加密盐值
        private Integer createdBy;//创建人
        private Date createDate;//创建时间
        private Integer modifyBy;//修改人
        private Date modifyDate;//修改时间
        private String remark;//备注
    }
    
    5、创建mapper接口和映射文件

    com.zcl.dao层的接口为如下

    public interface EmployeeMapper {
        
        Employee findEmployeeByLoginName(String loginName);
    }
    

    接口的映射文件如下,存放在resources.mapper包下

    
    
    
    
        
        
    
    
    6、创建service业务层代码

    在com.zcl.service包下写业务接口

    public interface EmployeeService {
        
        Employee login(String loginName,String loginPwd);
    }
    

    创建impl包并创建接口实现类

    package com.zcl.service.impl;
    
    import com.zcl.dao.EmployeeMapper;
    import com.zcl.entity.Employee;
    import com.zcl.service.EmployeeService;
    import com.zcl.utils.PasswordUtil;
    import com.zcl.utils.SystemConstant;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    
    import javax.annotation.Resource;
    
    
    @Service
    @Transactional
    public class EmployeeServiceimpl implements EmployeeService {
        @Resource
        EmployeeMapper employe;
    
        public Employee login(String loginName, String loginPwd) {
            // 1、根据账号查询员工信息方法
            Employee employeeByLoginName = employe.findEmployeeByLoginName(loginName);
            // 2、判断数据是否为空
            if(employeeByLoginName!= null){
                // 将密码进行加密对比,后面的加密次数使用的外部的接口声明,方便后面的修改
                String namePassword = PasswordUtil.md5(loginPwd, employeeByLoginName.getSalt(), SystemConstant.PASSWORD_COUNT);
                // 比较密码是否一致
                if(employeeByLoginName.getLoginPwd().equals(namePassword)){
                    // 登录成功
                    return employeeByLoginName;
                }
            }
            // 登录失败
            return null;
        }
    }
    
    

    在utils根据包下创建SystemConstant接口,里面定义一些常量

    package com.zcl.utils;
    
    
    public interface SystemConstant {
        
        Integer PASSWORD_COUNT = 5;
    }
    
    
    7、controller控制器的编写

    控制器都写在com.zcl.controller.admin包下,控制器不在返回视图等内容,无刷新使用@RestController注解,表示@ResponseBody和@Controller在内了,返回【json数据】,后面就不在使用他一一注解了,减少报错

    package com.zcl.controller.admin;
    
    
    import com.alibaba.fastjson.JSON;
    import com.zcl.entity.Employee;
    import com.zcl.service.EmployeeService;
    import com.zcl.utils.SystemConstant;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpSession;
    import java.util.HashMap;
    
    
    @RestController
    @RequestMapping("/admin/employee")
    public class EmployeeController {
    
        @Resource
        EmployeeService employeeService;
    
        
        @RequestMapping("/login")
        public String login(String username, String password, HttpSession session){
            // 创建HasMap存储数据
            HashMap objectHashMap = new HashMap();
            // 查询数据
            Employee employe = employeeService.login(username, password);
            // 判断数据
            if(employe != null){
                // 保存当前用户
                session.setAttribute(SystemConstant.LOGINUSER,employe);
                objectHashMap.put(SystemConstant.SUCCESS,true);
            }else {
                objectHashMap.put(SystemConstant.MESSAGES,false);
                objectHashMap.put(SystemConstant.MESSAGES,"账号密码错误,请重新登录");
            }
            return JSON.toJSONString(objectHashMap);
        }
    }
    
    

    上面的几个常量都在SystemConstant接口中添加上

    String LOGINUSER = "loginUser";
    
    
    String SUCCESS = "succser";
    
    
    String MESSAGES = "messages";
    
    8、页面端方式请求
    // 进行登录操作
        form.on('submit(login)', function (data) {
            // 获取到表单的所有数据data
            data = data.field;
            if (data.username == '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.password == '') {
                layer.msg('密码不能为空');
                return false;
            }
            if (data.captcha == '') {
                layer.msg('验证码不能为空');
                return false;
            }
            $.post("/admin/employee/login",data,function (result){
                if(result.succser){
                    location.href="home.html";
                }else {
                    layer.msg(result.messages);
                }
            },"json");
            return false; // 禁止跳转页面
        });
    });
    

    添加数据库的第一条员工数据

    关于加密的密码和加密的盐,需要找到加密工具进行生产

    启动页面进行登录,如果登录成功就会跳转到 http://localhost:8080/admin/home.html 页面,因为没有这个页面所以就会显示404

    9、创建404.jsp页面

    在SystemController控制器中创建跳转404的页面

    @RequestMapping("/404.html")
    public String fff() {
        return "admin/404";
    }
    

    修改登录后的跳转页面为当前请求的虚拟路径admin/404.html

    10、创建上一文中的home.jsp主页面

    在SystemController控制器中定义后台首页的转发路径

    @RequestMapping("/home.html")
    public String home() {
        return "admin/home";
    }
    

    10.1、修改登录后的名称【右上角】
    ${sessionScope.loginUser.name}
    
    10.2、员工退出

    在SystemController控制器下编写,但是建议在EmployeeController员工控制器中写,在员工控制器里面使用了@RestController注解不处理逻辑视图操作,就将他写在了当前的SystemController控制器

    @RequestMapping("/logout.html")
    public String logout(HttpSession session) {
        // 清除session方式一
        // session.removeAttribute(SystemConstant.LOGINUSER);
        // 清除方式二
        session.invalidate();
        // 重定向登录页面
        return "redirect:/admin/login.html";
    }
    

    前端页面请求按钮

    $('.login-out').on("click", function () {
      // 推出询问
      layer.confirm("您确定要推出吗?",{icon:3,title:"退出确认"},function(index){
        location.href = "/admin/logout.html";
        layer.close(index);
      });
    });
    
    11、登录拦截器 11.1、创建拦截器类LoginInterceptor
    package com.zcl.interceptor;
    
    import com.zcl.utils.SystemConstant;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class LoginInterceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            // 判断session是否为空
            if(request.getSession().getAttribute(SystemConstant.LOGINUSER) == null){
                // 为空就是没有登录,跳转到登录页面
                response.sendRedirect(request.getContextPath() + "/admin/login.html");
                // 验证失败进行拦截
                return false;
            }
            // 验证成功
            return true;
        }
    }
    
    11.2、拦截器的注入

    在springmvc.xml配置文件下注入上面的类

    
    
        
            
            
            
            
            
            
            
        
    
    

    拦截器的测试,启动项目于直接访问home.html页面会查询跳转到登录页面,如果是退出了再回退页面刷新也是会回到登录页面的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号