笔记属个人总结,仅供参考,如有误,可以相互交流
1、简述springMVC的运作流程
1、用户通过浏览器向服务器发送请求,请求被SpringMVC的前端控制器DispatcherServlet拦截。
2、前端控制器将拦截的请求发送给处理器映射器HandlerMapping,处理器映射器根据请求URL创建相应的处理器及拦截器,并返回给前端控制器。
3、前端控制器,根据返回的信息,调用处理器适配器HandlerAdapter,处理器映射器执行处理器中相应的方法
4、处理器Handler执行完方法后,返回ModelAndView对象,该对象包含数据和视图。一路返回到前端控制器。
5、前端控制器根据返回来的数据和视图,调用相应的视图解析器ViewResolver,视图解析器解析后,向前端控制器返回具体地视图。
6、前端控制器对视图进行渲染,视图经过渲染后返回给客户端浏览器显示。
2、SpringMVC的常用注解
@Controller 将指定的类定义为控制器注入spring容器中
@RequestMapping 定义请求映射,可用于控制器类或方法上
@RequestBody 将Jason数据类型转化为Java类型
@ResponseBody 与@RequestBody相反,将java类型转化为jason类型
@RequestParameter 指定前端请求参数的别名,即该注解的name值与同名的形式参数绑定
@PathVariable 将url中的占位符绑定到形式参数中
组合注解
@RestController 包含@Controller和@ResponseBody的组合注解
@GetMapping get请求方式的Mapping,等价于@RequestMapping(value="/users/login.action",method=RequestMehod.GET)
----- 以下的注解与@GetMapping类似,只是请求方式不同而已-------------
@PostMapping
@PatchMapping
@DeleteMapping
@PutMapping
讲一下@PathVariable和@RequestParam的区别
@RequestMappint("/findUser/{id}")
public User findUser(@PathVariable("id") long id,
@RequestParam(value="pageNum",required=false,defaultValue="22") int pageNum){}
@PathVariable:指的是路径参数
@RequestParam:是对参数的说明
@RequestParam(value=“参数别名”,required=false,defaultValue=“默认值”)
3、Spring容器的理解
Spring是一个一站式的开源容器框架。一站式体现在
1,在表现层提供了SpringMVC技术以及与structs2框架整合的能力
2,在数据访问层提供了与mybatis,hibernate等orm框架整合的能力
Spring最主要的特点是IOC,DI和AOP
1,IOC,控制反转,传统方式中,创建对象是通过硬编码实现的,而在spring中,Spring容器托管对象,创建对象,管理对象生命周期,即创建对象的控制权从程序员转移到了spring容器中,这就是控制反转。
2,DI,依赖注入,就是对象与对象的关系可以通过spring容器注入
3,AOP,面向切面编程,采取横向抽取机制,将分散在各个方法中的重复代码抽取出来,然后在需要执行的地方植入这些代码。
a,这些重复的代码抽取出来放在一个类中,这个类就叫切面类aspect。
b,每段重复代码组成切面类的方法,这些方法就叫做通知advice。
c,在需要执行的地方植入这些重复代码,这些需要执行的地方就是我们所说的切入点pointcut。切入点可以是某个类,也可以是某个类中的方法。
其中spring中的通知有5种类型:
前置通知,后置通知,环绕通知,异常通知,最终通知。
aop编程中所使用的模式是代理模式。
声明式事务管理就是aop编程的一个例子。