【SpringMVC]获取参数的六种方式

目录

1.通过ServletAPI获取

2.通过控制器方法的形参获取

3.@RequestParam:将请求参数和控制器方法的形参绑定

4.@RequestHeader:将请求头信息与控制器方法的形参的值进行绑定

[5. CookieValue:将cookie数据和控制器方法的形参绑定](#5. CookieValue:将cookie数据和控制器方法的形参绑定)

Cookie:

​编辑

6.通过控制器方法的实体类类型的形参获取请求参数

对应的index.html页面:


SpringMVC的处理流程:(用户请求-》Controller-》Model-》Controller-》View-》响应给用户)

用户通过视图层(View)发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器。

1.通过ServletAPI获取

只需要在控制器的方法的形参位置设置HTTPRequest request类型的形参就i可以在控制器方法种使用request对象获取请求参数

java 复制代码
 @RequestMapping("/param/servletAPI")
    public String getParamServletAPI(HttpServletRequest request){
        HttpSession session = request.getSession();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username = " + username + "," + "password = " +  password);
        return "success";
    }

2.通过控制器方法的形参获取

只需要在控制器方法的形参位置设置一个形参,形参的名字和请求参数的名字保持一致即可

java 复制代码
 @RequestMapping("/param")
    public String getParam(String username, String password){
        System.out.println("username = " + username + "," + "password = " +  password);
        return "success";
    }

3.@RequestParam:将请求参数和控制器方法的形参绑定

@RequestParam注解的三个属性:value,require,defaultValue

value:设置和形参绑定的请求参数的名字

required:设置是否必须传输value所对应得求情参数默认值为true,表示value所对应得请求参数必须传输,否则页面报错 ,或设置为false,则表示value所对应得请求参数不是必须传输,若为传输,则形参值为null

defaultValue:设置当没有传输value所对应得请求参数时,为形参设置得默认值,此时和required属性无关

java 复制代码
  @RequestMapping("/param")
    public String getParam(@RequestParam(value = "userName",required = true,defaultValue = "hello")String username, String password,){
        System.out.println("username = " + username + "," + "password = " +  password);
      
        return "success";
    }

4.@RequestHeader:将请求头信息与控制器方法的形参的值进行绑定

java 复制代码
@RequestMapping("/param")
    public String getParam(String username, String password,
                           @RequestHeader("referer") String referer){
        System.out.println("username = " + username + "," + "password = " +  password);
        System.out.println("referer = " + referer);
   
        return "success";
    }

5. CookieValue:将cookie数据和控制器方法的形参绑定

java 复制代码
@RequestMapping("/param")
    public String getParam(String username, String password,
                           @CookieValue("JSESSIONID") String jsessionId){
        System.out.println("username = " + username + "," + "password = " +  password);
      
        System.out.println("jsessionId = " + jsessionId);
        return "success";
    }

Cookie:

6.通过控制器方法的实体类类型的形参获取请求参数

注意:需要在控制器方法的形参位置设置实体类类型的形参,要保证实体类的属性的属性名和请求参数的名字保持一致,可以通过实体类类型的形参获取请求参数

java 复制代码
 @RequestMapping("/param/pojo")
    public String getParamByPojo(User user){
        System.out.println(user);
        return "success";
    }

对应的index.html页面:

html 复制代码
<h3>前五种方式实现:</h3>
<form th:action="@{/param}" method="get">
    用户名:<input type="text" name="username"><br>
    密码:  <input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>

<h3>pojo实现:</h3>
<form th:action="@{/param/pojo}" method="get">
    用户名:<input type="text" name="username"><br>
    密码:  <input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
跳转页面:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>成功</title>
</head>
<body>
<h1>success.html</h1>
</body>
</html>

相关推荐
Danny_FD10 分钟前
Vue + Element UI 实现模糊搜索自动补全
前端·javascript
空影学Java15 分钟前
Day44 Java数组08 冒泡排序
java
gnip15 分钟前
闭包实现一个简单Vue3的状态管理
前端·javascript
斐济岛上有一只斐济21 分钟前
后端程序员的CSS复习
前端
Enddme24 分钟前
《面试必问!JavaScript 中this 全方位避坑指南 (含高频题解析)》
前端·javascript·面试
有梦想的程序员25 分钟前
微信小程序使用 Tailwind CSS version 3
前端
程序员编程指南41 分钟前
Qt 与 WebService 交互开发
c语言·开发语言·c++·qt·交互
追风少年浪子彦44 分钟前
mybatis-plus实体类主键生成策略
java·数据库·spring·mybatis·mybatis-plus
赵英英俊1 小时前
Python day26
开发语言·python
你怎么知道我是队长1 小时前
python---eval函数
开发语言·javascript·python