Spring4.3.8MVC中文文档-22.2-Implementing Controllers-实施控制器
来源:互联网 发布:新歌2017网络红歌 编辑:程序博客网 时间:2024/06/07 21:58
22.3 Implementing Controllers
控制器提供对通常通过服务接口定义的应用程序行为的访问。 控制器解释用户输入并将其转换为由视图表示给用户的模型。 Spring以非常抽象的方式实现控制器,使您能够创建各种各样的控制器。
Spring 2.5引入了一种基于注释的编程模型,用于使用诸如@RequestMapping,@RequestParam,@ModelAttribute等注释的MVC控制器。 此注解支持可用于Servlet MVC和Portlet MVC。 以这种风格实现的控制器不必扩展特定的基类或实现特定的接口。 此外,它们通常不直接依赖于Servlet或Portlet API,尽管您可以轻松配置对Servlet或Portlet设施的访问。
@Controllerpublic class HelloWorldController { @RequestMapping("/helloWorld") public String helloWorld(Model model) { model.addAttribute("message", "Hello World!"); return "helloWorld"; }}您可以看到,@Controller和@RequestMapping注释允许灵活的方法名称和签名。 在这个特殊的例子中,该方法接受一个Model并返回一个视图名称作为一个String,但是可以使用各种其他的方法参数和返回值,如本节稍后所述。 @Controller和@RequestMapping和许多其他注释构成了Spring MVC实现的基础。 本节介绍这些注释以及它们在Servlet环境中最常用的注释。
22.3.1 Defining a controller with @Controller
@Controller注释表示特定的类用于控制器的角色。 Spring不需要扩展任何控制器基类或引用Servlet API。 但是,如果需要,您仍然可以参考Servlet特定的功能。
@Controller注释作为注释类的构造型,表示其作用。 调度程序扫描这些注释类的映射方法,并检测@RequestMapping注释(请参阅下一节)。
您可以使用调度程序上下文中的标准Spring bean定义来明确定义带注释的控制器bean。 但是,@Controller构造型还允许自动检测,与Spring通用支持对齐,用于检测类路径中的组件类并自动注册它们的bean定义。
要启用自动检测这些带注释的控制器,您可以向组态添加组件扫描。 使用spring-context模式,如以下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>
22.3.2 Mapping Requests With @RequestMapping
您可以使用@RequestMapping注释将诸如/约会的URL映射到整个类或特定的处理程序方法。 通常,类级注释将特定的请求路径(或路径模式)映射到表单控制器上,其他方法级注释缩小了特定HTTP方法请求方法(“GET”,“POST”等)的主映射, 或HTTP请求参数条件。Petcare示例中的以下示例显示了使用此注释的Spring MVC应用程序中的控制器:
@Controller@RequestMapping("/appointments")public class AppointmentsController { private final AppointmentBook appointmentBook; @Autowired public AppointmentsController(AppointmentBook appointmentBook) { this.appointmentBook = appointmentBook; } @RequestMapping(method = RequestMethod.GET) public Map<String, Appointment> get() { return appointmentBook.getAppointmentsForToday(); } @RequestMapping(path = "/{day}", method = RequestMethod.GET) public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { return appointmentBook.getAppointmentsForDay(day); } @RequestMapping(path = "/new", method = RequestMethod.GET) public AppointmentForm getNewForm() { return new AppointmentForm(); } @RequestMapping(method = RequestMethod.POST) public String add(@Valid AppointmentForm appointment, BindingResult result) { if (result.hasErrors()) { return "appointments/new"; } appointmentBook.addAppointment(appointment); return "redirect:/appointments"; }}
在上面的例子中,@RequestMapping用在很多地方。 第一个用法是类型(类)级别,这表示此控制器中的所有处理程序方法都相对于/约会路径。 get()方法还有一个@RequestMapping细化:它只接受GET请求,这意味着/约会的HTTP GET调用此方法。 add()有一个类似的细化,getNewForm()将HTTP方法和路径的定义组合成一个,以便通过该方法处理约会/新的GET请求。
阅读全文
0 0
- Spring4.3.8MVC中文文档-22.2-Implementing Controllers-实施控制器
- Spring4.3.8MVC中文文档-22.2-The DispatcherServlet-前置控制器
- Implementing Controllers
- Spring4.3.8MVC中文文档-22.1-Introduction to Spring Web MVC framework-简介SpringMVC
- ABP官方文档(三十三)【MVC Controllers】
- Controllers控制器部份
- CakePHP 控制器 Controllers
- play 控制器层(Controllers
- CHAPTER 2 Implementing Controllers and Views
- Autumn中文文档2:控制器
- Sencha Touch 2 官方文档翻译之 Controllers(控制器学习指南)
- Sencha Touch 2 官方文档翻译之 Controllers(控制器学习指南)
- 视图控制器中的资源管理 Resource Management in View Controllers [苹果官方文档的翻译]
- Sencha Touch 2 官方文档翻译之 Controllers(控制器学习指南)
- MVC-Controllers 数据验证
- Play framework 控制器(Controllers)
- 使用视图控制器容器(翻译自苹果官方文档 Implementing a Container View Controller)
- Asp.Net MVC 之 Controllers
- Leetcode-Array-57(insert Interval)
- How to Build an High Availability MQTT Cluster for the Internet of Things
- linux使用记录
- 禁止ViewPager左右滑动,自定义ViewPager
- Socket 【Socket 编程中需要用到的头文件】
- Spring4.3.8MVC中文文档-22.2-Implementing Controllers-实施控制器
- 论文阅读《GeTrust: A guarantee-based trust model in Chord-based P2P networks》
- ScrollView和ListView的冲突问题
- 注册ocx文件的方法
- 关于抽象类的几个注意点
- python 访问 impala 示例
- service
- 小波阈值图像去噪的实现步骤
- 怎么把图片中的字体给p掉,怎么能够显得更真实