720实训——springMVC学习(基于注解的控制器)

  springMVC学习-----基于注解的控制器

一、知识笔记

springMVC是一个基于DispatcherServlet的MVC框架,每个请求最先访问的是DispatcherServlet,DispatcherServlet负责将每一个Request转发到相应的Handler,Handler处理后再返回相应的模型(Model)和视图(View)。在使用注解的Spring MVC中,处理器Handler是基于@Controller和@RequestMapping两个注解的,这两个注解可以提供非常灵活的匹配和处理方式。

它的优点:1.一个控制器类可以处理多个动作

     2.基于注解的控制器的请求映射不需要存储在配置文件中

内容关键词:注解类型 控制器

1、Controller 注解类型

package com.example.controller;
import org.springframework.stereotype;
...
@Controller

public class CustomerController {

// request-handling methods here
}
Spring 使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证 Spring 能找
到你的控制器,需要完成两件事情。首先,需要在 Spring MVC 的配置文件中声明 spring-
context,如下所示:
...
xmlns:context="http://www.springframework.org/schema/context"
...
>
然后,需要应用元素,如下所示:

请在元素中指定控制器类的基本包。例如,若所有的控制器类都在
com.example.controller 及其子包下,则需要写一个如下所示的元素:

2、RequestMapping 注解类型

一个采用@RequestMapping 注解的方法将成为一个请求处理方法,并由调度程序在接收

到对应 URL 请求时调用

package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
...
@Controller
public class CustomerController {
@RequestMapping(value = "/input-customer ")
public String inputCustomer() {
// do something here
return "CustomerForm";
}
}
使用 RequestMapping 注解的 value 属性将 URI 映射到方法。在上面的例子中,我们将
input-customer 映射到 inputCustomer 方法。这样,可以使用如下 URL 访问 inputCustomer 方法。
http://domain/context/input-customer
由于 value 属性是 RequestMapping 注释的默认属性,因此,若只有唯一的属性,则可以
省略属性名称。换句话说,如下两个标注含义相同。
@RequestMapping(value = "/input-customer ")
@RequestMapping("/input-customer ")
但如果有多个属性时,就必须写入 value 属性名称。
请求映射的值可以是一个空字符串,此时该方法被映射到以下网址:

http://domain/context

二、重要记录

1、请确保所有控制器类都在基本包下,并且不要指定一个太广泛的基本包(如指定com.example,

而非 com.example.controller,前者就更广泛),因为这会使得Spring MVC 扫描了无关的包。

2、RequestMapping 除了具有 value 属性外,还有其他属性。例如,method 属性用来指示该

方法仅处理哪些 HTTP 方法。

3、如果没有指定 method 属性值,则请求处理方法可以处理任意 HTTP 方法



参考资料:《Spring MVC学习指南》


你可能感兴趣的:(720实训——springMVC学习(基于注解的控制器))