锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【SSM】第一课 超市订单管理平台--SSM框架整合

时间:2023-02-02 23:30:00 9zj1b2连接器

概念

在Java在服务端开发中,Spring SpringMVC Mybatis搭建MVC三层架构完成项目的创建过程是开发者学习框架编程的唯一途径。在这里,我们使用一个项目来完成整个开发过程。在后期,我们将用一系列文章来解释每个功能过程。

数据库创建

读者可以自行恢复和使用该项目数据库的表结构和数据。

/* SQLyog 企业版 - MySQL GUI v8.14  MySQL - 5.5.40 : Database - smbms ********************************************************************* */   /*!40101 SET NAMES utf8 */;  /*!40101 SET SQL_MODE=''*/;  /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`smbms` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;  USE `smbms`;  /*Table structure for table `smbms_address` */  DROP TABLE IF EXISTS `smbms_address`;  CREATE TABLE `smbms_address` (   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',   `contact` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 联系人姓名,   `addressDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 收货地址明细,   `postCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '邮编',   `tel` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 联系人电话,   `createdBy` bigint(20) DEFAULT NULL COMMENT 创造者,   `creationDate` datetime DEFAULT NULL COMMENT 创造时间,   `modifyBy` bigint(20) DEFAULT NULL COMMENT 修改者,   `modifyDate` datetime DEFAULT NULL COMMENT 修改时间,   `userId` bigint(20) DEFAULT NULL COMMENT '用户ID',   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  /*Data for the table `smbms_address` */  insert  into `smbms_address`(`id`,`contact`,`addressDesc`,`postCode`,`tel`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`userId`) values 北京市东城区东交民巷44号,王丽,'13678789999',1,'2016-04-13 00:00:00',NULL,NULL,1),2016-04-1312,张红丽,北京市海淀区丹棱街3号,‘10000’,‘1856772312’, 00:00:00',NULL,NULL,(三,任志强,2016-04-1342,北京市东城区美术馆后街23号,100021,1338790672 00:00:00',NULL,NULL,1),(4,‘曹颖’,‘北京市朝阳区朝阳门南街14号’,‘100053’,‘13568902323’,‘2016-04-13 00:00:00',NULL,NULL,2),(5,‘李慧’,‘北京市西城区三里河路南三巷3号’,‘100032’,‘180323016-04-13 00:00:00',NULL,NULL,(6,王国强,北京市顺义区高丽营镇金马工业区18号,'13787882222',1,'2016-04-13 00:00:00',NULL,NULL,3);  /*Table structure for table `smbms_bill` */  DROP TABLE IF EXISTS `smbms_bill`;  CREATE TABLE `smbms_bill` (   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',   `billCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 帐单编码,   `productName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 商品名称,   `productDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 商品描述,   `productUnit` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 商品单位,   `productCount` decimal(20,2) DEFAULT NULL COMMENT 商品数量,   `totalPrice` decimal(20,2) DEFAULT NULL COMMENT 商品总额,   `isPayment` int(10) DEFAULT NULL COMMENT '是否支付(1:未支付 二、已支付),   `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',   `creationDate` datetime DEFAULT NULL COMMENT 创造时间,   `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',   `modifyDate` datetime DEFAULT NULL COMMENT 更新时间,   `providerId` int(20) DEFAULT NULL COMMENT '供应商ID',   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  /*Data for the table `smbms_bill` */  insert  into `smbms_bill`(`id`,`billCode`,`productName`,`productDesc`,`productUnit`,`productCount`,`totalPrice`,`isPayment`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`providerId`) values (1,'BILL2016_洗发水、护发素、日用品-洗发水、护发、瓶.00','25000.00',2,1,'2014-12-14 13:02:03',NULL,NULL,13),(2,'BILL2016_002',肥皂、肥皂、药皂、日用品-肥皂、块.00','10000.00',2,1,'2016-03-23 04:20:40',NULL,NULL,13),(3,'BILL2016_大豆油,食品-食用油.00','5890.00',2,1,'2014-12-14 13:02:03',NULL,NULL,6),(4,'BILL2016_橄榄油,食品-进口食用油.00','9800.00',2,1,'2013-10-10 03:12:13',NULL,NULL,7),(5,'BILL2016_005',洗洁精,日用品-厨房清洁,瓶.00','7000.00',2,1,'2014-12-14 13:02:03',NULL,NULL,9),(6,'BILL2016_美国大杏仁,食物-坚果,袋.00','5000.00',2,1,'2016-04-14 06:08:09',NULL,NULL,4),(7,'BILL2016_沐浴液,精油,日用品-沐浴类.00','23000.00',1,1,'2016-07-22 10:10:22',NULL,NULL,14),(8,'BILL2016_‘不锈钢盘碗’,‘日用品-厨房用具’,‘600’.00','6000.00',2,1,'2016-04-14 05:12:13',NULL,NULL,14),(9,'BILL2016_塑料杯,日用品-杯子,.00','1750.00',2,1,'2016-02-04 11:40:20',NULL,NULL,14),(10,'BILL2016_豆瓣酱,食品-调料,瓶,2000.00','2000.00',2,1,'2013-10-29 05:07:03',NULL,NULL,8),(11,'BILL2016_海之蓝.00','10000.00',1,1,'2016-04-14 16:16:00',NULL,NULL,1),(12,'BILL2016_芝华士,饮料-洋酒,瓶.00','6000.00',1,1,'2016-09-09 17:00:00',NULL,NULL,1),(13,'BILL2016_长城红葡萄','饮料-红酒','瓶','60.00','800.00',2,1,'2016-11-14 15:23:00',NULL,NULL,1),(14,'BILL2016_014','泰国香米','食品-大米','斤','400.00','5000.00',2,1,'2016-10-09 15:20:00',NULL,NULL,3),(15,'BILL2016_015','东北大米','食品-大米','斤','600.00','4000.00',2,1,'2016-11-14 14:00:00',NULL,NULL,3),(16,'BILL2016_016','可口可乐','饮料','瓶','2000.00','6000.00',2,1,'2012-03-27 13:03:01',NULL,NULL,2),(17,'BILL2016_017','脉动','饮料','瓶','1500.00','4500.00',2,1,'2016-05-10 12:00:00',NULL,NULL,2),(18,'BILL2016_018','哇哈哈','饮料','瓶','2000.00','4000.00',2,1,'2015-11-24 15:12:03',NULL,NULL,2);

/*Table structure for table `smbms_provider` */

DROP TABLE IF EXISTS `smbms_provider`;

CREATE TABLE `smbms_provider` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `proCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商编码',
  `proName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商名称',
  `proDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商详细描述',
  `proContact` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商联系人',
  `proPhone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系电话',
  `proAddress` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
  `proFax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '传真',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

/*Data for the table `smbms_provider` */

insert  into `smbms_provider`(`id`,`proCode`,`proName`,`proDesc`,`proContact`,`proPhone`,`proAddress`,`proFax`,`createdBy`,`creationDate`,`modifyDate`,`modifyBy`) values (1,'BJ_GYS001','北京三木堂商贸有限公司','长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等','张国强','13566667777','北京市丰台区育芳园北路','010-58858787',1,'2013-03-21 16:52:07',NULL,NULL),(2,'HB_GYS001','石家庄帅益食品贸易有限公司','长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等','王军','13309094212','河北省石家庄新华区','0311-67738876',1,'2016-04-13 04:20:40',NULL,NULL),(3,'GZ_GYS001','深圳市泰香米业有限公司','初次合作伙伴,主营产品:良记金轮米,龙轮香米等','郑程瀚','13402013312','广东省深圳市福田区深南大道6006华丰大厦','0755-67776212',1,'2014-03-21 16:56:07',NULL,NULL),(4,'GZ_GYS002','深圳市喜来客商贸有限公司','长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉','林妮','18599897645','广东省深圳市福龙工业区B2栋3楼西','0755-67772341',1,'2013-03-22 16:52:07',NULL,NULL),(5,'JS_GYS001','兴化佳美调味品厂','长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料','徐国洋','13754444221','江苏省兴化市林湖工业区','0523-21299098',1,'2015-11-22 16:52:07',NULL,NULL),(6,'BJ_GYS002','北京纳福尔食用油有限公司','长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等','马莺','13422235678','北京市朝阳区珠江帝景1号楼','010-588634233',1,'2012-03-21 17:52:07',NULL,NULL),(7,'BJ_GYS003','北京国粮食用油有限公司','初次合作伙伴,主营产品:花生油、大豆油、小磨油等','王驰','13344441135','北京大兴青云店开发区','010-588134111',1,'2016-04-13 00:00:00',NULL,NULL),(8,'ZJ_GYS001','慈溪市广和绿色食品厂','长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品','薛圣丹','18099953223','浙江省宁波市慈溪周巷小安村','0574-34449090',1,'2013-11-21 06:02:07',NULL,NULL),(9,'GX_GYS001','优百商贸有限公司','长期合作伙伴,主营产品:日化产品','李立国','13323566543','广西南宁市秀厢大道42-1号','0771-98861134',1,'2013-03-21 19:52:07',NULL,NULL),(10,'JS_GYS002','南京火头军信息技术有限公司','长期合作伙伴,主营产品:不锈钢厨具等','陈女士','13098992113','江苏省南京市浦口区浦口大道1号新城总部大厦A座903室','025-86223345',1,'2013-03-25 16:52:07',NULL,NULL),(11,'GZ_GYS003','广州市白云区美星五金制品厂','长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等','梁天','13562276775','广州市白云区钟落潭镇福龙路20号','020-85542231',1,'2016-12-21 06:12:17',NULL,NULL),(12,'BJ_GYS004','北京隆盛日化科技','长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等','孙欣','13689865678','北京市大兴区旧宫','010-35576786',1,'2014-11-21 12:51:11',NULL,NULL),(13,'SD_GYS001','山东豪克华光联合发展有限公司','长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等','吴洪转','13245468787','山东济阳济北工业区仁和街21号','0531-53362445',1,'2015-01-28 10:52:07',NULL,NULL),(14,'JS_GYS003','无锡喜源坤商行','长期合作伙伴,主营产品:日化品批销','周一清','18567674532','江苏无锡盛岸西路','0510-32274422',1,'2016-04-23 11:11:11',NULL,NULL),(15,'ZJ_GYS002','乐摆日用品厂','长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯','王世杰','13212331567','浙江省金华市义乌市义东路','0579-34452321',1,'2016-08-22 10:01:30',NULL,NULL);

/*Table structure for table `smbms_role` */

DROP TABLE IF EXISTS `smbms_role`;

CREATE TABLE `smbms_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `roleCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色编码',
  `roleName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色名称',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
  `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

/*Data for the table `smbms_role` */

insert  into `smbms_role`(`id`,`roleCode`,`roleName`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'SMBMS_ADMIN','系统管理员',1,'2016-04-13 00:00:00',NULL,NULL),(2,'SMBMS_MANAGER','经理',1,'2016-04-13 00:00:00',NULL,NULL),(3,'SMBMS_EMPLOYEE','普通员工',1,'2016-04-13 00:00:00',NULL,NULL);

/*Table structure for table `smbms_user` */

DROP TABLE IF EXISTS `smbms_user`;

CREATE TABLE `smbms_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `userCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码',
  `userName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称',
  `userPassword` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码',
  `gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',
  `address` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
  `userRole` int(10) DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',
  `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
  `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
  `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

/*Data for the table `smbms_user` */

insert  into `smbms_user`(`id`,`userCode`,`userName`,`userPassword`,`gender`,`birthday`,`phone`,`address`,`userRole`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'admin','系统管理员','1234567',1,'1983-10-10','13688889999','北京市海淀区成府路207号',1,1,'2013-03-21 16:52:07',NULL,NULL),(2,'liming','李明','0000000',2,'1983-12-10','13688884457','北京市东城区前门东大街9号',2,1,'0000-00-00 00:00:00',NULL,NULL),(5,'hanlubiao','韩路彪','0000000',2,'1984-06-05','18567542321','北京市朝阳区北辰中心12号',2,1,'2014-12-31 19:52:09',NULL,NULL),(6,'zhanghua','张华','0000000',1,'1983-06-15','13544561111','北京市海淀区学院路61号',3,1,'2013-02-11 10:51:17',NULL,NULL),(7,'wangyang','王洋','0000000',2,'1982-12-31','13444561124','北京市海淀区西二旗辉煌国际16层',3,1,'2014-06-11 19:09:07',NULL,NULL),(8,'zhaoyan','赵燕','0000000',1,'1986-03-07','18098764545','北京市海淀区回龙观小区10号楼',3,1,'2016-04-21 13:54:07',NULL,NULL),(10,'sunlei','孙磊','0000000',2,'1981-01-04','13387676765','北京市朝阳区管庄新月小区12楼',3,1,'2015-05-06 10:52:07',NULL,NULL),(11,'sunxing','孙兴','0000000',2,'1978-03-12','13367890900','北京市朝阳区建国门南大街10号',3,1,'2016-11-09 16:51:17',NULL,NULL),(12,'zhangchen','张晨','0000000',1,'1986-03-28','18098765434','朝阳区管庄路口北柏林爱乐三期13号楼',3,1,'2016-08-09 05:52:37',1,'2016-04-14 14:15:36'),(13,'dengchao','邓超','0000000',2,'1981-11-04','13689674534','北京市海淀区北航家属院10号楼',3,1,'2016-07-11 08:02:47',NULL,NULL),(14,'yangguo','杨过','0000000',2,'1980-01-01','13388886623','北京市朝阳区北苑家园茉莉园20号楼',3,1,'2015-02-01 03:52:07',NULL,NULL),(15,'zhaomin','赵敏','0000000',1,'1987-12-04','18099897657','北京市昌平区天通苑3区12号楼',2,1,'2015-09-12 12:02:12',NULL,NULL);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

SSM框架环境搭建

创建项目,搭建MVC三层架构的包。

a66f09ac6b2b4accb18f0e2dea042b95.png 

将所需要的jar包导入lib文件夹

 在resources文件夹中创建配置文件db.properties,用于配置连接数据库的参数信息

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/smbms
jdbc.username=root
jdbc.password=admin

 再创建mybatis-config.xml文件作为Mybatis框架的配置文件





	
		
		

		
		

		
		
	

	

接着创建applicationContext.xml文件作为Spring框架的配置文件




	
	
	
	
	
	
		
		
		
		
	
	
	
		
	
	
	

	
	
		
	

	
	
		
		
		
		
		

		
	

最后创建springmvc.XML文件作为SpringMVC框架的配置文件




	
	
	

	
	

	
	

	
	
		
		
	

	
	
		
		
		
		
		
	

接着在web.xml文件中设置初始化参数信息以及注册Servlet,过滤器,用于拦截浏览器的访问请求和转换浏览器的中文数据的编码格式等等



    
    
    
        /WEB-INF/jsp/index.jsp
    

    
    
        contextConfigLocation
        classpath:applicationContext.xml
    
    
    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springmvc.xml
        
        
        1
    
    
        dispatcherServlet
        
        /
    

    
    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
        
            encoding
            UTF-8
        
    
    
        characterEncodingFilter
        *.do
    

登录功能的完成

 在jsp文件夹中创建index.jsp文件作为登录页面

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>




超市订单管理系统--登录



	

登录页面

用户名:
密码:

登录功能将通过post请求将用户和密码提交给login.do的虚拟地址上,因此根据MVC三层架构的执行流程,该请求会进入控制层,那么在controller包中建立UserController类,定义接收该请求的方法:

//定义方法,用于接收浏览器的登录页面发送过来的用户名和密码
    @RequestMapping("/login.do")
    public String login(@RequestParam String username,
                        @RequestParam String password, HttpSession session){
        System.out.println("控制器接收到的数据为:"+username+"--"+password);
        //将控制器接收到的用户名和密码发送给业务逻辑层
        Map userInfo = userService.login(username, password);
        String url="";
        if (userInfo!=null){
            //说明当前登录的用户是存在的,并且获得了该用户的全部个人信息
            //将登录成功的用户的个人信息存储在session中,
            //因为session的作用域是只要不切换浏览器,任何页面都能获得该用户的个人信息
            session.setAttribute("userInfo",userInfo);
            System.out.println(userInfo);
            url="redirect:home.do";
        }else {
            System.out.println("当前登录的用户名不存在或者密码错误");
        }
        return url;
    }

并且为了阻止非法用户绕开登录页面进入主页面,我们使用session来处理和判断是否是非法登录,我们在控制器中定义进入主页的访问方法和跳转回登录页面的注销功能的方法:

//定义方法,用于跳转进入主页面
    @RequestMapping("/home.do")
    public String home(HttpSession session){
        //在任何用户想要进入主页面之前,都要验证session对象中是否保存了用户的个人信息
        Object userInfo = session.getAttribute("userInfo");
        String url="";
        if (userInfo!=null){
            //该用户一定经过了登录页面,也是该用户肯定是合法的用户
            url="home";
        }else {
            //该用户肯定是非法用户,不允许此类用户进入主页面,强制打回登录页面
            url="index";
        }
        return url;
    }
//定义方法,用于跳转回登录页面
    @RequestMapping("/index.do")
    public String index(HttpSession session){
        //当退出网站,回到登录页面,那么需要将保存在session中的个人信息清除
        session.invalidate();
        return "index";
    }

控制层的完整代码如下:

package com.smbms.controller;

import com.smbms.service.IUserService;
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 org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class UserController {
    //按照MVC三层架构的运行流程,控制层需要将数据发送给业务逻辑层service
    //因此在控制层中需要将业务逻辑层的类的对象创建
    //自动写入,将业务逻辑层的对象注入进来
    @Autowired
    IUserService userService;
    List> userList=null;

    //定义方法,用于跳转回登录页面
    @RequestMapping("/index.do")
    public String index(HttpSession session){
        //当退出网站,回到登录页面,那么需要将保存在session中的个人信息清除
        session.invalidate();
        return "index";
    }

    //定义方法,用于跳转进入主页面
    @RequestMapping("/home.do")
    public String home(HttpSession session){
        //在任何用户想要进入主页面之前,都要验证session对象中是否保存了用户的个人信息
        Object userInfo = session.getAttribute("userInfo");
        String url="";
        if (userInfo!=null){
            //该用户一定经过了登录页面,也是该用户肯定是合法的用户
            url="home";
        }else {
            //该用户肯定是非法用户,不允许此类用户进入主页面,强制打回登录页面
            url="index";
        }
        return url;
    }

    //定义方法,用于接收浏览器的登录页面发送过来的用户名和密码
    @RequestMapping("/login.do")
    public String login(@RequestParam String username,
                        @RequestParam String password, HttpSession session){
        System.out.println("控制器接收到的数据为:"+username+"--"+password);
        //将控制器接收到的用户名和密码发送给业务逻辑层
        Map userInfo = userService.login(username, password);
        String url="";
        if (userInfo!=null){
            //说明当前登录的用户是存在的,并且获得了该用户的全部个人信息
            //将登录成功的用户的个人信息存储在session中,
            //因为session的作用域是只要不切换浏览器,任何页面都能获得该用户的个人信息
            session.setAttribute("userInfo",userInfo);
            System.out.println(userInfo);
            url="redirect:home.do";
        }else {
            System.out.println("当前登录的用户名不存在或者密码错误");
        }
        return url;
    }
}

 这里登录失败的博主没有做过多的处理,读者可建立一个登录失败的jsp页面,作为登录失败后提示用户的提示信息,相信读者可自行完成。

接着在业务逻辑层service包创建IUserService接口和UserServiceImp接口实现类,用于处理当前的登录功能:

public interface IUserService {

    //定义方法,接收控制层发送过来的用户名和密码,用于完成登录功能
   Map login(String username, String password);
}
package com.smbms.service;

import com.smbms.dao.IUserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
@Service(value = "userService")
public class UserServiceImp implements IUserService {
    //按照MVC三层架构的执行流程,业务逻辑层的数据需要发送给数据访问层dao
    //因此就需要在该类中获得dao层的对象
    @Autowired
    IUserDao dao;
    @Override
    public Map login(String username, String password) {
        System.out.println("业务逻辑层收到控制层发送过来的数据为:"+username+"--"+password);
        return dao.login(username,password);
    }
}

最后在数据访问层dao包中创建IUserDao接口,使用Java注解的方式操作Mybatis框架完成登录的查询功能:

package com.smbms.dao;

import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

public interface IUserDao {
    //查询数据库中是否存在当前用户名和密码的用户,如果存在则获得该用户的全部个人信息,并封装成Map
    //也就意味着登陆成功
    @Select("select * from smbms_user where userName=#{userName} and userPassword=#{userPassword}")
    Map login(@Param("userName") String username, @Param("userPassword") String password);
}

总结

最后配置tomcat服务器,将项目进行运行,通过登录页面输入数据库中已存在的用户进行验证登录,并进入主页面,其效果图如下:

 

本文到这里结束,后期文章将完善根据不同的登录的用户身份去处理用户管理的功能。 

 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章