一、获取基本类型参数
Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配
http://localhost:8080/zhuyuanjie_springmvc1/quick?username=zhangsan&age=12
@RequestMapping("/quick") @ResponseBody public void quickMethod(String username,int age) throws IOException { System.out.println(username); System.out.println(age); }
二、获取POJO类型参数
Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配
http://localhost:8080/zhuyuanjie_springmvc1/quick?username=zhangsan&age=12
public class User { private String username; private int age; getter/setter… } @RequestMapping("/quick") @ResponseBody public void quickMethod(User user) throws IOException { System.out.println(user); }
三、获取数组类型参数
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配
http://localhost:8080/zhuyuanjie_springmvc1/quick?strs=111&strs=222&strs=333
@RequestMapping("/quick") @ResponseBody public void quickMethod(String[] strs) throws IOException { System.out.println(Arrays.asList(strs)); }
四、参数绑定注解 @requestParam
当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定
< form action= " ${ pageContext.request.contextPath } /quick" method= "post" >
< input type= "text" name= "name" >< br >
< input type= "submit" value= " 提交 " >< br >
</ form >
@RequestMapping("/quick") @ResponseBody public void quickMethod(@RequestParam("name") String username) throws IOException { System.out.println(username); }
注解@RequestParam还有如下参数可以使用:
- value:与请求参数名称
- required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错
- defaultValue:当没有指定请求参数时,则使用指定的默认值赋值
@RequestMapping("/quick") @ResponseBody public void quickMethod(@RequestParam(value="name",required = false,defaultValue = "zhuyuanjie") String username) throws IOException { System.out.println(username); }
五、获得Restful风格的参数
Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:
- GET:用于获取资源
- POST:用于新建资源
- PUT:用于更新资源
- DELETE:用于删除资源
例如:
- /user/1 GET : 得到 id = 1 的 user
- /user/1 DELETE: 删除 id = 1 的 user
- /user/1 PUT: 更新 id = 1 的 user
- /user POST: 新增 user
六、使用URL占位符
上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址 /user/1 可以写成 /user/{id},占位符 {id} 对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作
http://localhost:8080/zhuyuanjie_springmvc1/quick19/zhangsan
@RequestMapping("/quick/{name}") @ResponseBody public void quickMethod(@PathVariable(value = "name",required = true) String name){ System.out.println(name); }
七、通过Servlet相关API
SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:
- HttpServletRequest
- HttpServletResponse
- HttpSession
@RequestMapping("/quick") @ResponseBody public void quickMethod(HttpServletRequest request,HttpServletResponse response,HttpSession session){ System.out.println(request); System.out.println(response); System.out.println(session); }