您的位置:首页 > 编程语言 > Java开发

springmvc 基础知识部分总结

2017-12-30 20:48 337 查看
可以用value指定路径,用method指定提交方式,如以下代码中指定提交方式为get,若再用post提交,则会发生错误

@RequestMapping(value="/testMethod", method = RequestMethod.GET)
public String testMethod() {
     System.out.println("testMethod");
     return SUCCESS;
}

可以用 params 和 headers 来进行更加精确的映射请求, params 和 headers 支持简单表达式

@RequestMapping(value="/testParamsAndHeader", params={"username", "age!=11"},
headers={"Accept-Language=en-US,zh;q=0.8"})

支持Ant风格的通配符。如springmvc/*/abc  -->springmvc/ddd/abc

可以用@PathVariable 来将URL中的参数映射到请求方法中

@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id) {
     System.out.println("testPathVariable" + id);
     return SUCCESS;
}

REST:可以用一个隐藏域声明一个值为 _method 的 name ,并用value指定其请求方式(POST, GET, PUT, DELETE)。需要在web.xml中进行配置

<!--
配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求

-->
<filter>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
     <filter-name>HiddenHttpMethodFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

<form action="springmvc/testRest/1" method="post">
     <input type="hidden" name="_method" value="DELETE">
     <input type="submit" value="TestRestDelete">
</form>

@RequestMapping(value="testRest/{id}", method=RequestMethod.DELETE)
public String testRestDelete(@PathVariable("id") Integer id) {
System.out.println("testRestDelete" + id);
return SUCCESS;
}

可以用@RequestParam(value="id",required=false, defaultValue="0") String id来获取 URL中的参数。其中,

required=false表示的是该参数可以不存在;
defaultValue="0"为该参数指定一个默认值

@RequestMapping("testRequestParam")
public String testRequestParam(@RequestParam(value="id") String id,
      @RequestParam(value="age",required=false, defaultValue="0") int age) {
     System.out.println("testRequestParam" + id + " " + age);
     return SUCCESS;
}

可以用@RequestHeader 来得到请求头内容,不常用。

@RequestMapping("testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept-Language") String al) {
     System.out.println(al);
     return SUCCESS;
}

可以用@CookieValue(value="cookieName") 得到cookie 值 。不常用。

@RequestMapping("testRequestCookie")
public String testRequestCookie(@CookieValue(value="JSESSIONID") String jId) {
     System.out.println(jId);
     return SUCCESS;
}

可以使用 pojo 作为参数,支持级联属性

可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型

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(request + ", " + response);
     out.write("hello");
     //return SUCCESS;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: