处理器(后端控制器)Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示,在SpringMVC 中提供了一个非常简便的定义Controller 的方法:@Controller,用于标记在一个类上
在配置文件中配置:
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
url路径映射: @RequestMapping(value=”/item”)或@RequestMapping(“/item) value的值是数组,可以将多个url映射到同一个方法
窄化请求映射 : 在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。 如下:@RequestMapping放在类名上边,设置请求前缀 @Controller @RequestMapping(“/item”) 方法名上边设置请求映射url:@RequestMapping放在方法名上边 @RequestMapping(“/queryItem “) 访问地址为:/item/queryItem
请求方法限定 : GET:@RequestMapping(value=”/editItem”,method=RequestMethod.GET) POST:@RequestMapping(value=”/editItem”,method=RequestMethod.POST)
url模板模式映射 :@RequestMapping(value=”/ viewItems/{id}”):{×××}占位符,请求的URL可以是“/viewItems/1”或“/viewItems/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。
作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。
应用: @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象
作用:该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端
应用:@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端
使用@RequestParam常用于处理简单类型的绑定。
value:参数名字,即入参的请求参数名字,如value=“item_id”表示请求的参数区中的名字为item_id的参数的值将传入; required:是否必须,默认是true,表示请求中一定要有相应的参数 ;defaultValue:默认值,表示如果请求中没有同名参数时的默认值
形参名称时items_id,但是这里使用的是value=”id”,限定请求的参数名是id
注意:添加@Validated表示在对items参数绑定时进行校验,校验信息写入BindingResult中,在要校验的pojo后边添加BingdingResult, 一个BindingResult对应一个pojo,且BingdingResult放在pojo的后边
value= {ValidGroup1.class}:表示使用的是分组校验
springmvc默认对pojo数据进行回显,pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 使用@ModelAttribute指定pojo回显到页面在request中的key
@ModelAttribute还可以将方法的返回值传到页面 在商品查询列表页面,通过商品类型查询商品信息。在controller中定义商品类型查询方法,最终将商品类型传到页面。
@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
把普通pojo实例化到spring容器中,相当于配置文件中的<bean id=”” class=””/> ,@component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
spring中bean的scope属性,有如下5种类型:
singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例
prototype表示每次获得bean都会生成一个新的对象
request表示在一次http请求内有效(只适用于web应用)
session表示在一个用户会话内有效(只适用于web应用) globalSession表示在全局会话内有效(只适用于web应用)
@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器
@JSONField(serialize = false)时用来忽略不想序列化的字段的,但是如果加了final,这个字段就无法被过滤 @JSONField(serialize = false) private int SCENE; // 可被过滤 @JSONField(serialize = false) private final int SCENE; // 不能过滤
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.54'
Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。