Java Web之SpringMVC 进行参数绑定

学习方法

当需要学习一个新的MVC框架需要从以下方面入手:

1、环境搭建(能输出Hello Word) 2、如何传递参数到Controller,Controller如何获取参数 3、如何从Controller传递Model到View 4、如何完成文件的上传 5、如何完成验证 6、异常的处理 7、深入学习一些原理和源代码的学习

分享一下如何传递参数到Controller,Controller如何获取参数

SpringMVC如何进行参数绑定

一、什么是控制器

在一个POJO类定义处标注@Controller,再通过<context:component-scan />扫描响应的包,就可以使POJO类成为一个能处理HTTP请求的控制器

二、请求映射到控制器

用@RequestMapping,可以定义在类和方法上,将一个请求映射到控制器中的方法上。

三、几种典型的处理请求的方法(Controller如何获取请求参数)

1、请求的参数按名称匹配的方式绑定到入参中,返回字符串代表逻辑视图名

@RequestMapping(value="/handle1")
public String handle1(@RequestParam("userName") String userName,
        @RequestParam("password") String password,
        @RequestParam("realName") String realName)
{
  ...
return success;
}

@RequestParam 用来请求request中的参数,相当于request.getParameter() 其中有三个属性:

  • value用来指定要取得参数的key;
  • required 所取的参数是否必须存在,如果true表示必须存在,若不存在则抛出异常;
  • default 指定该value的默认值。

这一种方式说明参数是URL的一部分,此时也可以去掉@RequestParam,直接写参数就可以了 public String handle1(String userName, String password, String realName)

2、将cookie的值及报文头部属性绑定到入参,方法返回ModelAndView

@RequestMapping(value="/handle2")
public ModelAndView handle2(@CookieValue("JSESSIONID") String sessionId,
       @RequestHeader("Accept-Language") String accpetLanguage)
{
       ModelAndView mav = new ModelAndView();
       mav.setViewName("success");
       mav.addObject("user", new User());
       return mav;
}

3、请求的参数按名称匹配的方式绑定到 user 属性中,返回字符串代表逻辑视图名

@RequestMapping(value="/handle3")
public String handle3(User user)
{
  ...
return success;
}

按“HTTP请求参数名= 命令/表单对象的属性名”的规则,自动绑定请求数据,自动进行基本类型数据转换

4、直接使用Servlet API 对象作为处理方法的入参,返回字符串代表逻辑视图名

@RequestMapping(value="/handle4")
public String handle4(HttpServletRequest request)
{
  ...
return success;
}

5、以REST技术向springMVC传递参数使用占位符

public ModelAndView show(@PathVariable("userid") String userid)
{
       ModelAndView mav = new ModelAndView();
       mav.setViewName("success");
       mav.addObject("user", new User());
       return mav;
}

用@PathVariable来把占位符参数绑定到控制器处理方法的入参中 注意:占位符中的{xxx}要和@PathVariable("xxx")的名字一样

6、还可以使用一些其他的参数,如IO流等

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

使用Spring Data JPA访问关系型数据库添加数据库和jpa依赖定义实体对象创建对象访问方法总结

我们将定义一个实体对象UserApply并将其存储到关系型数据库中,并使用JPA注解:

1022
来自专栏Java 技术分享

SpringMVC(一)

1232
来自专栏微信公众号:Java团长

Spring Boot属性配置和使用

Spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置。

1291
来自专栏xdecode

Spring MVC注解式开发

MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @C...

2978
来自专栏java工会

Java 必看的 Spring 知识汇总!有比这更全的算我输!

2212
来自专栏Linyb极客之路

如何控制Spring Boot应用入口?

1212
来自专栏Spring相关

第2章—装配Bean—通过XML装配Bean

​ 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的.

1051
来自专栏Java技术栈

Java 必看的 Spring 知识汇总!

2343
来自专栏爱撒谎的男孩

Springmvc之向JSP页面提供数据(request,session)

3574
来自专栏程序猿DD

Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和...

3964

扫码关注云+社区

领取腾讯云代金券