springmvc注解

springmvc常用的注解

常用的SpringMVC注解有哪些?如何开启SpringMVC的注解扫描?
常用的注解有:
@Controller 使用在web层类上用于实例化Bean
作用:负责组件扫描,扫描之后把当前对象放到spring容器当中。

1.@ RequestMapping: 用于请求url映射。
配置在类上,请求URL 的第一级访问目录。此处不写的话,就相当于应用的根目录
配置在方法上,请求 URL 的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问虚拟路径
@RequestMapping属性:
1) value:用于指定请求的URL,如果只有value一个属性,那么value可以省略。它和path属性的作用是一样的
2) method:用于指定请求的方式,注意格式:method= RequestMethod.GET
//@RequestMapping注解格式如下:
@RequestMapping(value="/user",method= RequestMethod.GET,params={“username”})
3) params:用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样
例如:
params = {“accountName”},表示请求参数必须有accountName
params = {“moeny!100”},表示请求参数中money不能是100

2.@RequestBody注解
主要用来接收前端传递给后端的json字符串中的数据的,将json数据转换为java对象。
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。

3.@ResponseBody:
一般作用在方法上, 当加上@ResponseBody注解后return返回值不会解析成跳转地址,直接把controller方法返回的对象转化为json格式返回。
4.@RestController :相当于@Controller+@ResponseBody
5.@RequestParam
是从请求里面获取参数.
当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显式的绑定

<form action="${pageContext.request.contextPath}/quick16" method="post">
   <input type="text" name="name"><br>
   <input type="submit" value="提交"><br>
</form>

这是Post方式提交,提交的参数是"name",然而Controller的业务方法参数名称为username,因为使用了@RequestParam注解,所以提交后不会报错,控制台依然可以打印出input标签栏中name对应的值

@RequestMapping(value="/quick16")
   @ResponseBody
   public void save16(@RequestParam(value="name",required = false,defaultValue = "itcxy") String username) throws IOException {
       System.out.println(username);
  }

@RequestParam的required属性,默认为true,意思是不能缺少username参数,否则报错。
如果required = false,那么提交的时候可以不传username参数

@RequestParam的defaultValue属性,用来设置参数默认值,如果没设置默认值,而且又没有提交username参数,就会报错。设置默认值之后提交的数据中没有username或者name参数时后台会默认该参数为对应设置的默认值

若改为get方式提交,浏览器地址栏访问如下情况:
情况1:localhost:8888/user/quick16,不传任何参数,由于@RequestParam注解的defaultValue属性设置了defaultValue= “itcast”,所以提交后控制台不会报错,打印出itcxy;

情况2:localhost:8888/user/quick16?name=zhangsan,传递了name参数,那么后台会打印出zhangsan,不打印默认值

6.@PathVariable注解 : 是从路径里面去获取变量,进行占位符的匹配获取工作。
http://localhost:8080/itheima_springmvc1/quick17/zhangsan
@RequestMapping(value="/quick17/{name}")
@ResponseBody
public void save17(@PathVariable(value=“name”) String username) throws IOException {
System.out.println(username);
}

启用注解 :
<context:annotation-config />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值