今天重新复习了一下springmvc,特此总结一下。
1.springmvc的工作原理
2.springmvc的几个重要组成部分。DispatcherServlet (前端控制器总开关) ,HandlerMapping(请求路径映射器),HandlerAdapter(适配器),ViewResolver(视图解析器),Controller(动作控制器)。
3.@Controller 注解。此注解是标识于类上的,当扫描时会扫描到类上是否有此注解,如果有这个注解,那么就会扫描加载这个类下的其他方法,查看方法上面是否有@RequestMapping注解。@Controller注解功能仅仅是为了能让扫描到这个类,他的含义就是定义一个控制类,而真正的请求处理器,其实是被@RequestMapping修饰的方法,同时单单的一个注解@Controller还不能完成,此时的spring容器还不知道他的存在,需要与spring整合,切记勿忘。整合有两种步骤,第一种是在springmvc的配置文件中定义MyController的bean对象,第二种是在springmvc的配置文件中告诉spring去哪找标记了@Controller的控制器,也就是配置下扫描路径.
4.@RequestMapping(映射url的。放于类上或者方法上,高级用法可以是method写多种,可以写get请求同时加上post请求。param这个可以有三种含义,1.param=xxx2.param3.!param.第一种含义是参数必须有也必须赋值,第二种是必须有这个参数,但是值无所谓,第三种是不能有这个参数)
5.@Autowired这个注解一般用于在@Controller层或者@Service层中注入对象使用的,开发时就是直接写上就行,但是有几点还是需要知道的,@Autowired是注入对象的意思,是动态的去给成员变量注入在spring容器中的对象,那么注入就有一定的条件或者说注入的依据,这个注入有两种类型,第一种是byName,第二种是byType,@Autowired注解默认是byType,是根据类的类型去做判别的,如果有多个类型冲突了,就会抛出异常,如果想按照byName匹配,则需要和@Qualifier配合使用,@Qualifier中写名字即可。
6.与@Autowired注解相类似的是@Resource注解,这个注解也是注入bean存在的注解,但是他并不是spring提供的,他是由javax.annotation.Resource包提供,需要导入,只不过是spring支持他的注解而已,所以也能使用,他有两个很重要的属性,一个是name,一个是type.分别对应的就是byName.byType。看你想使用哪种策略了,默认是的byName的策略。
7.@ResponseBody注解,此注解是在请求处理映射的返回不是html页面时候使用的。当方法返回给请求者的是特殊格式的数据类型时候,比如json,或者xml时候,就需要用此注解进行转换.将返回的对象通过适当的HttpMessageConverter转换为指定的格式,然后写入到Response对象的body数据区。
8.@RequestBody注解是请求是否直接将参数封装到对象中去使用。
9.@RequestParam注解,顾名思义他的意思是请求参数,此注解用三个参数,分别是value,required,defaultValue,value是请求参数必须名称相同,required值为true和false,值此参数是否必须有,defaultValue是默认值。
10.@ModelAttribute这个注解用于方法上和方法的参数上,含义就是标注这个注解的方法会在@Controller的所有方法前面就调用。
11.@PathVariable这个注解是可以直接将请求的url中的值对应到@Controller的方法中的,在@RequestMapping的value中写映射地址时候,用大括号包围起来,然后在方法的参数中使用@PathVariable就能直接获取到请求地址上的数值,其目的就是为了动态的请求而准备。