Spring MVC控制器

标签:ble   point   相同   erro   nal   binding   test   tap   声明   

Spring MVC中控制器用于解析用户请求并且转换为模型,提供访问应用程序的行为,通常用注解方式实现.

org.springframework.stereotype.Controller注解类型用于声明Spring类的实例为一个控制器, Spring可以扫描找到应用程序中所有基于注解的控制器类,所以需要在配置文件中声明扫描路径:

<!-- 自动扫描包,实现支持注解的IOC -->
    <context:component-scan base-package="cn.luan.controller" />

一个简单的控制器:

@Controller
public class BarController {
    //映射访问路径
    @RequestMapping("/index")
    public String index(Model model){
        //Spring MVC会自动实例化一个Model对象用于向视图中传值
        model.addAttribute("message", "这是通过注解定义的一个控制器中的Action");
        //返回视图位置
        return "foo/index";
    }
}

 

@RequestMapping注解用于映射url到控制器类或一个方法。可用于类和方法上。该注解共有8个属性:

public @interface RequestMapping {
    java.lang.String name() default "";

    @org.springframework.core.annotation.AliasFor("path")
    java.lang.String[] value() default {};

    @org.springframework.core.annotation.AliasFor("value")
    java.lang.String[] path() default {};

    org.springframework.web.bind.annotation.RequestMethod[] method() default {};

    java.lang.String[] params() default {};

    java.lang.String[] headers() default {};

    java.lang.String[] consumes() default {};

    java.lang.String[] produces() default {};
}

value和path属性功能相同, 用来指定映射路径或URL模板,数组,允许@RequestMapping(value=http://www.mamicode.com/{"/rm1","/rm2"})

name属性指定映射器名称,一般情况下不指定

method属性指定请求方式,可以为GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE,用来过滤请求范围,不符合的请求将返回405:Method Not Allowed

params属性指定映射参数规则

consumes属性指定请求的内容类型,如application/json, text/html

produces属性指定返回的内容类型,如application/json; charset=UTF-8

headers属性指定映射请求头部,如Host,Content-Type等

 

一个例子:

@Controller
@RequestMapping("/appointments")
public class AppointmentsController {
    private final AppointmentBook appointmentBook;

    @Autowired
    public AppointmentsController(AppointmentBook appointmentBook) {
        

Spring MVC控制器

扫一扫手机访问