SSM框架整合(简单的员⼯签到管理系统源码)(Eclipse+maven)SSM框架整合(简单的员⼯签到管理系统源码)(Eclipse +Maven)
Spring
Spring侧重于业务逻辑⽅⾯。Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。
IOC:控制反转也叫依赖注⼊。利⽤了⼯⼚模式将对象交给容器管理,只需要在spring配置⽂件总配置相应的bean,以及设置相关的属性,让spring容器来⽣成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置⽂件中配置的bean都初始化好,然后在你需要调⽤的时候,就把它已经初始化好的那些bean分配给你需要调⽤这些bean的类(假设这个类名是A),分配的⽅法就是调⽤A的setter⽅法来注⼊,⽽不需要你在A⾥⾯new这些bean了。
Spring 最认同的技术是控制反转的依赖注⼊(DI)模式。控制反转(IoC)是⼀个通⽤的概念,它可以⽤许多不同的⽅式去表达,依赖注⼊仅仅是控制反转的⼀个具体的例⼦。
当编写⼀个复杂的 Java 应⽤程序时,应⽤程序类应该尽可能的独⽴于其他的 Java 类来增加这些类可重⽤可能性,当进⾏单元测试时,可以使它们独⽴于其他类进⾏测试。依赖注⼊(或者有时被称为配线)有助于将这些类粘合在⼀起,并且在同⼀时间让它们保持独⽴。Spring框架的核⼼:依赖注⼊,将这两
个词分开来看⼀看。这⾥将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看⼀看第⼆部分,注⼊。所有这⼀切都意味着类 B 将通过 IoC 被注⼊到类 A 中。依赖注⼊可以以向构造函数传递参数的⽅式发⽣,或者通过使⽤ setter ⽅法 post-construction。
⾯向切⾯(AOP):
AOP只是Spring的特性,它就像OOP⼀样是⼀种编程思想,并不是某⼀种技术,AOP可以说是对OOP的补充和完善。OOP引⼊封装、继承和多态性等概念来建⽴⼀种对象层次结构,⽤以模拟公共⾏为的⼀个集合。当我们需要为分散的对象引⼊公共⾏为的时候,OOP则显得⽆能为⼒。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如⽇志功能。⽇志代码往往⽔平地散布在所有对象层次中,⽽与它所散布到的对象的核⼼功能毫⽆关系。在OOP设计中,它导致了⼤量代码的重复,⽽不利于各个模块的重⽤。将程序中的交叉业务逻辑(⽐如安全,⽇志,事务等),封装成⼀个切⾯,然后注⼊到⽬标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两⼤类:⼀是采⽤动态代理技术,利⽤截取消息的⽅式,对该消息进⾏装饰,以取代原有对象⾏为的执⾏;⼆是采⽤静态织⼊的⽅式,引⼊特定的语法创建“⽅⾯”,从⽽使得编译器可以在编译期间织⼊有关“⽅⾯”的代码。
Spring MVC
Spring MVC属于Spring Framework的后续产品,侧重于Controller层,已经融合在Spring Web Flow⾥⾯,它原⽣⽀持的Spring特性,让开发变得⾮常简单规范。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的⾓⾊,这种分离让它们更容易进⾏定制。
MyBatis
MyBatis是⼀个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了⼏乎所有的JDBC代码和参数的⼿⼯设置以及结果集的检索。MyBatis使⽤简单的XML或注解⽤于配置和原始映射,将接⼝和Java的
POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。可以这么理解,MyBatis是⼀个⽤来管理数据增删改查的框架。
SSM搭建设计分析
使⽤Maven⽣成war项⽬——&l⽂件引⼊spring启动容器,springmvc前端控制器——>编写spring配置⽂件
MVC的标准配置)——>Mybatis配置(配置mapper驼峰命名法,为包名起别名,配置PageHelper组件)——>SSM搭建完毕,使⽤MySql建数据库(两张表,tbl-emp、tbl-dept,员⼯表,部门表)——>使⽤mybatis generator逆向⼯程⽣成bean,Mapper,数据库映射⽂件l——>前端页⾯(搭建页⾯,搭建模态框(修改,添加员⼯信息))——>controller装配对应的jsp请求的⽅法——>通⽤的返回类(Msg.java)。
使⽤Maven(亲测版本依赖没有冲突)
使⽤maven建⽴打包类型的war的项⽬,在l中配置项⽬所需的所有函数依赖,
所需的所有jar包如下(版本与相关依赖由maven⾃动寻下载):
spring-webmvc-4.3.7.RELEASE.jar
spring-aop\4.3.7.RELEASE\spring-aop-4.3.7.RELEASE.jar
spring-beans-4.3.7.RELEASE.jar
spring-context-4.3.7.RELEASE.jar
spring-core-4.3.7.RELEASE.jar
commons-logging-1.2.jar
spring-expression-4.3.7.RELEASE.jar
spring-web-4.3.7.RELEASE.jar
spring-jdbc-4.3.7.RELEASE.jar
pring-tx-4.3.7.RELEASE.jar
spring-test-4.3.7.RELEASE.jar
spring-aspects-4.3.7.RELEASE.jar
aspectjweaver-1.8.9.jar
mybatis-3.4.2.jar
mybatis-spring-1.3.1.jar
pagehelper-5.0.0.jar
jsqlparser-0.9.5.jar
mybatis-generator-core-1.3.5.jar
c3p0-0.9.1.2.jar
mysql-connector-java-8.0.18.jar
spring ioc注解protobuf-java-3.6.1.jar
jstl-1.2.jar
javax.servlet-api-3.1.0.jar
jackson-databind-2.9.10.1.jar
jackson-annotations-2.9.10.jar
jackson-core-2.9.10.jar
hibernate-validator-5.4.1.Final.jar
validation-api-1.1.0.Final.jar
D:\mavenrp\org\jboss\logging\jboss-logging\3.3.0.Final\jboss-logging-3.3.0.Final.jar
D:\mavenrp\com\fasterxml\classmate\1.3.1\classmate-1.3.1.jar
D:\mavenrp\junit\junit\4.12\junit-4.12.jar
D:\mavenrp\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar
具体的配置⽂件编写见源码
数据库MySQL
建表语句
tbl_dept:
CREATE TABLE`tbl_dept`(
`dept_id`int(11)NOT NULL,
`dept_name`varchar(255)DEFAULT NULL,
PRIMARY KEY(`pid`),
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
tbl_emp:
CREATE TABLE`tbl_emp`(
`emp_id`int(11)NOT NULL,
`emp_name`varchar(255)DEFAULT NULL,
`gender`char(1)DEFAULT NULL,
`email`varchar(255)DEFAULT NULL,
`d_id`int(11)DEFAULT NULL,
`edate`datetime DEFAULT NULL,
PRIMARY KEY(`emp_id`)
KEY`sfk_0001`(`d_id`),
CONSTRAINT`sfk_0001`FOREIGN KEY(`d_id`)REFERENCES`tbl_dept`(`dept_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
tbl_user:
CREATE TABLE`tbl_user`(
`username`varchar(255)CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password`varchar(255)CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY(`username`)USING BTREE,
CONSTRAINT`fk_emp_user`FOREIGN KEY(`username`)REFERENCES`tbl_emp`(`email`)ON DELETE RESTRICT ON UPDATE RESTRICT )ENGINE=InnoDB CHARACTER SET= utf8 COLLATE= utf8_general_ci ROW_FORMAT = Dynamic;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。