Spring

SpringMvc

1.概述:

SpringMVC就是基于MVC设计模式来实现的。

我们的POJO就是Model层,我们的JSP就是视图层,我们的Controller就是控制层。

MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果。

2.工作原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XH0fEJst-1623044111711)(RackMultipart20210607-4-13lyxac_html_e58ee630c0df1991.png)]

过程描述:

  1. 用户发送请求至前端控制器(DispatcherServlet)。 
  2. 前端控制器(DispatcherServlet)收到请求调用处理器映射器(HandlerMapping)。
  3. 处理器映射器找到具体的处理器(可以根据xml配置,注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给前端控制器(DispatcherServlet)。
  4. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)处理器适配器
  5. 处理器适配器(HandlerAdapter)经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6. 后端控制器(Controller)执行完成返回ModelAndView。
  7. 处理器适配器将后端控制器执行结果ModelAndView返回前端控制器(DispatcherServlet)。
  8. 前端控制器将ModelAndView传给视图解析器(ViewReslover)。
  9. 视图解析器解析后返回具体View.。
  10. 前端控制器根据View进行渲染识图(即将模型数据填充至视图中)。
  11. 前端控制器响应用户。

3.Springmvc框架常用注解

1、@Controller(控制器)

用于标记在一个类上,使用它标记的类就是一个Spring Controller对象。分发处理器将会扫描该注解的方法,并检测该方法是否使用了@RequestMapping注解。

一般用@Controller注解,表示是控制层,不能用别的注解替代。

2、@RequestMapping(中文:路径)

该注解是一个用来处理地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法,都是以该地址作为父路径。

3、@Resource(中文:资源)和@Autowried   

都是做bean注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,都需要导入,但是spring支持该注解的注入。

共同点:两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

不同点:@Autowried是spring提供的注解、@Autowried注解是按照类型(byType) 装配依赖对象,默认情况下他要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。

@Resource默认按照byName自动注入,@Resource有两个重要的属性:name和type,而spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用bytype自动注入策略。   

4、@PathVariable  (路径变量)

标识接收单个参数

//优化GET传参的restful方式
		//GET方式访问: http://localhost:8080/car/insert?id=1&name=张三&age=18
		//restful方式访问: http://localhost:8080/car/insert/1/张三/18
	@RequestMapping("insert/{x}/{y}/{z}")
//restful配合@PathVariable注解一起用,使用{资源名}获取传过来的值
	public void insert(@PathVariable int x,
						@PathVariable String y,
						@PathVariable int z) {
		System.out.println("数据插入成功,id="+x+",name="+y+",age="+z);
	}

 5、奇奇怪怪的注解

@ResponseBody 返回对象利用jackson工具类转换为json字符串

@RequestParam 参数名和请求参数名称不同时使用,可以设置默认值

 

 Spring框架两大核心:IoC和DI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值