Web 后端开发总结
基于三层架构 及他们能做什么
三层架构:Controller 控制层、Service 业务层、Dao 持久层
Controller:负责接收请求,响应数据
Service:负责具体业务逻辑的处理
Dao:处理数据访问,完成数据库的增删改查
流程:前端发起一个请求给到 Controller,Controller 接受请求调用 Service 的方法进行逻辑处理,然后对 Dao 完成访问数据,完成数据的增删改查。
过滤器和拦截器:
在处理业务之前往往会进行一些通用的操作,比如登录校验和更改编码集,这时候就要用到 JavaWEB 三大组件中的 Filter(控制器)和 Spring 中的 Interceptor(拦截器)来实现
区别:
1 实现方式:拦截器是基于java的反射机制的,而过滤器是基于函数的回调。
2 拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。
3 调用次数:在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
4 拦截器可以获取IOC容器中的各个bean,而过滤器不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
IOC DI 是 Spring 的核心,两种思想
IoC:控制反转,就是将创建对象的权力转让给容器,这个容器我们一般较 IoC 容器或者 Spring 容器
DI:依赖注入,就是容器将 Spring 所需要的资源提供给程序
AOP 和 事务管理
AOP 是面向切面编程,就是在真实类中与业务操作无关的代码抽取出来,封装成一个切面,什么时候使用什么时候插入就行。面向切面编程可以提高代码复用性,降低耦合度,利于维护。
事务管理:将操作数据库的增删改操作看成一个 整体,要么同时成功要么同时失败 -- 四大特性
统一异常处理
将程序遇到的异常单独封装出来,遇到异常用这个处理。
会话技术
使用会话跟踪技术就是在统一会话中,多个请求之间共享数据
三种方式:Cookie,Session,令牌技术(JWT)
本地上传与OSS
阿里云对象存储服务
mybatis
持久层的框架,实现java与数据库的交互
SSM 分别代表 SpringMVC Spring Mybatis![](https://i-blog.csdnimg.cn/direct/b0b054674b0b43f58fdcb8682122f7b7.png)
Spring常用注解
过滤器Filter :
实现 Filter 接口
@WebFilter("路径") 设置拦截路径,全部拦截用 /* 表示
@ServletComponentScan -- servlet 注解扫描器 在启动类上贴这个注解,才可以扫描到 servlet 的注解
拦截器Interceptor:
实现 HandelInterceptor 接口。主要实现 preHandler 方法
放行true,拦截false
配置好拦截后我们还需要注册拦截器
拦截所有路径"/**"
IoC 与 DI
IoC:
注解一定贴在类上
@Component -- 这是让这个类编程 Bean 对象
@Controller -- 声明是控制类的Bean对象
@Service -- 声明是业务类的Bean对象
@Repository -- 访问的是Dao层,但不常用
@Configuration + @Bean -- 标注是配置类
DI:
@Autowired -- 自动装配 ,注入容器中的 Bean。
@Value -- 可以解析配置文件中的内容,注入常量值及若少量配置文件中的属性值获取使用。
@PropertySource -- 可以为所有的字段加上注解,第三方配置文件的来源。
@ConfigurationProperties -- 这个就是加前缀,简化重复代码,一般用在配置文件中属性值获取。他可以相对大量的获取。省略前缀后,名字若与实体类名字一致则可以直接省略 @Value 注解。
AOP:
@Aspect:表示这个类是个切面
@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行
@Before:前置通知, 此注解标注的通知方法在目标方法前被执行
@After:后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行
@AfterReturning:返回通知,返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行
@AfterThrowing:异常通知,异常后通知,此注解标注的通知方法发生异常后执行
事务处理
@Transactional:封装好了事务,直接贴在方法桑
全局异常处理
@RestControllerAdvice=@ControllerAdvice + @ResponseBody 实现全局异常处理,通过这个注解集中处理控制器抛出的异常
@ExceptionHandler(RuntimeExpertion.class):处理的异常类
Controller
@RestControlle = @Controller+@ResponseBody:返回字符串发送给客户端
@RequestMapping:能处理的HTTP请求方法
@GetMapping:处理GET请求
@PostMapping:处理POST请求
@PutMapping:处理PUT请求
@DeleteMapping:处理DELETE请求
@PatchMapping:处理PATCH请求
@PathVariable:占位符,在 Mapping 中的路径参数由这个传递
@ResponseBody:将对象转化为字符串并写入HTTP
@RequestParam:前端传递的参数名和后端不一致时用这个组件接受前端传过来的数据,保证这个里面的参数和前端的一样就行
Dao
@Mapper 在这里可以写 sql 语句
@mapperScan("Mapper接口所在路径") 贴这个注解后可以扫描到有 @Mapper 的注解
其他
@Scopt:贴在 Bean 上更改是单例还是多例
@Test:测试类
@Import:导入配置类