1.通过@RequestParam 坏处:参数变成url地址的一部分,如果没有值,则报错
如果是必不可少的参数,建议前面加@ RequestParam
解决办法是,设置required为false
@RequestParam(value="age",required=false,defaultValue="0")
参数:
value:表示传递的属性名
required:表示是否为必须的
defaultValue:表示设置默认值---当传递的参数无法自动转型时
@Controller public class welcome {@RequestMapping({"welcome"})//@RequestParam("name") String name 意思是:拦截器拦截名为name的属性然后把值赋给String namepublic String welcomeTesr(@RequestParam("name") String name){System.out.println("wenlcome"+name); return "/welcome";}}
2.通过直接配置参数 坏处:没传参数时候,值为null
@Controller public class welcome {@RequestMapping({"welcome"})public String welcomeTesr(String name){System.out.println("wenlcome"+name);return "/welcome";}}
3.如果是动态参数,使用@pathvariable 接收
@RequestMapping(value="/{username}",method=RequestMethod.GET) public String show (@PathVariable(value="username") String username,Model model){System.out.println(username);/*model.addAttribute(users.get(username));*/return "/users/show"; }
4.使用ReqeustHewder绑定请求头的属性值
请求头包含了若干个属性,服务器可据此获取客户端的信息,通过@RequestHeader即可将求头中的属性值绑定到处理方法的参数中
@RequestMapping(value="/handler")public String handler(@RequestHeader("Accept-Encoding") String encoding){System.out.println(endoding);}
5.使用CookieValue绑定请求中的cookie值
@CookieValue可以让方法绑定某个cookie值
@RequestMapping("/testCookieValue")public String testCookieValue(@cookieValue("JSESSIONID") String sessionId){System.out.println("testCookieValue:sessionId:"+sessionId);}
6.使用PoJo对象绑定请求参数值
SpringMVC 会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性.
如:user.getName(),user.getId()
@Controller@RequestMapping(value = "/sh")public class SpringHandler {@RequestMapping(value="testPOJO",method=RequestMethod.POST)public String testPOJO(User user){System.out.println(user);return null;}}
public class User {private String username;private String password;}
7.使用ServletAPI :
HttpServletReqeust、HttpservletResponse、HttpSession、
ava.security.principal、
Locale、
inputstream、
OutputStream、
Reader、
writer,调用的是response的返回getWriter()的方法
@RequestMapping(value="testServletApi")public String testServletApi(HttpServletRequest reqeust,HttpServletResponse response){System.out.println(reqeust+":"+response);return HELLO;}