编号

注解

说明

位置

备注

1

@Controller

将类变成Spring Bean

现阶段 @Controller 、 @Service 以及 @Repository 和 @Component 注解的作用是等价的

2

@RequestMapping

请求映射

类、方法

标注在类上意指类实现 Controller 接口

标注在方法上意指扩展 Spring 预定义 Controller ( 如:SimpleFormController)

3

@RequestParam

入参绑定 URL

入参

指定 URL 参数与方法入参的绑定规则

4

@SessionAttributes

设定 Session范围属性

如: @SessionAttributes("user") ,将把 ModelMap 中的 user 属性添加到 Session 范围

5

@InitBinder

注册Controller 级的自定义属性编辑器

方法

@InitBinder 注解的方法必须拥有一个 WebDataBinder 类型的入参,以便 Spring MVC 框架将注册属性编辑器的 WebDataBinder 对象传递进来

6

@ModelAttribute

准备引用数据/ 将 ModelMap属性绑定到入参

方法、入参

标注在方法上:准备引用数据

标注在入参上:将 ModelMap 中的属性绑定到请求处理方法的入参中

再来看一下Controller中方法的入参类型:

编号

请求处理方法入参的可选类型

说明

1

Java 基本数据类型和 String

默认情况下将按名称匹配的方式绑定到 URL 参数上,可以通过 @RequestParam注解改变默认的绑定规则

2

request/response/session

既可以是 Servlet API 的也可以是 Portlet API 对应的对象, Spring 会将它们绑定到 Servlet 和 Portlet 容器的相应对象上

3

org.springframework.web.context.request.WebRequest

内部包含了 request 对象

4

java.io.InputStream/java.io.Reader

可以借此访问 request 的内容

5

java.io.OutputStream / java.io.Writer

可以借此操作 response 的内容

6

任何标注了 @RequestParam 注解的入参

被标注 @RequestParam注解的入参将绑定到特定的request 参数上。

7

java.util.Map / org.springframework.ui.ModelMap

它绑定 Spring MVC 框架中每个请求所创建的潜在的模型对象,它们可以被 Web视图对象访问(如 JSP )

8

命令 / 表单对象(注:一般称绑定使用 HTTP GET 发送的URL 参数的对象为命令对象,而称绑定使用 HTTP POST发送的 URL 参数的对象为表单对象)

它们的属性将以名称匹配的规则绑定到 URL 参数上,同时完成类型的转换。而类型转换的规则可以通过@InitBinder 注解或通过HandlerAdapter 的配置进行调整

9

org.springframework.validation.Errors / org.springframework.validation.BindingResult

为属性列表中的命令 / 表单对象的校验结果,注意检验结果参数必须紧跟在命令 /表单对象的后面

10

rg.springframework.web.bind.support.SessionStatus

可以通过该类型 status 对象显式结束表单的处理,这相当于触发 session 清除其中的通过@SessionAttributes 定义的属性

再来看一下Controller中方法的返回类型:

编号

请求处理方法入参的可选类型

说明

1

void

此时逻辑视图名由请求处理方法对应的URL 确定,如以下的方法:

@RequestMapping("/welcome.do")

public void welcomeHandler() {

}

对应的逻辑视图名为“ welcome ”

2

String

此时逻辑视图名为返回的字符,如以下的方法:

@RequestMapping(method = RequestMethod.GET)

public String setupForm(@RequestParam("ownerId") int ownerId, ModelMap model) {

Owner owner = this.clinic.loadOwner(ownerId);

model.addAttribute(owner);

return "ownerForm";

}

对应的逻辑视图名为“ ownerForm ”

3

org.springframework.ui.ModelMap

和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL ,如下面的例子:

@RequestMapping("/vets.do")

public ModelMap vetsHandler() {

return new ModelMap(this.clinic.getVets());

}

对应的逻辑视图名为“ vets ”,返回的ModelMap 将被作为请求对应的模型对象,可以在 JSP 视图页面中访问到。

4

org.springframework.web.servlet.ModelAndView

当然还可以是传统的 ModelAndView 。

Spring mvc注解说明的更多相关文章

  1. Spring MVC注解的一些案列

    1.  spring MVC-annotation(注解)的配置文件ApplicationContext.xml <?xml version="1.0" encoding=& ...

  2. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  3. spring mvc 注解入门示例

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...

  4. spring mvc 注解示例

    springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

  5. 关于Spring mvc注解中的定时任务的配置

    关于spring mvc注解定时任务配置 简单的记载:避免自己忘记,不是很确定我理解的是否正确.有错误地方望请大家指出. 1,定时方法执行配置: (1)在applicationContext.xml中 ...

  6. spring mvc 注解@Controller @RequestMapping @Resource的详细例子

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  7. spring mvc 注解 学习笔记(一)

    以前接触过spring,但是没有接触spring mvc 以及注解的应用,特习之,记之: 注解了解 @Component 是通用标注, @Controller 标注web控制器, @Service 标 ...

  8. Spring MVC 注解[转]

    [学习笔记]基于注解的spring3.0.x MVC学习笔记(九) 摘要: 本章节,仅为@SessionAttributes的功能扩展介绍介绍,结合@requestparam注解进行简易无数据库分页. ...

  9. junit4测试 Spring MVC注解方式

    本人使用的为junit4进行测试 spring-servlet.xml中使用的为注解扫描的方式 <?xml version="1.0" encoding="UTF- ...

  10. [转]spring mvc注解方式实现向导式跳转页面

    由于项目需要用到向导式的跳转页面效果,本项目又是用spring mvc实现的,刚开始想到用spring 的webflow,不过webflow太过笨重,对于我们不是很复杂的跳转来说好像有种“杀鸡焉用牛刀 ...

随机推荐

  1. eval解惑

    let a = 1, b = 2, c = 3; let arr = [a, b, c]; function test(p1, p2, p3) { console.log(`${p1} ~ ${p2} ...

  2. 新手 vim常用命令总结 (转)

    转自 https://www.cnblogs.com/yangjig/p/6014198.html 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的 ...

  3. Laravel 中 Controller访问Model函数/常量

    <?php // User.php class User extends Model { ; //进行中 const USER_TYPE_TEST = 'test'; //测试用户 // 需要在 ...

  4. 引用vector里的元素被删除后,引用会怎么样?

    引用的定义不多说,直接看做变量的别名就可以了.有一天写着写着代码,突然想到,如果对vector里某个元素设置引用后,将这个元素从vector里删除会怎么样?我思考了下,认为那个元素会被删除,但是引用还 ...

  5. Big Data(六)用户权限实操&HDFS-API实操

    创建用户实操 1.创建用户god useradd god passwd god 2.设置ssh免密 ssh-copy-id -i id_dsa node02 3.修改hdfs-site.xml中的ss ...

  6. linux 下shell中if的“-e,-d,-f”的用法

    文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L ...

  7. 深入理解JAVA虚拟机 垃圾收集器和内存分配策略

    引用计数算法 很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器都为0的对象就是不可能再被使用的 ...

  8. Perf Event :Linux下的系统性能调优工具

    Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能 ...

  9. bootstrap导航菜单做active判断

    先创建2个文件,index 和about,导入bootstrap的css <div class="container"> <ul class="nav ...

  10. scala spark(2.10)读取kafka(2.11_1.0.0)示例

    1.pom加载jar包 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spa ...