spring mvc 方面注解

让一个 Controller 处理多个 URL 请求

@RequestMapping("/可以每个方法上边有特定的")
@RequestMapping(params = "method=a") 
@RequestMapping(params = "method=createTopic",method = RequestMethod.POST)
@RequestMapping(params = "method=sss")
如果连接参数的参数名称和方法参数的名称一样则自动转换类型

session 范围内命名 @SessionAttributes("currUser")
@RequestParam("id") int topicId 参数转换。方法参数。
 @RequestMapping(params = "method=listBoardTopic")
    public String listBoardTopic(@RequestParam("id") int topicId,User user) {
        bbtForumService.getBoardTopics(topicId);
        System.out.println("topicId:"+topicId);
        System.out.println("user:"+user);
        System.out.println("call listBoardTopic method.");
        return "listTopic";
    }

请求处理方法的签名规约

方法入参

我们知道标注了 @RequestMapping 注解的 Controller 方法就成为了请求处理方法,Spring MVC 允许极其灵活的请求处理方法签名方式。对于方法入参来说,它允许多种类型的入参,通过下表进行说明:

请求处理方法入参的可选类型说明
Java 基本数据类型和 String默认情况下将按名称匹配的方式绑定到 URL 参数上,可以通过 @RequestParam 注解改变默认的绑定规则
request/response/session既可以是 Servlet API 的也可以是 Portlet API 对应的对象,Spring 会将它们绑定到 Servlet 和 Portlet 容器的相应对象上
org.springframework.web.context.request.WebRequest内部包含了 request 对象
java.util.Locale绑定到 request 对应的 Locale 对象上
java.io.InputStream/java.io.Reader可以借此访问 request 的内容
java.io.OutputStream / java.io.Writer可以借此操作 response 的内容
任何标注了 @RequestParam 注解的入参被标注 @RequestParam 注解的入参将绑定到特定的 request 参数上。
java.util.Map / org.springframework.ui.ModelMap它绑定 Spring MVC 框架中每个请求所创建的潜在的模型对象,它们可以被 Web 视图对象访问(如 JSP)
命令/表单对象(注:一般称绑定使用 HTTP GET 发送的 URL 参数的对象为命令对象,而称绑定使用 HTTP POST 发送的 URL 参数的对象为表单对象)它们的属性将以名称匹配的规则绑定到 URL 参数上,同时完成类型的转换。而类型转换的规则可以通过 @InitBinder 注解或通过 HandlerAdapter 的配置进行调整
org.springframework.validation.Errors / org.springframework.validation.BindingResult为属性列表中的命令/表单对象的校验结果,注意检验结果参数必须紧跟在命令/表单对象的后面
rg.springframework.web.bind.support.SessionStatus可以通过该类型 status 对象显式结束表单的处理,这相当于触发 session 清除其中的通过 @SessionAttributes 定义的属性

Spring MVC 框架的易用之处在于,你可以按任意顺序定义请求处理方法的入参(除了 Errors 和 BindingResult 必须紧跟在命令对象/表单参数后面以外),Spring MVC 会根据反射机制自动将对应的对象通过入参传递给请求处理方法。这种机制让开发者完全可以不依赖 Servlet API 开发控制层的程序,当请求处理方法需要特定的对象时,仅仅需要在参数列表中声明入参即可,不需要考虑如何获取这些对象,Spring MVC 框架就象一个大管家一样“不辞辛苦”地为我们准备好了所需的一切。下面演示一下使用 SessionStatus 的例子:



方法返回参数

在低版本的 Spring MVC 中,请求处理方法的返回值类型都必须是 ModelAndView。而在 Spring 2.5 中,你拥有多种灵活的选择。通过下表进行说明:

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

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

@RequestMapping("/welcome.do")
public void welcomeHandler() {
}

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

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”

org.springframework.ui.ModelMap

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

@RequestMapping("/vets.do")
public ModelMap vetsHandler() {
	return new ModelMap(this.clinic.getVets());
}

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

ModelAndView当然还可以是传统的 ModelAndView。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值