控制器方法可以有任意数量的不同类型大的参数。Spring 中参数的数目和类型都非常灵活。最简单的方法可以不含参数,而复杂的方法可以有几十个参数甚至更多。Spring可以理解这些参数的目的,并在调用这些参数时提供正确的值。另外,可以通过一些配置扩展Spring理解的参数类型。
1、标准Servlet类型
在需要的时候,Spring可以为方法提供Servlet API相关的众多参数类型作为参数。传入到这些参数的值永远不会是null,Spring将保证这一点。方法中可以指定一个、任意数目或者所有下面这些参数类型:
HttpServletRequest 用于操作请求属性
HttpServletResponse 用于操作响应
HttpSession 用于操作HTTP会话对象
InputStream 或者Reader 用于读取请求正文,但不能同时使用两者。在完成对它的处理后部应该关闭该对象
OutputStream 或者Writer 用于编写响应正文,但不能同时使用两者。在完成对它的处理后部应该关闭该对象
2、注解请求属性
可以使用几个参数注解表示方法参数的值应该从请求的某些属性中获取。在大多数情况下,标志这些注解之一的参数可以是任意的原始类型或者原始封装类型。
@RequestParam注解表示被注解的方法参数应该派生自命名参数。默认情况下,该注解表示请求参数是必需的,如果没有它,请求映射就无法完成。可以将required特性设置为false,禁止该行为(使请求参数变为可选的),此时如果请求中未包含请求参数,那么方法参数值将为null
例如:
@RequestMapping("user")
public String user(@RequestParam("id") long userId,
@RequestParam(value="name",required=false) String name,
@RequestParam(value="key",defaultValue="") String key)
{... }
该方法将接受一个必须的id请求参数、一个可选的name请求参数(默认为null)和一个可选的key请求参数ÿ