常用注解

@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");
	}
}