@Path与 @RequestMapping(最重要)
@RequestMapping:映射请求地址。利用RequestMapping的value、method、params、header实现;同时利用@RequestParam对请求参数添加限制条件。它可用于类或方法上,作用是处理请求地址的相关映射。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。该注解有六个属性,分别为value,method,consumes,prod...
@RequestMapping:映射请求地址。
利用RequestMapping的value、method、params、header实现;同时利用@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用于将请求参数,区数据映射到功能处理方法的参数。
- 可以对传入参数指定参数名,如果没有默认为null
- 可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
- 可以限制参数的类型,如果返回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
是 JAX-RS 本来就提供的,和Spring的RequestParam作用一致
@PathVariable
这个注解能够识别URL里面的一个模板,我们看下面的一个URL.
REST风格;从请求地址URL模板中提取变量值。
http://localhost:8080/springmvc/hello/101?param1=10¶m2=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
更多推荐










所有评论(0)