@requestParam
此注解出于String-mvc框架中
在框架中使用注解驱动的时候注意要在对应的.xml文件中打开注解扫描器.新手坑
注解驱动声名:<context:component-scan base-package="com.zyh.string.service"/>
@requestParam注解主要用于接收前端传来的参数,注解中有两个属性:required(必要的)默认required=true:意思为requestParam中声名的参数必须要存在,这是一个我必须要的值,如果没有接收到这个参数的话系统会报400错误,若是required=flase则是表明当前参数我就算没有接收到也没关系,会给当前参数一个null.
@requestParam中的另外一个属性defaultValue:默认值,给当前参数一个默认值,若是前端没传我需要的这个参数,或者是前后端参数名不一致,但是我又必须要一个值的话就可以由defaultValue给一个默认值
public String testRequestParam(@RequestParam(value="name") String username)
{
System.out.println("执行了..."); System.out.println(username); return "success";
}
鸡肋处:直接在( )中可以直接声名参数名字 eg:(string userId),参数类型 : 前端对应的参数名字
@Controller
使用在控制层,把当前类对象交给容器去实现
@requestMapping
使用在类前或者方法前面,注意一个controller并非就是一个servlet,实际上一个被加上@controller类的方法就是一个service(),用来处理请求.
@requestMapping("/user")用在class上则需要先进这个user在进入标注在方法上面的@requestMapping("/method1").
重点来了:自动装配,在使用参数传递中我们不可能只获取到简单类型的参数那么若是得到复杂类型的参数那么我们该怎么做呢?
@requestBody
当前端传了json数据的时候,一般是通过post请求携带在body中的,那么可以使用requestBody来接收数据
@responseBody
把数据发送到前端(会自动把return后面的对象转换为json数据发送到前端)
常和@RequestMapping()放在一起使用,将当前请求中的数据发送给前端,不要用在类前面.
@RestController = @Controller + @responseBody 的效果(我不建议这个么去做,不严谨)
@RestController
@RequestMapping("/carts")
public class CartsController {
@Resource
CartsService cartsService;
@Autowide按照类型注入, 若是接口多实现想要按照名字注入则配合 @Qualifiter(name="serviceImpl01")
常常在一起使用,来自于框架
@Resource 来自jdk
默认按照名字注入,若是不存在则使用按照Type去注入,所以别乱用其中的name属性,
若是使用了@resource(name= "servicrImpl02")则只会按照名字去找了,不会去找Type
解决接口多实现问题的依赖注入
方法1:@Autowide @Qualifiter(name="serviceImpl01") 按照名字去找对应实现,
方法2:@resource(name= "servicrImpl02")去找
@PathVariable
将传入后端中的模板参数取其中的某个作为当前对象的参数
@RequestMapping(value = "treeList/{typeAlias}.xml")
@ResponseBody
public TreeList treeList(@PathVariable("typeAlias") String typeAlias) {
}