SpringMVC学习总结(三)SpringMVC获取请求参数的几种方法/解决获取请求参数的乱码问题/CharacterEncodingFilter过滤器

本文详细介绍了SpringMVC中获取请求参数的多种方式,包括ServletAPI、控制器形参、@RequestParam、@RequestHeader、@CookieValue以及通过POJO。同时,文章还深入探讨了解决HTTP请求GET和POST方式乱码问题的方法,涉及到CharacterEncodingFilter过滤器的使用。
摘要由CSDN通过智能技术生成

一、通过ServletAPI获取请求参数

  • 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象(会将DispatcherServlet中所获得的表示当前请求的Request对象赋值给这个参数)。

案例
还是用我上篇博客的web模块为例
index.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"><!--这个是thymeleaf命名空间-->
<head>
	<meta charset="UTF-8">
	<title>首页</title>
</head>
<body>
这是index.html<br>
<a th:href="@{/testRM(username='mike',password=123456)}">跳转到target.html</a><br>
</body>
</html>

controller:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;

@Controller
public class MyController {
   

    @RequestMapping(value = "/testRM")
    public String testRequestMapping(HttpServletRequest request){
   
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username:"+username+",password:"+password);
        return "target";
    }
}

运行Tomcat:
在这里插入图片描述
在这里插入图片描述
IDEA输出:
在这里插入图片描述

二、通过控制器方法的形参获取请求参数

  • 在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参。
  • 若请求所传输的请求参数中有多个同名的请求参数(如复选框),此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数。
    • 若使用字符串数组类型的形参,此参数的数组中包含了每一个数据。
    • 若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果。

案例1
index.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"><!--这个是thymeleaf命名空间-->
<head>
	<meta charset="UTF-8">
	<title>首页</title>
</head>
<body>
这是index.html<br>
<a th:href="@{/testRM(username='mike',password=123456)}">跳转到target.html</a><br>
</body>
</html>

controller:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
   

    @RequestMapping(value = "/testRM")
    public String testRequestMapping(String username,String password){
   
        System.out.println("username:"+username+",password:"+password);
        return "target";
    }
}

在这里插入图片描述
在这里插入图片描述
IDEA输出:
在这里插入图片描述
案例2
有复选框的表单
index.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org"><!--这个是thymeleaf命名空间-->
<head>
	<meta charset="UTF-8">
	<title>首页</title>
</head>
<body>
这是index.html<br>
<form th:action="@{/testRM}" method="get">
	用户名:<input type="text" name="username"><br>
	密码:<input 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值