我们直接进入主题ssm是什么:s(SrpingMvc(UI))+spring(解耦)+mybatis(Dao).
前言
mvc:设计模式;所有的Browser/Server(前端页面+后端代码)项目,至今程序员说前后端分离,说是为了维护代码更方便管理,大部分的项目都有mvc思想一说,
M: Model 模型层,JavaBean,分成两种业务(业务逻辑Bean,数据存储bean)
V: Viwe 视图层 ,用户的操作页面/数据的展示页面来给客户看的
C: Controller 控制层,顾名思义是用来接收用户的请求(路径,参数),返回给用户具体的响应(页面,数据)
三层架构: 独属于Java的,在mvc之后出现的,是mvc的升级版
-
视图层 web,所有和页面相关的内容,都归此层(v+c)
- 业务逻辑层 : service,处理程序中所设计到的判断,以及程序的执行流程(登录---判断用户的用户名,密码是否正确,转账--转出--转入)(业务逻辑)
- 数据持久层 dao,所有和数据库相关的都放在这个层中(JDBC,数据库存储Bean)
基于mvc和三层架构,对程序进行分包,分层
--前端
web编写所有程序的前端页面(独立于后端代码之外的)
--后端分包
controller包编写servlet
dao包 编写数据库的增删改查
entity 包 保存数据库查询出来的数据
高内聚低耦合
高耦合什么是高耦合:一旦一个类发生变化,整个程序需要修改的地方很多,导致整个程序需要大量修改源码,这样的话就违反了我们的只增不改的原理了,所以高内聚低耦合也不是没有道理,在学习过程中,对这个概念理解的不是很清楚,有兴趣的水友们可以了解一个这个,什么是高内聚低耦合这里就不做过多的解释了
Spring:
是一个轻量级 的控制反转(ioc)和面向切面(Aop)的容器框架
Spring文件夹构成
Spring的文档主页
Spring的jar包结构
spring下载的位置:JFrog (spring.io)
Spring的两大核心
- Ioc 控制反转 -反射--根据指定的类名,有jvm创建对象,此过程中,不会出现new关键字
1.2 DI( dependency injection 依赖注入)
2. aop 面向切面
IOC
通过 org.springframework.context.ApplicationContext 类,想要实例化对象看可以使用configuration metadata配置元文件,即XML(可拓展标记语言), Java annotations(Java注解), or Java code(Java代码)。
Spring Ioc 入门案例
1项目结构
配置文件
3.测试类
package cn.hp.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test3 {
public static void main(String[] args) throws BeansException {
// 加载 spring 的配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml");
Human p = context.getBean("p", Human.class);
System.out.println(p.toString());
}
}
package cn.hp.spring;
public interface Human {
}
public class People implements Human{
// id 姓名 年龄
private int id ;
private String name ;
private int age ;
public People() {
}
public People(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "People{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Person implements Human {
// id 姓名 年龄
private int id ;
private String name ;
private int age ;
public Person() {
}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}