Spring Boot学习(四)Controller接收请求参数

Spring Boot学习(四)Controller接收请求参数

一、通过实体Bean接收请求参数

通过实体Bean来接收请求参数,适用于get和post方式,Bean的属性名称必须与请求参数名称相同。

项目结构如下:

1.Bean代码如下:

package com.example.beans; public class Student { private int id; private String name; private String pwd; //省略get和set }

2.表单页面如下 mytest.html

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Controller接收请求参数</title> </head> <body> <form action="/test/test1" method="post"> 姓名:<input type="text" name="name"> <br/><br/> 密码:<input type="password" name="passwd"> <br/><br/> <input type="submit" value="确定"/> </form> </body> </html>

3.控制器代码如下:

@Controller public class MyTest { @RequestMapping(value = "/test/login") public String test1(){ return "/test/mytest"; } @RequestMapping(value = "/test/test1",method=RequestMethod.POST) public String login(Student stu, Model model){ model.addAttribute("stu",stu); return "/test/result"; } }

4.显示结果页面result.html

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>所有学生信息</title> </head> <body> <h4 th:text="${stu.getName()}"></h4> </body> </html>

二、通过方法的参数接收

通过处理方法的形参接收请求参数,也就是直接把表单参数写在控制器类相应方法的形参中,即形参名称与请求参数名称完全相同。该接收参数方式适用于get和post提交请求方式。

@RequestMapping(value="/test/test2",method = RequestMethod.POST) public String login(String name, String password, Model model){ model.addAttribute("name",name); return "/test/result"; }

三、通过HttpServletRequest接收请求参数

通过HttpServletRequest接收请求参数,适用于get和post提交请求方式

@RequestMapping(value="/test/test3",method=RequestMethod.POST) public String login(HttpServletRequest req,Model model){ String name=req.getParameter("name"); model.addAttribute("name",name); return "/test/result"; }

四、通过@PathVariable接收URL中的请求参数

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。

http://localhost:8080/test/test4/张三丰 @RequestMapping(value = "/test/test4/{name}",method = RequestMethod.GET) @ResponseBody public String test4(@PathVariable String name){ return name; }

五、通过@RequestParam接收请求参数

@RequestMapping("/test/test5") @ResponseBody public String test5(@RequestParam String name,@RequestParam String passwd){ return name; }

通过@RequestParam接收请求参数与通过处理方法的形参接收请求参数的区别是:当请求参数名与接收参数名不一致时,通过处理方法的形参接收请求参数不会报404错误,而通过@RequestParam接收请求参数会报404错误。

六、通过@ModelAttribute接收请求参数

@RequestMapping("/test/test6") public String test6(@ModelAttribute("stu") Student stu){ return "/test/result"; }

@ModelAttribute注解放在处理方法的形参上时,用于将多个请求参数封装到一个实体对象,从而简化数据绑定流程,而且自动暴露为模型数据,于视图页面展示时使用。而“通过Bean接收请求参数”只是将多个请求参数封装到一个实体对象,并不能暴露为模型数据(需要使用model.addAttribute语句才能暴露为模型数据)。

视图层代码如下:

<h4 th:text="${stu.getName()}"></h4>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

PHP 微信公众号消息加解密

公众号配置根据提示设置即可:【图中信息均为无意义数据,仅供参考。注意服务器地址需可接收GET/POST两种请求】AESKey直接点一下随机生成即可,Token可以生成一个UUID再把UUID进行MD5一次即可。接收关注事件消息示例请求参数校验这一步根据项目情况,可供参考:(Lumen框架)php$valida

Spring Boot 406(type=Not Acceptable, status=406)异常解决办法

使用SpringBoot,Controller请求返回的参数类型是ResponseBody,如果请求的时候使用使用配置的默认请求扩展名,例如.html,SpringMVC会抛出一个typeNotAcceptable,status406错误,如下:WhitelabelErrorPageThisapplica