-
框架
最基础:javabean+jsp+servlet。
SSM:Spring+SpringMVC+Mybatis。
SSH:Spring+SpringMVC+Hibernate。
JSP表现层,SpringMVC控制层,Java Bean业务层,Mybatis数据访问层。Spring:以IOC控制反转、DI依赖注入、AOP面向切面编程为基础,简化企业项目开发复杂度
SpringMVC:代替servlet的作用。
Mybatis:持久层框架,支持定制化SQL、存储过程、高级映射。将接口和Java的POJO映射成数据库中的记录,代替了传统的JDBC编程工作。
Hibernate:对象关系映射框架,对JDBC进行封装,POJO与数据库表建立映射。 -
IOC控制反转思想:将设计好的对象交给容器控制,由容器来帮忙创建和注入依赖对象。依赖倒置、依赖注入,上层控制下层。
应用上下文调用方式:
ApplicationContex:通用使用方法。
WebApplicationContext:Web应用获取容器对象。
ClassPathXmlApplicationContex:从类路径下的xml配置文件中加载上下文定义,适用xml配置的方式。
AnnotationConfigApplicationContex:从基于java的配置类中加载上下文定义,适用java注解的方式。通过注解实现DI功能:
JPA(Java持久化API):Controller控制层组件、Service业务层组件、Repository数据访问组件、Component通用组件,主动创建被注解的对象并加入到容器管理,待应用程序调用。
依赖注入:Resource获取类对象,Autowired自动装配,主动查找到对象的依赖关系,并将容器中现有的被调用对象注入到调用对象中。 -
面向切面编程AOP:
剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块。把横切关注点与业务分离,业务逻辑和非业务逻辑分离。
通知、连接点、切入点、切面、引入、目标对象、AOP代理、织入。
常用注解:@Aspect使被注解的类称为切面类,@Pointcut声明一个切入点,@Before前置通知,@AfterReturning返回通知,@AfterThrowing异常通知,@After后置通知,@Around环绕通知 -
SpringMVC常用注解
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@Autowired可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过@Autowired的使用来消除 set,get方法。
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
@RequestParam主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”)。
@Responsebody注解表示该方法的返回的结果直接写入HTTP响应正文(ResponseBody)中,一般在返回json、xml数据时使用,通常是在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP响应正文中。 -
Mybatis搭建持久层
添加相应的jar包,添加Mybatis的配置文件、定义实体类、定义映射文件、注册映射文件。 -
Mybatis实现增删改查
typeAliases:对类型进行别名控制。
resultMap:将查询到的复杂数据映射到一个结果集当中。
使用<select><delete><update><insert>
标签进行增删改查。 -
Hibernate搭建持久层
annotation搭建:配置POM依赖,hibernate.cfg.xml配置数据源、实体注解实现或xxx.hbm.xml配置、配置扫描包或类、持久化测试。
**@Entity:**当前类为实体Bean,需要进行持久化;
**@Table:**当前数据表与持久化类之间的映射;
**@Id:**指定当前持久化类的ID表示属性;
**@GeneratedValue:**指定当前ID表示生成器;
**@Column:**指定当前属性所对应的数据库表中的字段。 -
Hibernate实现增删改查(HQL)
查询:
from User u where u.age=20;
select max(score).min(score) from Course c GROUP BY c.sex;
select new User(user.name,user.age) from User user;
删除:delete from User user where user.age=18;
更新:update User set name = :newName where id=0;(newName为绑定的变量) -
通过spring保持事务的一致性
声明式事务建立在AOP之上,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
在service实现类加上@Transactional注解,Spring xml配置文件中添加:<context:annotation-config/>
PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经在一个事务中,就加入到这个事务中。 -
整合SSM框架
**ApplicationContext.xml:**spring 全局配置文件,用来控制spring特性,管理service、dao、数据源的bean等等。
**spring-mvc.xml:**主要管理action的bean等信息。
**mybatis-config.xml:**mybatis配置文件,主要用于mybatis全局属性的相关配置,如全局setting、mapper配置等等。 -
整合SSH框架
**structs.xml:**struts的配置文件,主要是配置包含result映射、action映射、拦截器配置等等。
**hibernate.cfg.xml:**Hibernate配置文件,主要用于配置数据库和运行时所需的各种特性。
**ApplicationContext.xml:**spring 全局配置文件,用来控制spring特性。