1. 控制器简介
控制器提供对通过服务接口定义的应用程序行为的访问。 控制器解释用户输入并将其转换为由视图表示给用户的模型。 Spring以非常抽象的方式实现了一个控制器,可以创建各种各样的控制器。
Spring 2.5为MVC控制器引入了一个基于注解的编程模型,该模型使用注解,如@RequestMapping、@RequestParam、@ ModelAttribute等。 这个注解支持可用于Servlet MVC和Portlet MVC。 以此样式实现的控制器不必扩展特定的基类或实现特定的接口。 此外,它们不直接依赖于Servlet或Portlet API,可以轻松配置对Servlet或Portlet工具的访问。
@Controller
public class HelloWorldController {
@RequestMapping("/helloWorld")
public String helloWorld(Model model) {
model.addAttribute("message", "Hello World!");
return "helloWorld";
}
}
@Controller和@RequestMapping注解允许灵活的方法名称和签名。 在此示例中,该方法接受Model并将视图名称作为String返回,但可以使用各种其他方法参数和返回值。@Controller和@RequestMapping以及许多其他注解构成了Spring MVC实现的基础。
2. 通过@Controller定义一个控制器
@Controller注解指示特定类充当控制器的角色。 Spring不要求扩展任何控制器基类或引用Servlet API。 但是,如果需要,仍可以引用特定于Servlet的功能。
调度程序扫描带这些注解的类以查找映射方法,并检测@RequestMapping注解。
可以使用调度程序上下文中的标准Spring bean定义显式定义带注解的控制器bean;也允许通过扫描组件的方式注入,检测类路径中的组件类,并为它们自动注册bean定义。
要启用此类带注解控制器的自动检测,将组件扫描添加到配置中。如以下XML片段所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.springframework.samples.petclinic.web"/>
<!-- ... -->
</beans>