Spring MVC注解开发中常用标签,如下表:
编号 |
注解 |
说明 |
位置 |
备注 |
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 。 |