1请求路径映射
1.1普通的url映射
多个URL路径可以映射到 同一个处理器的功能处理方法
@RequestMapping(value={"/doSayHello", "/user/doSayWelcome"}):
1.2Rest风格url映射
REST即表述性状态传递(英文:Representational State Transfer,简称REST),是一种软件架构编码风格,是基于网络应用进行设计和开发的编码方式。可以降低开发的复杂度,提高程序的可伸缩性。
例如:
@RequestMapping("/msg/{xxx}")
请求的URL可以是“/msg/hello”或“/msg/welcome”
@RequestMapping("/msg/{id}/create"):
请求的URL可以是“/users/1/create”。
@RequestMapping("/msg/{mId}/topics/{tId}")
这样也是可以的,请求的URL可以是“/users/10/topics/12”。
说明:通过@PathVariable可以提取URI模板模式中的{×××}中的×××变量。
2.请求方式映射
2.1请求方式限定
借助@RequestMapping注解中的method属性指定具体的请求处理方式
@RequestMapping(value=”doSaveObj”,
method=RequestMethod.POST)
public String doSaveObject(Object obj){….}
知识点扩展:
@GetMapping注解应用(定义的映射只能处理get请求)
@PostMapping注解应用(定义的映射只能处理post请求)
2.2请求方式组合
项目中还可在控制层方法上借助@RequestMapping注解中的method属性指定使用哪几种方式处理请求。
3.请求参数映射(重点)
3.1标准Servlet API(了解)
请求映射方法中可以直接使用ServletAPI 中的对象获取参数数据,例如HttpServletRequest,HttpSession对象等,例如:
@RequestMapping(value="withRequest",method=RequestMethod.GET)
@ResponseBody
public String withRequest(HttpServletRequest request){
System.out.println(request.getRequestURI());
return "Obtainer 'foo' query parameter value
' "+request.getParameter("gid")+"'";
}
3.2直接量对象(重点)
SpringMVC 请求一个控制层资源时,可以在对应方法中直接使用参数变量接收参数数据,但参数变量的类型建议为对象类型
使用String类型变量接受请求参数的值:
@RequestMapping(value="withStringParam",method=RequestMethod.GET)
@ResponseBody
public String withStringParam(@RequestParam String foo) {
return "Obtained 'foo' query parameter value '" + foo + "'";
}
提示:@RequestParam注解用于接收请求参数中名字为foo的参数值,假如请求参数名与方法中的参数名一致,@RequestParam注解可以省略。假如不一致则可以使用@RequestParam注解定义新的参数名直接接收页面数据,然后传递给方法名,还有就是请求参数中包含特殊字符时,需要借助@RequestParam注解对参数进行声明。例如
@RequestMapping(value="withStringParam", method=RequestMethod.GET)
@ResponseBody
public String withStringParam(
@RequestParam(value="param-01",required=false) String foo) {
return "Obtained 'foo' query parameter value '" + foo + "'";
}
提示:required=false表示,参数可以不存在,假如为true(默认),参数不存在时会抛出异常(400异常)。
3.3Java bean对象(重点)
当请求中多个参数时可以通过在方法中定义多个参数接收参数数据,也可以利用一个javabean对象接收多个参数数据以简化多个参数变量的定义。
3.4集合Map对象(了解)
说明:通过map接收页面参数时,需要使用@RequestParam注解声明
3.5Rest url数据(重点)
SpringMVC请求资源路径的URL可以通过{XXX}形式指定动态的URL,动态URL中的这个可变参数的值可以直接注入到方法对应的参数中。
@RequestMapping(value="path/{var}",method=RequestMethod.GET)
@ResponseBody
public String withPathVariable(@PathVariable String var) {
return "Obtained 'var' path variable value '" + var + "'";
}
通过@PathVariable注解指定参数变量var获取请求url中{var}数据