1、 @RequestMapping 被处理的条件:
在dispatcher中出现对应的 HandlerMapping(为了实现类型级别的注解)和HandlerAdapter(为了实现方法级别的注解)这在DispatcherServlet和DispatcherPortlet中都是默认的.
2、@RequestMapping 注解的方法可以拥有下面类型的方法(顺序任意,除非对于验证结果需要紧跟在对应的命令对像后面)
1). 请求/响应对像(Servlet api or Portlet api)
2). 会话对像(Servlet API or Portlet API)
3). WebRequest/NativeWebRequest
4). InputStream/Reader 用于访问请求的内容
5). OutputStream/Writer 用于生成响应的内容
6). 以 @RequestParam 注解的参数用于访问特定的 Servlet/Portlet 请求参数。参数值将被转换为声明的方法参数类型
7). Map/Model/ModelMap 用于充实将被暴露到 Web 视图的隐含模型
8). 绑定参数到命令/表单对像:带有自定义类型转换的 bean 属性/域, 依赖于 @InitBinder 方法/HandlerAdapter 配置,参见AnnotationMethodHandlerAdapter 的 "webBindingInitializer" 属性,这样的命令对像包括它们的验证结果,将会暴露为模型属性,默认的会在属性注解中使用非限定的命令类名(如:对于类型 "mypackage.OrderAddress" 使用 "orderAddress" )。为声明一个体特定的模型属性名称指定一个参数级别的 ModelAttribute 注解
9). BindingResult 验证结果用于前面的一个命令/表单对像(前面紧接的参数)
10). SessionStatus 状态处理用于把表单处理过程标记为已完成(触发会话属性的清理,这些会话属性是在句柄类型级别由 @SessionAttribute 注解指示出的)
3 、@RequestParam 注解的参数默认是必须的,设置 @RequestParam(value="id",required="false")则这个参数为可选的