常用注解
@RestController 注解相当于@ResponseBody + @Controller合在一起的作用 @Controller: 在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映射。 @RequestMapping 指定URL映射路径,如果在控制器上配置 RequestMapping ,具体请求方法也配置路径则映射的路径为 @ResponseBody 将注解方法对应的字符串直接返回 @RequestParam (required默认为true) 自动映射URL对应的参数到Action上面的数值,RequestParam 默认为必填参数。 @PathVariable 从url参数拿值 @RequestHeader (required默认为true) 从http请求头中获取值 @CookieValue (required默认为true) 从cookie中获取值
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
private static final String SUCCESS = "success";
/*
* REST风格的URL 以CRUD为例:
* 新增:/order POST
* 修改:/order/1 PUT
* update?id=1
* 获取:/order/1 GET get?id=1
* 删除:/order/1 DELETE delete?id=1
*
* 如何发送PUT请求和DELETE请求?
* 1.需要配置HiddenHttpMethodFilter
* 2.需要发送POST请求
* 3.需要在发送POST请求时携带一个name="_method"的隐藏域,值为DELETE,或PUT
*
* 在SpringMVC的目标方法中如何获得id? 使用@PathVariable注解
*/
@RequestMapping(value = "/testRest/{id}", method = RequestMethod.GET)
public String testRest(@PathVariable("id") Integer id) {
System.out.println("testRest id:" + id);
return SUCCESS;
}
@RequestMapping(value = "/testRest/{id}-{kid}", method = RequestMethod.GET)
public String testRest1(@PathVariable("id") Integer id,@PathVariable("kid") String kid) {
System.out.println("testRest id:" + id+":kid="+kid);
return SUCCESS;
}
/*
* @RequestParam 来映射请求参数 value 值即请求参数的参数名 required 该参数是否必须,默认为true
* defaultValue 请求参数的默认值
*/
@RequestMapping(value = "/testRequestParam")
public String testRequestParam(@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "age", required = false, defaultValue = "0") Integer age) {
System.out.println("testRequestParam,user:" + username + ";age:" + age);
return SUCCESS;
}
/*
* 映射请求头信息 用法和@requestParam相同
*/
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader("Accept-Language") String al) {
System.out.println("testRequestHeader,Accept-Language:" + al);
return SUCCESS;
}
/*
* 请求Cookie的信息 用法和@RequestParam相同
* 每个cookie在创建的时候都会有一个独一无二的JSESSIONID
*/
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String id) {
System.out.println("testCookieValue,JSESSionId:" + id);
return SUCCESS;
}
/*
* SpringMvc会按参数名和Pojo属性名进行匹配,自动为该对象填充属性值,支持级联属性,如dept.deptid、dept.
* deptaddress.tel等
*/
@RequestMapping("/testPojo")
public String testPojo(User user) {
System.out.println("Test Pojo:" + user);
return SUCCESS;
}
/*
* 可以使用原生的ServletAPI作为目标方法的参数,具体支持以下类型 HttpServletRequest
* HttpServletResponse HttpSession java.security.Principal Locale
* InputStream OutputStream Reader Writer
*/
@RequestMapping("/testServletAPI")
public void testServletAPI(HttpServletRequest request, HttpServletResponse response, Writer out)
throws IOException {
System.out.println("testServletAPI,request:" + request + ",response:" + response);
out.write("Hello SpringMVC");
}
}