SSM学习笔记

一、Spring

1.IoC(Inversion of Control) 控制反转

  • ​将对象控制权转移到外部,解决耦合度较高的问题
  • IoC容器中创建的对象叫做bean

2.DI(Dependency Injection) 依赖注入

  • 建立bean和bean之间的依赖关系

3.bean生命周期(初始化方法)

  1. 创建对象
  2. 执行构造方法
  3. 执行属性注入(set操作)
  4. 执行bean初始化方法
    1. 使用bean
    2. 执行业务操作
    3. 关闭/销毁容器
    4. 执行bean销毁方法

4.AOP(Aspect Oriented Programming) 面向切面编程

  • 在不惊动原始设计的基础上为其进行功能增强(spring无侵入式理念)
  • 连接点(方法的执行,好像只要有一个就行,然后抽取通知,给其他切入点添加相同的功能)、切入点(需要加功能的地方)、通知 (共性方法)、通知类(定义通知的类)、切面(通知与切入点的对应关系)。
  • 目标对象(target)、代理(Proxy)
  • 切入点:需要增强功能的地方
  • 切入点表达式:描述需要增强功能的地方的方法
  • AOP可以获取参数后进行相关处理,比如用户输入密码进行处理后然后再与后端进行比较。

5.AOP工作流程(SpringAOP本质代理模式)

  1. 启动spring容器
  2. 读取所有切面配置中的切入点
  3. 初始化bean,判定bean对应的类中的方法是否匹配到任意切入点(将每个bean中方法与咱们通知类中设置的切入点比较)
  4. 匹配失败(即没有匹配的切入点,这个bean咱们不用管,没有使用AOP),创建对象
  5. 匹配成功(这个地方要添加功能,使用了AOP),创建原始对象(目标对象)的代理对象
  6. 获取bean执行方法
  7. 获取bean,调用方法并执行,完成操作。
  8. 获取的bean是代理对象时,根据代理对象的运行模式运行原始方法与增强的内容,完成操作。

6.AOP通知类型

  • 前置通知 --------@Before
  • 后置通知--------@After
  • 环绕通知(重点)--------@Around 需要在参数添加(ProceedingJoinPoint pjp)对原始方法进行调用,如果哪个方法有返回 值,我们要用pjp接住,然后在共性方法里返回它,共性方法返回值类型写Object,环绕通知要抛异常,是担心切入点本身有 异常。
  • 返回后通知(了解)--------@AfterReturning
  • 抛出异常后通知(了解)--------------@AfterThrowing

7.AOP通知获取数据

  • 参数
  • 返回值
  • 异常

8.Spring事务

  • 不仅可以再数据层开,也可以在业务层开
  • spring事务是可以在业务层上开启的事务
  • 注解开发使用事务,要先在jdbcConfig配置类中配置jdbc的bean事务对象PlatformTansationalManager,然后还要在SpringConfig配置类中开启事务注解EnableTansationalManager,然后你哪个方法需要开启事务就在那个方法的接口上添加spring事务注解(@Transational)
  • Mybatis框架用的是jdbc的事务
  • spring开启事务的那个接口叫做事务管理员,参与spring事务的那些个事务叫做事务协调员。
  • 事务传播行为,propagation ,事务协调员可以不和事务管理员一起玩(注意,哪个不玩就哪个自己开),自己新开事务,但是要用try-finally,一个代码块一个事务

二、SpringMVC

9.SpringMVC

  • SpringMVC和servlet功能等同一样,属于web开发技术
  • SpringMVC是一种基于java实现MVC模型的轻量级web框架
  • 使用简单,开发便捷。
  • SpringConfig和SpringMvcConfig这两个在处理bean控制时,要单独拿到外面去,不然会冲突 。
  • 接收json数据,先导jackson-databind坐标,然后在SpringMvcConfig配置类中添加@EnableWebMvc,最后在接收参数哪里记得要加@RequestBody,就可以拿到json类型的集合、对象、封装有对象的集合等。

10.响应

  • 文本
  • json数据
  • 页面跳转不用加@ResponseBody,字符串和对象还有集合对象都要加@ResponseBody。目 的是:把对象转换成json数据,放到这个响应体中响应给也页面
  • @ResponseBody如果你的返回值是String,就将你的返回值作为响应体响应到页面,但是如 果你的返回值是对象、集合,它就将你的对象转换成json格式响应给页面。
  • json格式的接收都要在那个方法中参数前添加@RequestBody,json格式的响应都要加方法上@ResponseBody,这两个注解起到转换格式的作用。

11.Rest风格

  • Rest(Representational State Transfer),表现形式状态转换。
  • 隐藏资源的访问行为
  • 常用:GET、POST、PUT、DELETE.
  • 根据路径和资源的请求方式就可以知道请求的哪个资源
  • 是风格不是规范,可以被打破,但是都按他的来。
  • 根据Rest风格对资源进行访问称为RESTful。
    1. 新增:post
    2. 删除:delete
    3. 修改:put
    4. 查询:get
  • 如果需要参数另外在参数中添加@PathVariable,告诉它参数来自路径。
  • 这三个都是用来接收参数,第一个是接收json数据,第二个是接收url地址传参或表单传参, 第三个是我们用Restful进行开发时,参数较少时,例如1个,可以用这个接收,通常用于传递 id值
@RequestBody
@RequestParam
@PathVariable
  • 当我们用Restful开发时,可以简写很多东西,
  • 用@RestController直接合并@Controller和@ResponseBody
  • 然后根据不同的请求方法选择不同的mapping
    1. @PostMapping
    2. ​@DeleteMapping
    3. ​@PutMapping
    4. ​@GetMapping

12.项目异常处理方案

  • ​业务异常(BusinessException)
    用户规范或不规范的操作产生的异常
  • ​系统异常(SystemException)
    项目中可预计无法避免的异常
  • ​其他异常(Exception)
    编程人员未预期到的异常

13.其他

  • 在ssm项目中,修改了前端的页面,是可以实时生效的,不用重启服务器。
  • 拦截器和过滤器不一样,拦截器是SpringMvc中的技术,拦截器是在Controller层前后动态拦截方法的调用,浏览器发出的请求经过服务器、过滤器到达spring的中央处理器,然后先将请求给到拦截器,符合要求才能调用Controller层的一些方法,调用后也要经过拦截器,然后才将json等数据返回给浏览器。
  • 静态资源的访问直接给到服务器处理就行,动态的资源先经过servlet技术中的过滤器然后给到SpringMvc处理。
  • 客户端每次向服务端发出的一次http请求,都是一个线程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一码一上午

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值