1.请求处理方法中可以出现以下几种参数类型,直接在controller方法形参上定义默认类型的对象,就可以使用这些对象。可以通过下列对象来获取前台传来的参数:

  ①HttpServletRequest对象:通过request对象可以获取参数信息

  ②HttpservletResponse对象:通过response对象可以处理响应信息

  ③HTTPSession对象:获取session中存储的对象

  ④Model/ModelMap:Model是一个接口,ModelMap是一个接口的实现。作用是将模型数据填充到request域

    模型对象(ModelMap)的特定属性具有Session范围的作用域。  我们在②处添加了一个ModelMap属性,其属性名为currUser,

而①处通过@SessionAttributes注解将ModelMap中名为currUser的属性放置到Session中,所以我们不但可以在login()请求所对应的JSP视图

页面中通过request.getAttribute("currUser")和session.getAttribute("currUser")获取user对象,还可以在下一个请求所对应的JSP视图页面中

通过session.getAttribute("currUser")或者ModelMap.get("currUser")访问到这个属性。

@Controller
@RequestMapping("/user")
@SessionAttributes("currUser") //①将模型对象(ModelMap)中currUser属性放到Session属性列表中,以便这个属性可以跨请求访问
public class UserLoginController{
@RequestMapping(value="/login")
public String login(@RequestParam("id") int id, User user, ModelMap model){
// ②往ModelMap中存放currUser属性,该属性将被转存到Session属性列表中
model.addAttribute("currUser", user);
return "success";
}
}

  ⑤使用IO对象作为入参 ,如 java.io.InputStream/java.io.Reader 及java.io.OutputStream/java.io.Writer

  ⑥使用其他类型的参数,java.util.Locale/java.security.Principal ,也可以通过Servlet的HttpServletRequest的getLocale()及getUserPrincipal()

  ⑦使用表单对象绑定请求参数值

    非常简单,只需将对象的属性名和input的name值一一匹配即可。

    User对象中有ContactInfo属性,在表单代码中,需要使用“属性名(对象类型的属性).属性名”来命名input的name。

    除此之外,对于基本数据类型和包装数据类型,表单中input的name值和Controller的参数变量名保持一致,就能完成数据绑定,如果不一致可以使用@RequestParam注解。

    需要注意的是,如果Controller方法参数中定义的是基本数据类型,但是从页面提交过来的数据为null或者”"的话,会出现数据转换的异常。

    也就是必须保证表单传递过来的数据不能为null或”",所以,在开发过程中,对可能为空的数据,最好将参数数据类型定义成包装类型。

@RequestMapping("saysth.do")
public void test(User user) {
System.out.println(user.getFirstName());
System.out.println(user.getLastName());
System.out.println(user.getContactInfo().getTel());
System.out.println(user.getContactInfo().getAddress());
}
<form action="saysth.do" method="post">
<input name="firstName" value="张" /><br>
<input name="lastName" value="三" /><br>
<input name="contactInfo.tel" value="13809908909" /><br>
<input name="contactInfo.address" value="北京海淀" /><br>
<input type="submit" value="Save" />
</form>

2.注解方式

 ①@RequestParam直接标注在方法的变量名上

   参数有以下三个:

      • value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;
      • required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;
      • defaultValue:默认值,表示如果请求中没有同名参数时的默认值,默认值可以是SpEL表达式,如“#{systemProperties['java.vm.version']}”。

 ②使用@CookieValue绑定请求中的Cookie值
  @CookieValue的参数和@RequestParam一样

 ③使用@RequestHeader绑定请求报文头的属性值

@RequestMapping(value="/method3")
public String method3(
@RequestHeader("Accept-Encoding") String encoding,
@RequestHeader("Keep-Alive") long keepAlive){
return "methodSignature";
}

  ④使用@PathVariabl获取路径中传递参数

@RequestMapping(value="/users/{userId}/topics/{topicId}")
public ModelAndView helloWorld(
@PathVariable String userId,
@PathVariable Long topicId) {
System.out.println(id);
System.out.println(str);
return new ModelAndView( " /helloWorld " );
}

  如请求的URL为“控制器URL/users/123/topics/456”,则自动将URL中模板变量{userId}和{topicId}绑定到通 过@PathVariable注解的同名参数上,即入参后userId=123、    topicId=456。代码在 PathVariableTypeController中。

