spring mvc注解说明
2016-06-08 08:51
344 查看
编号 | 注解 | 说明 | 位置 | 备注 |
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。 |
相关文章推荐
- Java Map 排序定义
- Eclipse 中双击变量不高亮 切换变量不高亮 解决
- RxJava隔多少时间跳转页面
- MyEclipse_ServerView报错解决方法
- Myeclipse如何修改字体大小
- Java中两个String数组进行比较
- [置顶] Java并发编程与技术内幕:线程池深入理解
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
- 8张图理解Java
- 学习 Java 8 - 函数式接口 Lambda
- Java 8 Lambda
- JAVA使用继承还是组合
- Java设计模式(二) 工厂方法模式
- Java设计模式(三) 抽象工厂模式
- Java设计模式(五) 多态的极致应用——组合模式
- xml的SAX解析
- 使用Springmvc, Mybatis 重构 JPetStore
- java进行DOM解析
- Activiti入门教程之eclipse插件(一)
- "冒泡排序"算法-图文代码教你轻松简单理解-java编程