使用@controller注解可以将一个类定义为controller, 然后使用@RequestMapping来标记某个方法,使之可以处理特定的请求, 我发现, 方法的返回值可以是string或者ModelAndView也可以是自定义对象, 方法的参数也不固定可以有request和response, 也可以无参, 也可以自定义参数。 因此,方法定义的规则让我有点困惑, 刚刚接触spring mvc, 请大家给指点一下, 
@controller注解在运行时起到了怎样的作用? controller类中定义方法的规则是什么?谢谢!

解决方案 »

  1.   

    controller 注解标志你这个类是一个action类,如果不写的话,spring在不会实例化这个类,所以你页面的请求就会找不到处理器。
    关于里面的方法其实规则很简单 RequestMapping 是用来标志这个方法所处理路径,其中的参数不限制个数正式springMVC 的一个特性,这样很简单的需要什么参数就拿什么参数,只要他有就会给你,而且很灵活,可以为基本类型,可以为对象。不需要定义一串根本不需要的参数。
      

  2.   

    spring注解式的控制器非常灵活,spring会用反射扫描你方法的参数和返回类型,根据不同的类型自动做处理。实际上你分析控制器层面的方法,会发现来来去去就那些参数,常用的无非是request response,再就是表单对应的POJO类,如果你使用了验证功能,可能还会有BindingResult类,这些参数类型被spring检测到了,就有对应的处理规则,比如request和response会自动把J2EE服务器生成的对象丢过来,比如表单对应的POJO类会在request的参数里自动找有没key和POJO类属性一样的,有就自动封装生成POJO对象。如果你的POJO类设置了校验,它还会检查参数里面有没有BindingResult类的参数,有的话会把校验信息丢给这个参数的对象,没有的话会抛出异常。
    还有很多规则,包括返回类型的,你可以查下文档。
      

  3.   

    正是spring的Controller类的方法参数多种多样,返回类型多种多样,才爱上了spring mvc,比struts灵活。