SpringMVC的控制器接收前端数据的方式的更多相关文章

  1. SpringMVC 02: SpringMVC响应get和post请求 + 5种获取前端数据的方式

    响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC ...

  2. SpringMVC中控制器接收JSP页面表单的参数接收方式详解及细节注意(400错误)

    控制器方法中参数的接收 (1)以前的参数接收: String  param = req.getParameter(name): (2)SpringMVC简化这个操作,只需要给控制器方法添加参数即可 a ...

  3. spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法

    Spring 中配置扫描器 <!-- springmvc的扫描器--> <context:component-scan base-package="com.beifeng. ...

  4. SpringMVC 参数传递和接收的几种方式

    普通传参 测试项目:SpringBoot2.0.不使用 form 表单传参,后端不需要指定 consumes . 使用 Postman 进行测试. @PathVariable 只能接收 URL 路径里 ...

  5. Spring MVC 接收前端参数的方式

    方式一: 普通方式接收 1 @RequestMapping("/index") 2 public String getUserName(String username) { 3 S ...

  6. SpringMVC中@RequestBody接收前端传来的多个参数

    在使用ajax发送请求时,如果发送的JSON数据是一个类中的不同属性,在Controller方法中使用@RequestBody会直接封装进该类中 例如: 前端部分代码 JavaScript <s ...

  7. 在SpringMVC获取客户端传递的数据的方式

    在处理请求的方法中,加入相对应的形参,保证形参参数名和传递的数据的参数名保持一致,就能够自动赋值 value:当不满足赋值条件时,可以使用value属性,指定映射关系 required:设置形参是否必 ...

  8. Struts2初学 Struts2的action接收用户数据方式

    一.简介    开发Web应用程序,首先应会遇到对用户输入数据的接收,传统的Web应用程序是由开发人员调用HttpServletRequest的getparameter(String name)方法从 ...

  9. springmvc接收json数据的常见方式

    经常使用Ajax异步请求来进行数据传输,传的数据是json数据,json数据又有对象,数组.所有总结下springmvc获取前端传来的json数据方式:1.以RequestParam接收前端传来的是j ...

随机推荐

  1. NHibernate的几种查询方式

    SQL:普通SQL查询(也就是SQLServer,Oracle,Sybase等数据库的查询语句,建议使用基于TSQL-92) 核心对象:CreateSQLQuery IList list = sess ...

  2. WebSocket 在烧瓶和龙卷风中的应用

    a. 安装 pip3 install gevent-websocket 作用: - 处理Http.Websocket协议的请求 -> socket - 封装Http.Websocket相关数据 ...

  3. HTML中的颜色简写

    1.HTML中颜色的五种写法 1)直接用颜色英文名字表示 例如表示背景颜色为白色: 2.通过16进制数表示 例如表示背景颜色为黑色 3).通过RGB方式表示 RGB:是红色(red)绿色(green) ...

  4. QGrapicsView类

    QGraphicsView提供一个显示QGraphicsScene内容的窗口,该窗口可以滚动,可以在构造时候把场景对象作为参数,或者之后使用setScene()来设置view的场景,然后调用了show ...

  5. Android 自定义组件之如何实现自定义组件

    参考链接:http://blog.csdn.net/jjwwmlp456/article/details/41076699 简介 Android提供了用于构建UI的强大的组件模型.两个基类:View和 ...

  6. JavaScript 中 this:

    在绑定事件时,this指定的是被绑定的那个html元素,比如: 结果: press里的this指的就是canvas.

  7. mysql数据库( 基础篇加破解)

    1.数据库(Database,DB)是按照数据结构来组织.存储和管理数据的,并且是建立在计算机存储设备上的仓库 2.什么是数据库:(用来存储数据的仓库) 数据库:(cs架构套接字) 数据库管理软件分类 ...

  8. 伪元素:target

    :target 伪类选择器 :target 是 CSS3 新增的一个伪类,可用于选取当前活动的目标元素.当 URL 末尾带有锚名称 #,就可以指向文档内某个具体的元素.这个被链接的元素就是目标元素(t ...

  9. HihoCoder 1053 居民迁移

    居民迁移 时间限制:3000ms 单点时限:1000ms 内存限制:256MB 描述 公元2411年,人类开始在地球以外的行星建立居住点.在第1326号殖民星上,N个居住点分布在一条直线上.为了方便描 ...

  10. SVN客户端与服务器端搭建操作

    一.客户端的安装 1.点击安装程序 2.修改svn安装位置 3.开始安装 4.客户端安装成功 5.回到左面  右键出现svn检出 tortoiSVN  表示安装成功 Myeclipse svn插件安装 ...