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

Stella981
• 阅读 1214

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

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

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

项目结构如下:

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

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>
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
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
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
MaxSky MaxSky
3年前
PHP 微信公众号消息加解密
公众号配置根据提示设置即可:【图中信息均为无意义数据,仅供参考。注意服务器地址需可接收GET/POST两种请求】AESKey直接点一下随机生成即可,Token可以生成一个UUID再把UUID进行MD5一次即可。接收关注事件消息示例请求参数校验这一步根据项目情况,可供参考:(Lumen框架)php$valida
Stella981 Stella981
3年前
Spring Boot 406(type=Not Acceptable, status=406)异常解决办法
使用SpringBoot,Controller请求返回的参数类型是ResponseBody,如果请求的时候使用使用配置的默认请求扩展名,例如.html,SpringMVC会抛出一个typeNotAcceptable,status406错误,如下:WhitelabelErrorPageThisapplica
Easter79 Easter79
3年前
SpringMVC 页面传递参数到controller的五种方式
一共是五种传参方式:一:直接将请求参数名作为Controller中方法的形参public Stringlogin(Stringusername,Stringpassword) :解释:括号中的参数必须与页面Form表单中的name名字相同二:使用@RequestParam绑定请求参数参数值举例:publicStri
Easter79 Easter79
3年前
SpringMvc接受特殊符号参数被转义
WEB开发时,在前端通过get/post方法传递参数的时候 如果实参附带特殊符号,后端接收到的值中特殊符号就会被转义例如该请求: http://localhost:10001/demo/index.do?name张三(1)注:中文()不会出现此种情况后台就收到的实际name值为:  张三&40;1&41;&40;其实为h
Stella981 Stella981
3年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
Easter79 Easter79
3年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
飞鹅官方账号 飞鹅官方账号
3个月前
五、飞鹅官网API接口文档
接口列表1.获取网站信息请求方法:GET请求URL:/api/site/getSiteInfo请求参数无返回结果json"code":1,"data":"id":1,//id"title":"SampleSiteName",//网站名称"intro":"T