@RequestMapping:映射请求地址。

   利用RequestMappingvaluemethodparamsheader实现;同时利用@RequestParam对请求参数添加限制条件。它可用于类或方法上,作用是处理请求地址的相关映射。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

该注解有六个属性,分别为value, method,consumes,produces,params,headers。

  • value: 指定请求的实际地址。
  • method:指定请求的method类型,如:GET、POST等类型。
  • consumes: 指定处理请求的提交内容类型(Content-Type)也就是前台传递的类型,例如application/json, text/html等。
  • produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。
  • params:指定request中必须包含某些参数值是,才让该方法处理。
  • headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。
@Controller
@RequestMapping(value = "/login")
public class LoginController {

	@RequestMapping(method = RequestMethod.GET)
	public String login() {
		return "login";
	}
	
@RequestMapping(method = RequestMethod.POST)
	public String fail(@RequestParam(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM) String userName, Model model) {
		model.addAttribute(FormAuthenticationFilter.DEFAULT_USERNAME_PARAM, userName);
		return "login";
	}

}

  @RequestParam用于将请求参数,区数据映射到功能处理方法的参数。

  1. 可以对传入参数指定参数名,如果没有默认为null
  2. 可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传 
  3. 可以限制参数的类型,如果返回NULL,需要使用泛型。
  • value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;
  • name 绑定本次参数的名称,要跟URL上面的一样
  • required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;
  • defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#
@GET
@Path(value = "/demo")
public Map<String, Object> getlevel(@RequestParam int number) {
public Map<String, Object> getlevel(@RequestParam(value="pollutant",required =false) int number) {

 

@QueryParam

@QueryParam 是 JAX-RS 本来就提供的,和Spring的RequestParam作用一致

@PathVariable

这个注解能够识别URL里面的一个模板,我们看下面的一个URL.

REST风格;从请求地址URL模板中提取变量值。

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

上面的一个url你可以这样写:

@RequestMapping("/hello/{id}")
    public String getDetails(@PathVariable(value="id") String id,
    @RequestParam(value="param1", required=true) String param1,
    @RequestParam(value="param2", required=false) String param2){
.......
}

@PathParam

这个注解是和spring的pathVariable是一样的,也是基于模板的,但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包

 

  @RequestBody

@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.

我们传入的参数类型为contentType : "application/json",参数传入方式为json转成字符串(JSON.stringify({ })),所以在后台我们需要用@requestBody注解来接收。

@RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json。直接通过浏览器输入url时,@RequestBody获取不到json对象,需要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json。

	@POST
	@Path(value = "/login")
	@Produces(MediaType.APPLICATION_JSON)//返回类型APPLICATION_JSON
	@ResponseBody    //返回String
	public Map<String, Object> sendweibo( @RequestBody   String  datas){
		Map<String, Object> map =new HashedMap();
		JSONObject  json=JSON.parseObject(datas);
		String = json.get("data").toString();
		String token= json.get("token").toString();
		if(ALLUtils.findToken(token)){
			user userData=JSONObject.parseObject(str,user.class);
			userData.getUserName();
			userData.getPassord();
			String status="200";
			map.put("status", status);
			return map;
		}
		map.put("status", 500);
		return map;
	}


    @RequestMapping(value = "user", method = RequestMethod.PUT )  
    @ResponseBody //返回JSON
    public void saveUser(@RequestBody List<User> users) {  
      userService.batchSave(users);  
   }  

 

  @ResponseBody

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用。通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 
作用: 
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 
使用时机: 
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

NULL

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