Spring MVC —— 基于注解的控制器

一、注解类型。

1.使用基于注解的控制器的优点。

  • 一个控制器类可以处理多个动作(而一个实现了的Controller接口控制器只能处理一个动作)。
  • 基于注解的控制器请求映射不需要存储在配置文件中(使用RequestMapping注释类型)。

2.Controller注解类型。

        下面是一个带有注解@Controller的例子。

package com.example.controller;
...
@Controller
public class CustomerController{
}

        Spring使用扫描机制找到程序中所有基于注解的控制器,为了保证Spring能找到,需要做完成两项工作。首先,需要在Spring MVC的配置文件中声明spring-context,如下:

<beans
    ...
    xmlns:context="http://www.springframework.org/org/schema/context"
    ...
>

           然后需要应用<component-scan/>元素,如下:

<context:component-scan base-package="com.example.controller">

        需要注意,不要只盯一个太广泛的基本包,以免Spring扫描了无关的包。

3.RequestMapping注解类型

        下面是一个带有@RequestMapping注释方法的控制器类:

package com.example.controller;
...
@Controller
public class CustomerController{
    @RequestMapping(value="/customer_input")
    public String inputCustomer(){
    }
}
  •  只有一个属性时可简化为@RequestMapping("/customer_input")
  • 如果使用POST方法时,写为@RequestMapping(value="/customer_input", method=RequestMethod.POST)
  • 当method为多个值时,后面写为数组{method1, method2}

二、编写请求处理方法。

        每个请求处理方法可以有多个不同类型的参数,下面时可以在请求处理方法中出现的参数类型:

  • javax.servlet.ServletRequest 或 javax.servlet.HttpServletRequest
  • javax.servlet.ServletResponse 或 javax.servlet.httpHttpServletResponse
  • javax.servlet.http.HttpSession
  • org.springframework.web.context.request.WebRequest 或 org.springframework.web.context.request.nativeWebRequest
  • java.util.Locale
  • java.io.InputStream 或 java.io.Reader
  • java.io.OutputStream 或 java.io.Writer
  • java.security.Principal
  • HttpEntity<?>
  • java.util.Map 或 org.springframework.ui.Model
  • org.springframework.ui.ModelMap
  • org.springframework.web.servlet.mvc.support.RedirectAttributes
  • org.springframework.validation.Errors
  • org.springframework.validation.BindingResult
  • 命令或表单对象
  • org.springframework.web.util.UriCompontsBuilder
  • org.springframework.web.util.UriComponentsBuilder
  • 带@PathVariable, @MatrixVariable注释的对象
  • @RequestParam, @RequestHeader, @RequestBody 或 @RequestPart

        特别需要注意org.springframework.ui.Model类型不是一个Servlet API类型,而是一个包涵Map的Spring MVC类型。每次调用请求处理方法时,Spring MVC都创建Model对象将其Map注入岛各种对象。

        请求处理方法可以反悔如下类型的对象:

  • ModelAndView
  • Model
  • Map包含模型的属性
  • View
  • 代表逻辑视图名的String
  • void
  • 提供对Servlet的访问。以相应HTTP头部和内容HttpEntity或ResponseEntity对象
  • Callable
  • DeferredResult
  • 其他任意类型,Spring将其视作输出给View的对象模型

转载于:https://my.oschina.net/PresidentLi/blog/737470

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值